Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(args) {
- const arr = args[0].split(' ').map(Number);
- const rows = arr[0];
- const cols = arr[1];
- const field = new Array(rows);
- field.fill(0);
- for(let i = 0; i < field.length; i += 1) {
- field[i] = args[i + 1].split(' ').map(Number);
- }
- let startRow = rows/2 | 0;
- let startCol = cols/2 | 0;
- let canMove = true;
- let currentPosition = field[startRow][startCol];
- const mask = 1;
- const directions = ['u', 'r', 'd', 'l'];
- while(canMove){
- let binaryPosition = currentPosition.toString(2);
- for(let i = 0; i < binaryPosition.length; i += 1){
- if(((currentPosition & (mask << i)) >> i === 1)){
- let deltaRow = 0, deltaCol = 0;
- let dir = directions[i];
- if(dir === 'u') {
- deltaRow = -1;
- }
- else if(dir === 'd') {
- deltaRow = +1;
- }
- else if(dir === 'l') {
- deltaCol = -1;
- }
- else if(dir === 'r') {
- deltaCol = +1;
- }
- //console.log('moving' + dir);
- //console.log('length:' + binaryPosition.length);
- let newPosRow = startRow + deltaRow;
- let newPosCol = startCol + deltaCol;
- if(newPosRow < 0 || newPosRow > rows - 1) {
- console.log('No rakiya, only JavaScript' + ' ' + startRow + ' ' + startCol);
- return;
- }
- else if(newPosCol < 0 || newPosCol > cols - 1) {
- console.log('No rakiya, only JavaScript' + ' ' + startRow + ' ' + startCol);
- return;
- }
- else if(field[newPosRow][newPosCol] === 0){
- if(i === binaryPosition.length - 1){
- canMove = false;
- }
- continue;
- }
- else{
- field[startRow][startCol] = 0;
- startRow = newPosRow;
- startCol = newPosCol;
- currentPosition = field[startRow][startCol];
- //console.log('current position is: ' + field[startRow][startCol]);
- break;
- }
- }
- }
- if(!canMove){
- console.log('No JavaScript, only rakiya' + ' ' + startRow + ' ' + startCol);
- return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement