Toggle navigation
Golibrary Code Playground - Everyone for education
Run
(current)
Fork
Settings
Share
0
272
Anonymous
HTML/CSS/Javascript
Python
Ruby
Clojure
PHP
Javascript (NodeJS)
Scala
Go
C/C++
Java
VB.Net
C#
Bash
Objective C
MySQL
Perl
Rust
HTML/CSS/Javascript
Search
Login
Login
Reset Password ?!
Login
Register
×
RESET PASSWORD
@
×
Allowed Extensions
Only this extensions are allowed: jpg,png,gif,jpeg
×
Error Message
×
Share this code
Url of this code
Send SMS with url of this code
Save As Github Gist
×
Github Gist
×
SETTINGS
HTML
CSS
Javascript
Title
Description
Meta Tags
Add meta tag example
Known ressources
--
Foundation
Bootstrap
CSS Preprocessor
CSS
LESS
SCSS
External CSS
Add another ressource
Known ressources
--
JQuery UI
Modernizr
Tree.js
JQuery
External JS
Add another ressource
CSS
→
/* CSS */ background: #f9f9f9; height: 100%;
Full Screen
Javascript
→
// Javascript // below call starts the program with the test data mentioned in the problem statement run(4, {x:2, y:1}, [{x:0,y:1}, {x:1,y:2}, {x:3,y:1}], 'DLUURR'); /* You can call the above run function in loop, read different test data from file and pass them to test the code for different test cases */ function run(N, initialPosition, poorCreaturePositions, route) { const newZombies = [], output = []; const poorCreaturePositionMap = {}; for (let i = 0; i < poorCreaturePositions.length; i++) { if (typeof (poorCreaturePositionMap[poorCreaturePositions[i].x+'|'+poorCreaturePositions[i].y]) === 'undefined') { poorCreaturePositionMap[poorCreaturePositions[i].x+'|'+poorCreaturePositions[i].y] = poorCreaturePositions[i]; } } const score = moveZombies(N, initialPosition, poorCreaturePositionMap, route, 0, newZombies, output); console.log("zombies’ score:", score); console.log("zombies’ positions:\n", output); } function moveZombies(N, initialPosition, poorCreaturePositionMap, route, zombieScore, newZombiePosition, output) { let currentPosition = initialPosition; for (let j = 0; j < route.length; j++) { switch(route[j]) { case 'U': if (currentPosition.y === 0) { currentPosition.y = N - 1; } else currentPosition.y = (currentPosition.y - 1) % N; break; case 'D': if (currentPosition.y === N - 1) { currentPosition.y = 0; } else currentPosition.y++; break; case 'L': if (currentPosition.x === 0) { currentPosition.x = N - 1; } else { currentPosition.x--; } break; case 'R': if (currentPosition.x === N-1) { currentPosition.x = 0; } else { currentPosition.x++; } break; } if (poorCreaturePositionMap[currentPosition.x+'|'+currentPosition.y]) { const position = poorCreaturePositionMap[currentPosition.x+'|'+currentPosition.y]; newZombiePosition.push(position); delete poorCreaturePositionMap[currentPosition.x+'|'+currentPosition.y]; zombieScore++; } } // push final position of current moving zombie in output array output.push(currentPosition); for (let x = 0; x < newZombiePosition.length; x++) { const newPosition = newZombiePosition[x]; newZombiePosition.splice(x, 1); zombieScore = moveZombies(N, newPosition, poorCreaturePositionMap, route, zombieScore, newZombiePosition, output); // base condition which will terminate the recursion if (newZombiePosition.length === 0) { // return final score return zombieScore; } } // return zombie score so that previous recursive calls get the value return zombieScore; }
HTML
→
<!-- HTML --> <b>Zombie apocalypse</b>