Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // hráč může vzít jen takový počet mincí, které jsou mocninou 2
  2. // např.: pokud si hráč vezme 100 mincí,
  3.  
  4. const
  5.   fs = require("fs");
  6.  
  7. const piles = [
  8.   1,
  9.   2,
  10.   3,
  11.   4,
  12.   5,
  13.   6,
  14.   7,
  15.   8,
  16.   9,
  17.   10,
  18.   11,
  19.   12,
  20.   13,
  21.   14,
  22.   15,
  23.   16,
  24.   17,
  25.   18,
  26.   19,
  27.   20,
  28.   3197,
  29.   2103,
  30.   1705,
  31.   3237,
  32.   1182,
  33.   5385,
  34.   1099,
  35.   6539,
  36.   8841,
  37.   230,
  38.   3211,
  39.   9408,
  40.   4457,
  41.   8340,
  42.   9303,
  43.   4567,
  44.   2288,
  45.   8002,
  46.   3960,
  47.   5891,
  48.   6502,
  49.   2397,
  50.   5335,
  51.   8515,
  52.   3920,
  53.   6892,
  54.   3189,
  55.   3920,
  56.   7997,
  57.   517,
  58.   2210,
  59.   4330,
  60.   3692,
  61.   1477,
  62.   6961,
  63.   502,
  64.   5076,
  65.   507,
  66.   7405,
  67.   1435,
  68.   522,
  69.   9165,
  70.   8931,
  71.   210,
  72.   2816,
  73.   6182,
  74.   345,
  75.   1385,
  76.   2210,
  77.   7577,
  78.   2393,
  79.   9813,
  80.   7564,
  81.   8585,
  82.   6652,
  83.   7862,
  84.   350,
  85.   3447,
  86.   8929,
  87.   3815,
  88.   2810,
  89.   683,
  90.   5239,
  91.   5646,
  92.   5579,
  93.   9437,
  94.   1812,
  95.   600,
  96.   1132,
  97.   3061,
  98.   6539,
  99.   5889,
  100.   1256,
  101.   6515,
  102.   7377,
  103.   4199,
  104.   7289,
  105.   2278,
  106.   425,
  107.   8537,
  108.   3230,
  109.   4512,
  110.   2246,
  111.   2262,
  112.   9277,
  113.   9349,
  114.   949,
  115.   9682,
  116.   8000,
  117.   5308,
  118.   718,
  119.   3302,
  120.   923,
  121.   6898,
  122.   8983,
  123.   386,
  124.   3400,
  125.   3189,
  126.   4805,
  127.   204
  128. ];
  129.  
  130. const players = [
  131.   "Pat", // begins each game
  132.   "Mat"
  133. ];
  134.  
  135.  
  136. const largestSquare = n => {
  137.   let i = 0;
  138.   while ((i + 1) * (i + 1) <= n) {
  139.     ++i;
  140.   }
  141.   return i * i;
  142. }
  143.  
  144. const gameLoop = pile => {
  145.   let turn = 0;
  146.  
  147.   while (pile > 0) {
  148.  
  149.     let taken;
  150.     let remaining;
  151.     let suggested = pile;
  152.  
  153.     while (suggested >= 1) {
  154.       taken = largestSquare(suggested);
  155.       remaining = pile - taken;
  156.       if (remaining !== 0 && Number.isInteger(Math.sqrt(remaining))) {
  157.         suggested = taken - 1;
  158.       } else {
  159.         break;
  160.       }
  161.     }
  162.  
  163.     pile -= taken;
  164.  
  165.     // win strategy
  166.     // after player takes some coins
  167.     // remaining number of coins should be 0 or not equal to square root
  168.  
  169.     console.log(`${players[turn]} took ${taken}`);
  170.  
  171.     turn ^= 1; // change turn
  172.   }
  173.  
  174.   turn ^= 1
  175.  
  176.   console.log(`${players[turn]} empties pile`);
  177.  
  178.   return players[turn];
  179.  
  180. };
  181.  
  182. // console.log("Winner: " + gameLoop(30));
  183.  
  184. fs.writeFile("output", JSON.stringify(piles.map(gameLoop)));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement