プログラマー|キーボードJS


難易度:Level.1
言語:Javascript
出題履歴:2020ココア実習

❓ Question


スマートフォンのキーボードを押すには、条件番号が必要です.
両手を使用する場合は、キーボードをどの指で押したかを確認する必要があります.

📝 My Solution


フルプールコード 👈🏻 クリックしてGithubに移動

function solution(numbers, hand) {
    var answer = "";
    const numL = [1,4,7,'*'];
    const numR = [3,6,9,'#'];
    const numC = [2,5,8,0];
    let posL = [0,3];
    let posR = [0,3];
    let posC = [1,-1];
まず指で押せる番号と真ん中の番号を押します
また、現在の指の位置を表示する配列を作成することもできます.
      for (let i = 0; i<numbers.length; i++) {
            if (numL.indexOf(numbers[i]) >= 0) {
                answer += "L";
                posL = [0, numL.indexOf(numbers[i])];
            } else if (numR.indexOf(numbers[i]) >= 0) {
                answer += "R";
                posR = [0, numR.indexOf(numbers[i])];
            } 
まず、指2本で押すことができる番号があれば
ある手で押さえてマークすると、
指の位置を座標にします.
else {
       posC = [1, numC.indexOf(numbers[i])];
       let routeL = Math.abs(posC[0]-posL[0]) + Math.abs(posC[1]-posL[1]);
       let routeR = Math.abs(posC[0]-posR[0]) + Math.abs(posC[1]-posR[1]);
       if (routeL === routeR) {
           if (hand === 'right') {
               answer += 'R';
               posR = [1, numC.indexOf(numbers[i])];
           } else {
               answer += 'L';
               posL = [1, numC.indexOf(numbers[i])];
           }
       }
もしあなたが濾過したら、指の番号を押すしかありません.
今度は真ん中の番号をフィルタします
現在クリックすべき番号の座標を指定します.
現在の指の位置から番号までの移動量を算出します.
同じ数字であれば、どのハンドルなのか判断し、対応する手で押してください.
else {
   if (routeL < routeR) {
       answer += 'L';
       posL = [1, numC.indexOf(numbers[i])];
   } else {
       answer += 'R';
       posR = [1, numC.indexOf(numbers[i])];
   }
  }
 }
}
    return answer
}
2つの値が違うと、数字が小さい方が近い方なので.
手で押して問題を解決させてくれました

結果



時間がかかりましたが….でも成功した...!