JSFiddle - React, Tailwind, and code Playground
by samur3
JavaScript
let keyboardInput = "q,w,e,r,t,a,s,d,f,g";
const wide = 5;
let type = "q,r,f";!
function printPath(keyboardInput,wide,type){
if(keyboardInput.length === 0 || type.length === 0) {
return "";
}
let reuslt = "";
type = type.split(',');
let keyboardArr= InitKyboardArr(keyboardInput,wide);
let arrCharToCordinations = BuildArrCharToCordinations(keyboardArr,type);
result = BuildPathByScanMap(arrCharToCordinations);
return result;
}
function BuildPathByScanMap(arrCharToCordinations){
let result = "";
let len = arrCharToCordinations.length;
for(let i =0; i < len; i++){
let cord = arrCharToCordinations[i];
if(cord.startX === cord.endX && cord.startY === cord.endY) {
result += '!';
}
else{
while(cord.startX !== cord.endX || cord.startY !== cord.endY){
if(cord.startX < cord.endX){
result += GetDirections('x+');
cord.startX++;
}
else if(cord.startX > cord.endX){
result += GetDirections('x-');
cord.startX--;
}
if(cord.startY < cord.endY){
result += GetDirections('y+');
cord.startY++;
}
else if(cord.startY > cord.endY){
result += GetDirections('y-');
cord.startY--;
}
}
result += '!';
}
}
return result;
}
function GetDirections(move){
switch(move){
case 'x+':
return 'R';
case 'x-':
return 'L';
case 'y+':
return 'D';
case 'y-':
return 'U';
}
}
function InitKyboardArr(keyboardInput,wide){
keyboardInput = keyboardInput.split(',');
if(wide === 0) return keyboardInput;
let charsArr = [];
let length = Math.ceil(keyboardInput.length / wide);
let index = 0;
for(let i=0; i < length; i++){
let sliceInput = keyboardInput.slice(index,wide);
wide = wide + 5;
index = i + 5
charsArr.push(sliceInput);
}
return charsArr;
}
function BuildArrCharToCordinations(keyboarArr,type){
let arr = [];
let...