adventofcode2017/dec3.ml

77 lines
2.2 KiB
OCaml

(*--- Day 3: Spiral Memory ---*)
(*You come across an experimental new kind of memory stored on an infinite*)
(*two-dimensional grid.*)
(*Each square on the grid is allocated in a spiral pattern starting at a location*)
(*marked 1 and then counting up while spiraling outward. For example, the first*)
(*few squares are allocated like this:*)
(*17 16 15 14 13*)
(*18 5 4 3 12*)
(*19 6 1 2 11*)
(*20 7 8 9 10*)
(*21 22 23---> ...*)
(*While this is very space-efficient (no squares are skipped), requested data*)
(*must be carried back to square 1 (the location of the only access port for this*)
(*memory system) by programs that can only move up, down, left, or right. They*)
(*always take the shortest path: the Manhattan Distance between the location of*)
(*the data and square 1.*)
(*For example:*)
(*Data from square 1 is carried 0 steps, since it's at the access port.*)
(*Data from square 12 is carried 3 steps, such as: down, left, left.*)
(*Data from square 23 is carried only 2 steps: up twice.*)
(*Data from square 1024 must be carried 31 steps.*)
(*How many steps are required to carry the data from the square identified in*)
(*your puzzle input all the way to the access port?*)
(*Your puzzle input is 361527.*)
(* N:
* Increases by 8
* 1 -> 4 -> 15 -> 34 -> 61 ->
* 3 11 19 37 45
*)
(* NE:
* Increases by 8
* 1 -> 3 -> 13 -> 31 -> 57 ->
* 2 10 18 26 34
*)
(* NW:
* Increases by 8
* 1 -> 5 -> 17 -> 37 -> 65 ->
* 4 12 20 28 36
*)
(* W:
* Increases by 8
* 1 -> 6 -> 19 -> 40 -> 69 ->
* 5 13 21 29 37
*)
(* SW:
* Increases by 8
* 1 -> 7 -> 21 -> 43 -> 73 ->
* 6 14 22 30 38
*)
open Batteries
let lol = [
[65; 64; 63; 62; 61; 60; 59; 58; 57; 90;];
[66; 37; 36; 35; 34; 33; 32; 31; 56; 89;];
[67; 38; 17; 16; 15; 14; 13; 30; 55; 88;];
[68; 39; 18; 5; 4; 3; 12; 29; 54; 87;];
[69; 40; 19; 6; 1; 2; 11; 28; 53; 86;];
[70; 41; 20; 7; 8; 9; 10; 27; 52; 85;];
[71; 42; 21; 22; 23; 24; 25; 26; 51; 84;];
[72; 43; 44; 45; 46; 47; 48; 49; 50; 83;];
[73; 74; 75; 76; 77; 78; 79; 80; 81; 82;];
]
let () =
print_string "WAT?"