Advertisement
Guest User

Untitled

a guest
Feb 5th, 2017
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.48 KB | None | 0 0
  1. function bunnyKill(input) {
  2.     let [bombs, matrix] = [input.pop().split(/[\s,]+/g).map(Number), input.map(l => l.split(/\s+/g).map(Number))];
  3.     let bunnyDamage = 0;
  4.     let bunnyKills = 0;
  5.  
  6.     function doDamageOnNearBunnies(bombRow, bombCol, damage) {
  7.         for (let row = Math.max(0, bombRow - 1); row <= Math.min(matrix.length - 1, bombRow + 1); row++) {
  8.             for (let col = Math.max(0, bombCol - 1); col <= Math.min(matrix[row].length - 1, bombCol + 1); col++) {
  9.                 if (row != bombRow || col != bombCol) {
  10.                     matrix[row][col] -= damage;
  11.                     if (matrix[row][col] < 0)
  12.                         matrix[row][col] = 0;
  13.                 }
  14.             }
  15.         }
  16.     }
  17.  
  18.     for (let i = 0; i < bombs.length; i += 2) {
  19.         let row = bombs[i];
  20.         let col = bombs[i + 1];
  21.  
  22.         if (matrix[row][col] > 0) {
  23.             bunnyDamage += matrix[row][col];
  24.             bunnyKills++;
  25.             doDamageOnNearBunnies(row, col, matrix[row][col]);
  26.             matrix[row][col] = 0;
  27.         }
  28.     }
  29.     matrix.map(r => bunnyDamage += r.reduce((a, b) => a + b));
  30.     matrix.map(r => bunnyKills += r.filter(sr => sr > 0).length);
  31.  
  32.     console.log(bunnyDamage);
  33.     console.log(bunnyKills);
  34. }
  35.  
  36. //bunnyKill(
  37.     //['5 10 15 20',
  38.       //  '10 10 10 10',
  39.      //   '10 15 10 10',
  40.     //    '10 10 10 10',
  41.     //    '2,2 0,1']);
  42.  
  43. //bunnyKill(
  44.    // ['10 10 10',
  45.    //     '10 10 10',
  46.     //    '10 10 10',
  47.     //    '0,0']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement