luke.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. const input = `....#...##......##..#..#.#...#.
  2. ..######...#......#....#..#.##.
  3. ..#.#...##......#.#..#..#....#.
  4. ..#.....#..#.#........#.#..#..#
  5. #......##..###...#.#..#.....#..
  6. #.......##...###...#....#......
  7. .....##...#......##.#.#..#.##..
  8. .........#......#.....#......#.
  9. ..#.#..#....#....#......##.#.##
  10. .#...#..#.............#.#..#.#.
  11. ....#..#.#.##.#....#..#..#....#
  12. ...#..#.....#.......#...#..#..#
  13. .....#.....#.......#..#...#....
  14. .##.......#...#..#........#...#
  15. ...#.......#.#.#...#.#.#......#
  16. #....#..#.....#......##....#..#
  17. ###.#......#.#.#.#..#....#....#
  18. ......##......#.#...#...#..#...
  19. .....#......#.#.#......#.#.....
  20. ...##...#..#........#..#.##....
  21. ..##.#.#..#...###..........#.#.
  22. .#..#..#.....#.........#.###.#.
  23. ....##.....#...#...##..#.##...#
  24. ....#.##....#.....##......#....
  25. ........#.#.........#.#.......#
  26. #....##.#....#..#...#..........
  27. #..###......#....##..........##
  28. ....##.#.....#..#.##......#....
  29. #..#......#......#.............
  30. ...##.....##.......#.......#...
  31. #...#.#.....#..........#...###.
  32. #.....#..#.#.###...#......###..
  33. ...##.#......#........#..#.....
  34. ......#.....###.#...##........#
  35. .#......##......##....#....#...
  36. ..#.#..#.....##....#....#..#...
  37. ..#.#.....#.##.#.....#.....#...
  38. ....#.......#...#.........##...
  39. .#....#..#.......##.......#....
  40. ..#..##.....#...##.##.#.#......
  41. .##.#....#............#.......#
  42. .......#...#..#.#.##.....##..##
  43. ..###....#..#.##........##.#...
  44. ....#.#..#.....#..#.#.....#....
  45. ..#..#.#..............#..#.....
  46. .......#.#.#.........#......#..
  47. ...##..#.#...#......##.#.......
  48. #....#.#.........#...#....#..##
  49. .#..#.#...#.......#.#.#....#.##
  50. .#..###.#..#.#.....#..#........
  51. #.#..##.###.....##.........#..#
  52. #...##...#..##..#..#..........#
  53. .#...#..#......................
  54. ...##..###...........#.#...##..
  55. ..........#.#....#.#...........
  56. ..#....#....#..#....#.#.#......
  57. .#..#.....###......#...#...#...
  58. #.##..#..#.........#..#....#...
  59. ........#......#...#.........#.
  60. ..#.....#.#..##...#.#.#...##...
  61. ..#...........#.##..#.#..#.##..
  62. ..............##...#.#......#..
  63. #.#..#....#...##.###........#..
  64. .#...#..#........#........##..#
  65. .....##..#...#.....#.#.........
  66. .#...#...#....###...#.#.#..##..
  67. ....#.........#....###..##....#
  68. .#....#...####...##....####.#..
  69. ..#..#.......#..#......#.#.#...
  70. ....#....#.......##..#.#.......
  71. ..#....#...........##.#.##.....
  72. #..#..#...##.##....#.#.#.###.##
  73. ...#...#....#.#...##...#....###
  74. ......##........#.........#.#..
  75. ....#####..#..##.......#.#....#
  76. ....##..#...###....#..#.....#..
  77. ..#........#..#.#.....#....#...
  78. ..#....#......#..#...#......#..
  79. ...#.....##...#.#..##.....#..#.
  80. ...#..#.......####.##...#......
  81. .....#..#..#.##..##....#..#.#..
  82. ..#..#..##.#.#.##..#..#...#....
  83. ...#..........#.........#....##
  84. .##.....###...............#.##.
  85. ...##...........#.#.#......#..#
  86. .#...#.#.##....#....#..#.......
  87. .#...###.#....#..#..#..#......#
  88. #..#........###...........#..#.
  89. ..#...#......#.#.#......####.#.
  90. ...#.#....##.#.....#.....##....
  91. ...###..#.#.#...#.....#.###..#.
  92. .#.#..#...##......#..........#.
  93. ##.....#.......#.#..###...#.#..
  94. ##.###....#.....#.....###.#....
  95. #...#..##....#.#...#...#......#
  96. .....##.#........#.###.........
  97. .#..#..#.#......##.#...#.#.....
  98. #..#.#........##...........##.#
  99. #...###..#..####..#.#..........
  100. ..#...#....#...##.#....#....##.
  101. ......#.#........#.....#..#....
  102. #.........#...#.....#...#..##..
  103. #....#.........#...#.##..###.#.
  104. #...###...#.##.#.#.............
  105. #.#....#....#......#....#.#...#
  106. ##...#.##......#..#.#....#.....
  107. ....#...#.##....#..............
  108. .........##..........#..##..#..
  109. ......##....#.#......#.........
  110. ..#.#..............#......#..##
  111. ...........##.......#.#.#......
  112. ##...#........##.......#.#.....
  113. ....#...#...#....#.#......##...
  114. ...#..#.#.#.........#..#.#....#
  115. .##.#...#.#.........#.....##.#.
  116. #.#.....#.#.....#..............
  117. ..#.#..#....#..........#..##...
  118. ...#..#....................#..#
  119. ...........#...........#...#..#
  120. ............#...#............##
  121. ..#....##......##...........#..
  122. ..#..#..#....#....##......##.##
  123. ##..........#..##.##.#...#.....
  124. ............#..#........###.#..
  125. ###...##.#.#....#....#.#....#..
  126. ...#......##...#.......####....
  127. .......#..#..#.#.....#.........
  128. ........##.......##.....#......
  129. #.#...#.###....#..#...##.......
  130. ...#.#....#..#####.#..##.#.....
  131. ..#.#..##.......###...#.....#..
  132. ..#.......#..#...#...#..#.##...
  133. ......#..#.......#.....#....#..
  134. .......#........#.#.......##..#
  135. .#.#.....#.......#.......##..#.
  136. ..#.#....#.#.#####.....#...#...
  137. #..#............###.......#..#.
  138. ........##.........#..#...###..
  139. .#............##...#.....#.....
  140. .#..##..#....#....#.......#....
  141. ....##..........##.............
  142. .##..........#..#..#....#...#..
  143. ...#..#..#............####.....
  144. .............#..#.##..#.#.##...
  145. .....#........#....#.#.......#.
  146. ###.#..#.#...#....##...........
  147. ....#......#...#....##.......#.
  148. .......#.#...#.#...#........##.
  149. ..........#........#..#.##.....
  150. ##..#.#.....##.#...............
  151. .....#....#................#...
  152. ...##....#........##.#....#....
  153. .....##...###....#.#..#.......#
  154. .....#.#.........##....###.....
  155. .#.....##......#..##..##...##.#
  156. .#..............#.....#.#......
  157. .##......#..#..#......##.......
  158. .......#..................#....
  159. ...#.#...##......####.........#
  160. #....#####.#.#..#..#..#...#...#
  161. ##.#...#.......#....#...#...###
  162. ...#........#.....#...#.##.....
  163. ..##....#.......#....#.......##
  164. #......#..##...#..##.#.....#.#.
  165. ..###........#.#..#........#.#.
  166. ...#.###..........#.....#.#.#..
  167. #.###.....#...#...#..##..###...
  168. #....#.#.....#.#........#......
  169. ........#.......##.......#.....
  170. ...........#...#......##.......
  171. ............#...#....#..#.....#
  172. #.#.#.#....#.....#.#..........#
  173. #.##...#...#..#....##.#.......#
  174. ...#..#......#..#...##..##..#..
  175. #....#......#.#.....##.#..#....
  176. #....#..##.#......#.#.....#..##
  177. .#..##....##....#.#...#...#....
  178. #.#.###....#.#............#...#
  179. .#.#....#..#..........#....#.#.
  180. ......#..#.#...............##..
  181. ..#......###.#..........#.###..
  182. ....#.##.#..#...##..#.#...#....
  183. ..............#...##.......#.##
  184. .#...........#....#....#.##....
  185. #..#....#.....#...#.....##...#.
  186. .........#...#.##.......#...#.#
  187. .....#......#.........#.#..#...
  188. ##..........#.#..##...#.#.#....
  189. ##..##.#..#..#.....#.##....#...
  190. ........##....#.#.#....#......#
  191. .#.##...#.###....#.........#..#
  192. ..........#....###..#.........#
  193. #.#..#.#...#.......#..##.......
  194. ..#....#...###..............##.
  195. #..###.....####...#..#..#...#..
  196. ......#..#...###........###....
  197. ..#.....#...#.......#....###..#
  198. .#.........#.#.#....#.#.......#
  199. #.#.###.#.#...........#........
  200. ......#..#.........#........#..
  201. ...........##.#........#.#...#.
  202. .....#.#......##.......#.....##
  203. ...##...#............#..#.....#
  204. .....#..##....##...##.#..#.#...
  205. ...#...#........#.#......##....
  206. ........#..##..#..#......##.#..
  207. .#.#.....#.....#...........#.##
  208. .#...#.#............#......#...
  209. .....#...#........#....#..#.#..
  210. ...##....#..#...#..............
  211. #....##.#.#............#.......
  212. #..#..#.....##..#........##.#.#
  213. ##..#.#....#....##.......###..#
  214. .#.#.#.....###.....#.#......###
  215. .....#..#...###...#....#.#...#.
  216. .##.....................##....#
  217. .#.....#.........#....#.....##.
  218. #...#....#.#...###.......#.#..#
  219. ...#.................#.#....#.#
  220. .##...#.#......................
  221. .##.#........#...##............
  222. .#....#.....#.........#.##..##.
  223. #......#...##..#.........##.##.
  224. ......#......#...####..#.##....
  225. .###....#..##......#.##......#.
  226. ..#...#....#..#.......#.#......
  227. #....#...#.................#.#.
  228. ....#.#.#..#...#..#.......#.#.#
  229. #.#...##.......#.....##.#......
  230. #.........#.....##..##..#......
  231. ....#..##..#.....#..#..#.#..#..
  232. ......#.#..#.#.#....#.#.......#
  233. .##......#..#....##...##..#....
  234. ..#..#......#...##..#.##.....#.
  235. ..#..#.......#.#....#.....#...#
  236. ....#.#.....###...#.......#.#..
  237. ..#....##.....##.#........##...
  238. #...............##....#.....##.
  239. .#.........#....#...##.###.##.#
  240. .#.##..#.............#.#.#..#..
  241. .#.....#.................##....
  242. ..####.........#.#......#.#..#.
  243. #.......#..........#.#........#
  244. .#.#...##.....#.#.......#....#.
  245. ..#.##.#.......###....#....#...
  246. .#....##.............##.#.#.#..
  247. #.#.....#.#.#.#..#......##..#..
  248. .............#..........#.#.#..
  249. ...#.#.............#.#...##....
  250. .......#..#.#.......#..#.#....#
  251. .............#.........###..#..
  252. .#.#..#....#.....#..#.....#...#
  253. #.....#....##..##.#..#........#
  254. ..##..###.....##....#.#..#.....
  255. ..#...##....#...#.#..........#.
  256. ...##..##.#.....#....#.........
  257. ..#...#........##.#..#........#
  258. #.............#.###......#.##..
  259. .#...#........#...........#...#
  260. ..##.......#.#..##.##......#...
  261. ...#.#...##....##..#...........
  262. .#......##........#....##....#.
  263. .........#..#....#...#..##.##..
  264. ....#..#.#...#.......#.#.##....
  265. ...#.#......#.#..#..#.#....#..#
  266. .......#........#.........###..
  267. #.#..#.#.........##............
  268. ##..##..#.##..###...#.#...#....
  269. .#....#.#..#...#....#.##.....#.
  270. .#.#.#.#........##...#..#.#.##.
  271. .#..#.#..#...........#..#......
  272. ..#.##.#...#....#.........#...#
  273. .....##...#.#...#...#....#.....
  274. ..#..........#.#.#.......##.#..
  275. #.#............#..#.....#..#...
  276. ..#...........##.#.##.#....#..#
  277. #..####.....#............#.....
  278. .##......#####.#..#.....#....#.
  279. ...##..#.#......#.#..#..#...##.
  280. #....................#.##...#.#
  281. ...#............#.............#
  282. ....#.##..........#.....#......
  283. ....##..##....#.#..............
  284. ...........#....##.#.....#.....
  285. ....#.....#....#....#......#...
  286. #...##........#...#........#.#.
  287. ........#.....##..#.##.#..#.#.#
  288. ....##......##....#.....##....#
  289. ...#.#........##.......#...##..
  290. #......##..#.#.#....##......#..
  291. ..#.......#.......##..#.##.....
  292. .#...#...#.#.............##....
  293. ......#.#.#.........##...#..#.#
  294. .....#..####....#.##..........#
  295. ...#...#.#....#.....#..#.....##
  296. .........#.......#......###....
  297. ........##..##..#.#.#...###...#
  298. .#..##.#....#...##.....#.#.#...
  299. ........##...#...##..#.........
  300. .........#.......#.##..#...####
  301. #......#.....#..............#.#
  302. ##..##.#.##.....##...........#.
  303. #.............#.........#......
  304. ...####.#.##..#.#.#.##.#......#
  305. ..#.....##....#...#............
  306. #..............#......#...###..
  307. ..#..#.#...#.##.........##.....
  308. ..#...##..#........#..#.##..##.
  309. ......###...#..#....#..#.###...
  310. ...##.##.###.....##.#.......#..
  311. #....#..###..#.......#.#.#..#..
  312. ..##.............##..##...###.#
  313. .#.#..#.........#..........#...
  314. .........#.#.....##...#..#...##
  315. ....#..#....#####..#...#..#....
  316. ...#.....#.....#...#.#..#.#....
  317. .#..#.............#.......##.#.
  318. ...##.......#.#.....##......#..
  319. ...........##..#.##..###...#.#.
  320. ...........#...........#...#..#
  321. ..#....#.##.#..#..#...........#
  322. ..#.....##...#......#...#......
  323. ...###.###.....##..........#..#`
  324. const dataLines = input.split("\n");
  325. function formatDataLine(dataLine) {
  326. return dataLine.split("");
  327. };
  328. const map = dataLines.map(formatDataLine);
  329. const mapHeight = map.length;
  330. const mapWidth = map[0].length;
  331. const pointer = [0,0];
  332. function step(pointer, map, goRight, goDown) {
  333. const x = pointer[0];
  334. const y = pointer[1];
  335. let newX = x + goRight;
  336. let newY = y + goDown;
  337. if (newX > (mapWidth - 1)) {
  338. newX = newX - mapWidth;
  339. }
  340. pointer[0] = newX;
  341. pointer[1] = newY;
  342. // has to do y then x. [ row[col, col], ... ]
  343. return map[pointer[1]][pointer[0]];
  344. }
  345. let treeCount = 0;
  346. while(pointer[1] < (mapHeight - 1)) {
  347. const land = step(pointer, map, 3, 1);
  348. if (land === "#") treeCount++;
  349. }
  350. console.log(treeCount);