var players = []; var allowedJumps = Number(input[0]); var fieldSize = Number(input[1]); var winnerFound = false; var winner = ''; input.forEach(function (x) { if (isNaN(x)) { var player = {}; var tokens = x.split(', '); player['name'] = tokens[0]; player['jump'] = Number(tokens[1]); player['position'] = 0; players.push(player); } }); while (allowedJumps > 0) { players.forEach(function (player) { if (!winnerFound) { player['position'] += player['jump']; if (player['position'] >= fieldSize - 1) { winner = player['name']; winnerFound = true; } } }); allowedJumps--; } if (!winnerFound) { var further = -1; players.forEach(function (x) { if (x['position'] >= further) { further = x['position']; winner = x['name']; } }); } var field = ''; var audiance = new Array(fieldSize + 1).join('#') + '\n' + new Array(fieldSize + 1).join('#') + '\n'; players.forEach(function(player) { field += getLines(player) + '\n'; }); function getLines(player) { var line = new Array(fieldSize + 1).join('.'); if(player['position'] >= fieldSize) { line = new Array(fieldSize).join('.') + player['name'][0].toUpperCase(); } else { line = line.substr(0, player['position']) + player['name'][0].toUpperCase() + line.substr(player['position'] + 1); } return line; } var output = audiance + field + audiance + 'Winner: ' + winner; console.log(output);