Created
February 15, 2017 14:04
-
-
Save allanberger/21bf95ba9f89b8e29b4db699a5f68600 to your computer and use it in GitHub Desktop.
Advent of Code 2016 - Day 2 - Clojure
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns adventofcode.days.day2 | |
(:require [clojure.string :as str] | |
[clojure.java.io :as io])) | |
(def input1 "DLRRRRLRLDRRRURRURULRLLULUURRRDDLDULDULLUUDLURLURLLDLUUUDUUUULDRDUUDUDDRRLRDDDUDLDLLRUURDRULUULRLRDULULLRLRLRLDRLUULDLDDDDRRLRUUUDDRURRULLLRURLUURULLRLUDDLDRUULDRURULRRRLLLRDLULDRRDDUDLURURLDULDRDRLDDUURRDUDDRDUURDULDUURDUDRDRULDUDUULRRULUUURDUURUDLDURDLRLURUUDRRDLRUDRULRURLDLLDLLRRDRDRLRRRULDRRLDUURLUUDLUUDDLLRULRDUUDURURLUURDRRRUDLRDULRRRLDRDULRUUDDDLRDUULDRLLDRULUULULRDRUUUULULLRLLLRUURUULRRLDDDRULRRRUDURUR") | |
(def input2 "DLLU") | |
(def input3 "RULR") | |
(defn input [path] | |
(line-seq (io/reader path))) | |
(str/trim-newline (str (input "././files/day2_input.txt"))) | |
(def steps (hash-map \U [0 1], \R [1 0], \D [0 -1], \L [-1 0])) | |
(def keypad (sorted-map 1 [-1 1], | |
2 [ 0 1], | |
3 [ 1 1], | |
4 [-1 0], | |
5 [ 0 0], | |
6 [ 1 0], | |
7 [-1 -1], | |
8 [ 0 -1], | |
9 [ 1 -1])) | |
; steps on x-axis of direction | |
(first (get steps \D)) | |
; steps on y-axis of direction | |
(last (get steps \D)) | |
; summarize x-axis entries of input and start | |
(+ (first (steps \D)) (first (keypad 5))) | |
; => (+ 0 + 0) = 0 | |
; summarize y-axis entries of input and start | |
(+ (last (steps \D)) (last (keypad 5))) | |
; => (+ 0 -1) = -1 | |
(defn x-position | |
[x] | |
(+ (first x) (first (keypad 5)))) | |
(defn y-position | |
[y] | |
(+ (last y) (last (keypad 5)))) | |
(defn steps-with-coordinates [input] | |
(->> (map char input) | |
(map (fn [x] (steps x))))) | |
(assoc (first (steps-with-coordinates input2)) 0 (x-position (first (steps-with-coordinates input2)))) | |
(assoc (first (steps-with-coordinates input2)) 1 (y-position (first (steps-with-coordinates input2)))) | |
; for each char of input map | |
; add the matching char coordinates to the new collection | |
; TODO Update x and y positions in vector or solve via different data structure? | |
(defn update-positions [input] | |
(let [x-entry (first (steps-with-coordinates input))] | |
(assoc x-entry 0 (x-position x-entry))) | |
(let [y-entry (first (steps-with-coordinates input))] | |
(assoc y-entry 1 (y-position y-entry)))) | |
; input2 = \D \L \L \U | |
; => ([0 -1], [-1 0], [-1 0], [0 1]) | |
; if D then ADD the first key of D to first key of 5 [0 0] and the second key of D to second key of 5 | |
; if sum of a coordinate is < -1 "(< x -1)" or > 1 (> x 1) skip and remain last coordinate | |
; 1 = -1 1 | |
; 2 = 0 1 | |
; 3 = 1 1 | |
; 4 = -1 0 | |
; 5 = 0 0 | |
; 6 = 1 0 | |
; 7 = -1 -1 | |
; 8 = 0 -1 | |
; 9 = 1 -1 | |
; | |
; {:U [ 0 1] | |
; :R [ 1 0] | |
; :D [ 0 -1] | |
; :L [-1 0]} | |
; | |
; 1. | |
; Start with 5: 0 0 | |
; D: 0 -1 = 8 => 0 -1 (new position 8) | |
; L: -1 0 = 7 => -1 -1 (new position 7) | |
; L: -1 0 = 7 => -2 -1 (not possible) => -1 -1 (same position 7) | |
; U: 0 1 = 4 => -1 0 (new position 4) | |
; | |
; 1 2 3 | |
; 4 5 6 | |
; 7 8 9 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DLRRRRLRLDRRRURRURULRLLULUURRRDDLDULDULLUUDLURLURLLDLUUUDUUUULDRDUUDUDDRRLRDDDUDLDLLRUURDRULUULRLRDULULLRLRLRLDRLUULDLDDDDRRLRUUUDDRURRULLLRURLUURULLRLUDDLDRUULDRURULRRRLLLRDLULDRRDDUDLURURLDULDRDRLDDUURRDUDDRDUURDULDUURDUDRDRULDUDUULRRULUUURDUURUDLDURDLRLURUUDRRDLRUDRULRURLDLLDLLRRDRDRLRRRULDRRLDUURLUUDLUUDDLLRULRDUUDURURLUURDRRRUDLRDULRRRLDRDULRUUDDDLRDUULDRLLDRULUULULRDRUUUULULLRLLLRUURUULRRLDDDRULRRRUDURUR | |
RULRUUUDLLUDURDRDDLLRLLUDRUDDRLRRDLDLDRDULDLULURDLUDDDUULURLDRUUURURLLRRDDDUUDRLRLLDLDRDDDRDUDLRDRDLLLDDLDUDDRUDUUDLLLLLDULRLURRRLLURUUULUDRLRLRLURRDRLLLRLLULRLLLDDLRLRDLUUUUUDULULDDULLUDUURDLRUDLRUDLRLLRLDLULRLDUDRURURDLRULDLULULDLLDLDLDLLLUDUDDLRLRRDULLUDRDDLLLDUURDULUDURLLLDRUDDDLRLULDLDRRDDDRDULDDUDRDDULLULRRLRUULRDUDURUDULUDUDURLDRDUUDDRRLRURDRRLRDDDDRUDLUDLDDLRDLUUDLRRURDDLURDLRDLLRDRDLDLDUUUURULUULDDDDLDULUURRRULUDLLLDRULDRURL | |
RRRLRDLLDUURDRRRLURDUULUDURDRRUUDURURRLDLLDRDLRRURDDUDDURLRUUDDULULRUUDRLUUDDLLDDDLRRRDLLLLLLRRURDULDLURRURRDDLDDDUDURRDURRRLUDRRULLRULDRLULRULDDRLLRDLRDUURULURLUURLRRULDULULUULDUDLRLDRDDRRRUUULULDUURLRLLURRLURDUUDDDRUULDLLLDRUURLRRLLDDUDRDLDDDULDRDDDUDRRLLLULURDUDLLUUURRLDULURURDDLUDLLRLDRULULURDLDRLURDLRRDRRUULLULDLURRDDUDRDDDLDUDLDRRUDRULDLDULRLLRRRRDDRLUURRRRDDLLRUURRLRURULDDULRLULRURRUULDUUDURDRRLRLUDRULDRUULUUDRDURDURRLULDDDULDDLRDURRUUUUUDDRRDLRDULUUDDL | |
DRRLLRRLULDDULRDDLRLDRURDDUDULURRDLUUULURRRLLRLULURLLRLLDLLUDDLLRDRURRDLDDURRURDRDDUDDDLLRLDLDLDDDDRRRRUDUDLRDUDDURLLRURRDUDLRLLUDDRLDUUDDLLLUDRRRLLDDULUDDRLLUDDULLDDLRLDLRURRLUDDLULULDLUURDLLUDUDRRRRDULUDLRRLRUDDUUDRRLLRUUDRRLDDLRRRUDRRDRRDDUDLULLURRUURLLLDRDDLUDDDUDDRURURDLRUULLRDRUUDRDUDRLULLDURUUULDDLDRDRUDRUDUULDDRLRDRRDRRRRLRLRUULDDUUDDLLLLRRRDUDLRDLDUDDUURLUDURLDRRRDRUDUDRLDLRLDRDDLUDRURLRDRDLDUDDDLRLULLUULURLDDDULDUDDDLDRLDLURULLUDLLDRULDLLLDUL | |
LDULURUULLUDLDDRLLDURRULRLURLLURLRRLRDLDDRUURULLRUURUURRUDDDLRRLDDLULDURLLRDURDLLLURLDRULLURLRLDRDRULURDULDLLDUULLLDUDULDURLUDRULRUUUUUUDUUDDDLLURDLDLRLRDLULRDRULUUDRLULLURLRLDURDRRDUDDDURLLUUDRRURUDLDUDRLRLDRLLLLDLLLURRUDDURLDDRULLRRRRDUULDLUDLDRDUUURLDLLLDLRLRRLDDULLRURRRULDLURLURRRRULUURLLUULRURDURURLRRDULLDULLUDURDUDRLUULULDRRDLLDRDRRULLLDDDRDUDLRDLRDDURRLDUDLLRUDRRRUDRURURRRRDRDDRULRRLLDDRRRLDLULRLRRRUDUDULRDLUDRULRRRRLUULRULRLLRLLURDLUURDULRLDLRLURDUURUULUUDRLLUDRULULULLLLRLDLLLDDDLUULUDLLLDDULRDRULURDLLRRDRLUDRD |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment