每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。
3 LRR
E
(function main(){ var str = readline(); var count = 0; var len = str.length; for(var i =0; i<len; i++){ if(count==0&&str[i]=='L'){ count = 3; }else if(count ==3&&str[i]=="R"){ count = 0; }else if(str[i]=="L"){ count --; }else if(str[i]=="R"){ count ++; } } var res ; switch(count){ case 0: res ="N"; break; case 1: res ="E"; break; case 2: res ="S"; break; case 3: res ="W"; break; } print(res); })();
简单粗暴版本...
const directionCache = { 'N': { 'L': 'W', 'R': 'E' }, 'E': { 'L': 'N', 'R': 'S' }, 'S': { 'L': 'E', 'R': 'W' }, 'W': { 'L': 'S', 'R': 'N' } }; while(line=readline()) { let currentDirection = 'N'; if(line == 0) { console.log(currentDirection); continue; }; /* 北 西 东 南 */ const directionArr = readline().split(''); directionArr.forEach(c => { currentDirection = directionCache[currentDirection][c]; }); console.log(currentDirection); }
#include<stdio.h>intmain(){intdirection[4][2]; //北0南1西2东3direction[0][0] = 2; //北边左转是 西direction[0][1] = 3; //北边右转是 东direction[1][0] = 3; //南边direction[1][1] = 2;direction[2][0] = 1; //西边direction[2][1] = 0;direction[3][0] = 0; //东边direction[3][1] = 1;intn, k = 0;scanf("%d", &n);char* turn = newchar[n];getchar();scanf("%s", turn);getchar();for(inti=0; i<n; ++i){switch(turn[i]){case'L': k = direction[k][0]; break;case'R': k = direction[k][1]; break;default: printf("%s\n", "输入了非法字符!"); return0;}}switch(k){case0: printf("%c\n", 'N'); break;case1: printf("%c\n", 'S'); break;case2: printf("%c\n", 'W'); break;case3: printf("%c\n", 'E'); break;}}
#include<iostream>using namespace std;int main(){int N;while(cin>>N){int dir = 0;for(int i=0;i<N;i++){char temp;cin>>temp;if(temp=='L'){dir = (dir+1)%4;}else{dir = (dir+3)%4;}}if(dir==0){cout<<"N";}else if(dir==1){cout<<"W";}else if(dir==2){cout<<"S";}else{cout<<"E";}}return 0;}
var num = parseInt(readline()); var str = readline(); function List(x) { this.val = x; this.left = null; this.right = null; } var nodeN = new List("N"); var nodeS = new List("S"); var nodeE = new List("E"); var nodeW = new List("W"); nodeN.left = nodeW; nodeN.right = nodeE; nodeS.left = nodeE; nodeS.right = nodeW; nodeE.left = nodeN; nodeE.right = nodeS; nodeW.left = nodeS; nodeW.right = nodeN; function getDirection(num, str) { if(num !== str.length) { return ""; } var node = nodeN; for(var i = 0; i < num; i++) { if(str[i] === "L") { node = node.left; } else if(str[i] === "R" ) { node = node.right; } } return node.val; } console.log(getDirection(num, str));
(function where(){
var arr = ["N","E","S","W"];
var n = readline();
var str = readline();
var count = 0;
var len = str.length;
for(var i =0; i<len; i++){
//str总共只有两种L和R
if(count===0&&str[i]==='L'){ //这里定义R也一样
count = 3;
}else if(count ===3&&str[i]==="R"){ //处理边界值,不能超过3
count = 0;
}else if(str[i]==="L"){
count --;
}else if(str[i]==="R"){
count ++;
}
}
var res = arr[count];
print(res);
})()
var line = readline(); var a = readline(); function checkposition(str){ var position = 'N'; var road = str.split(""); for(let i=0;i<road.length;i++){ switch(position){ case 'N': if(road[i]==='L'){ position = 'W'; break; } else{ position = 'E'; break; } case 'W': if(road[i]==='L'){ position = 'S'; break; } else{ position = 'N'; break; } case 'S': if(road[i]==='L'){ position = 'E'; break; } else{ position = 'W'; break; } case 'E': if(road[i]==='L'){ position = 'N'; break; } else{ position = 'S'; break; } } } return position; } console.log(checkposition(a));些许暴力,勉强能解
#include <bits/stdc++.h> using namespace std; int main(){ int num; string s; int res = 0; char dir[4]={'N','E','S','W'}; cin>>num>>s; auto i = s.begin(); while(i!=s.end()){ if(*i=='L') res--; if(*i=='R') res++; i++; } res = res%4; res>=0?cout<<dir[res]:cout<<dir[4+res]; return 0; }
var n = parseInt(readline()); var s = readline(); var drur = ['N', 'E', 'S', 'W']; var drul = ['N', 'W', 'S', 'E']; var lcount = 0; var rcount = 0; for(var i = 0; i < n; i++){ if(s[i] == 'L') lcount++; else rcount++; } var res = Math.abs(lcount - rcount) % 4; lcount > rcount ? print(drul[res]) : print(drur[res]);
(function(){ var line = parseInt(readline()); var direction = readline(); var left = 0; var right = 0; for(var i=0;i<=direction.length;i++){ switch(direction.charAt(i)){ case 'L':left++;break; case 'R':right++;break; } } if(left%4!=0){ left = left%4; }else{ left = 0; } if(right%4!=0){ right = right%4; }else{ right = 0; } var res; if(left>right){ var step = left-right; switch(step){ case 0: res ="N"; break; case 1: res ="W"; break; case 2: res ="S"; break; case 3: res ="E"; break; } } if(left<=right){ var step = right-left; switch(step){ case 0: res ="N"; break; case 1: res ="E"; break; case 2: res ="S"; break; case 3: res ="W"; break; } } print(res); })()
//将左右转化为数字,左为-1.右为1for(var i=0;i<len;i++){
process.stdin.resume();process.stdin.setEncoding('ascii');varinput = "";varinput_array = "";process.stdin.on('data', function(data) {input += data;});process.stdin.on('end', function() {input_array = input.split("\n");varl = parseInt(input_array[0]);varr = input_array[1];functionewns(l,r){if(r == undefined) returnr;vararr = r.split('');varF = "N";for(vari=0;i<l;i++){switch(F){case'N':if('L'==arr[i]){F = 'W'}elseif('R'==arr[i]){F = 'E'}continue;case'S':if('L'==arr[i]){F = 'E'}elseif("R"==arr[i]){F = 'W'}continue;case'E': if("L"==arr[i]){F = 'N'}elseif("R"==arr[i]){F = 'S'}continue;case'W':if('L'==arr[i]){F = 'S'}elseif('R'==arr[i]){F = 'N'}continue;}}returnF;}console.log(ewns(l,r))});
var num = readline(); var str = readline(); var count = 0; var len = str.length; for(var i=0;i<len;i++){ if(count ==3&&str[i]=='L'){ count = 0; }else if(count ==0&&str[i]=='R'){ count =3; } else if(str[i]=='L'){ count++; }else if(str[i]=='R'){ count--; } } function right(dir){ if(dir == 0){ return 'N' }else if(dir == 1){ return 'W' }else if(dir ==2){ return 'S' }else if(dir == 3){ return 'E' } } var res = right(count); console.log(res);