Skip to content

Instantly share code, notes, and snippets.

@bgrabow
Created December 17, 2018 22:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgrabow/7641f00f27a2632b7e597116dab31eab to your computer and use it in GitHub Desktop.
Save bgrabow/7641f00f27a2632b7e597116dab31eab to your computer and use it in GitHub Desktop.
(ns aoc.y2018.d17.bgrabow
(:refer-clojure :exclude [read-string format])
(:require
[aoc.utils :as u :refer [deftest read-string format]]
;[aoc.y2018.d17.data :refer [input answer-1 answer-2]]
[clojure.test :as t :refer [is testing]]
[clojure.string :as str]
[clojure.set :as set]))
(def test-input "x=495, y=2..7\ny=7, x=495..501\nx=501, y=3..7\nx=498, y=2..4\nx=506, y=1..2\nx=498, y=10..13\nx=504, y=10..13\ny=13, x=498..504")
(def spring [500 0])
(def axis-keyword {"x" :x
"y" :y})
(defn parse-dimension [s]
(let [[axis start-str end-str] (re-seq #"[x|y|\d]+" s)
start (u/parse-int start-str)
end (when end-str (u/parse-int end-str))]
{(axis-keyword axis)
(range start
(if end
(inc end)
(inc start)))}))
(parse-dimension "x=495")
(parse-dimension " y=2..7")
(defn parse-coordinate-range [ss]
(apply merge (map parse-dimension ss)))
(defn inner-product [{:keys [x y]}]
(for [x' x y' y]
[x' y']))
(defn parse-clay [input]
(->> (str/split-lines input)
(map #(str/split % #","))
(map parse-coordinate-range)
(map inner-product)
(apply concat)))
(let [clay (parse-clay test-input)
y-min (apply min (map second clay))
y-max (apply max (map second clay))])
; Source has clay below
; Either
; Clay on both sides => still water row
; Clay on one or zero sides => flow sideways until clay floor ends
(defn below [p]
(update p 1 inc))
(defn right [p]
(update p 0 inc))
(defn left [p]
(update p 0 dec))
(defn blocked? [cells point]
(#{:clay :still-water} (cells point)))
(defn flow-right [cells outlet & uncertain-water]
(cond (blocked? cells outlet)
{:new-outlets nil
:uncertain-water (into #{} uncertain-water)}
(not (blocked? cells (below outlet)))
{:new-outlets [outlet (below outlet)]
:uncertain-water (into #{} (conj uncertain-water outlet))}
:else
(recur cells (right outlet) (conj uncertain-water outlet))))
(defn flow-left [cells outlet & uncertain-water]
(cond (blocked? cells outlet)
{:new-outlets nil
:uncertain-water (into #{} uncertain-water)}
(not (blocked? cells (below outlet)))
{:new-outlets [outlet (below outlet)]
:uncertain-water (into #{} (conj uncertain-water outlet))}
:else
(recur cells (left outlet) (conj uncertain-water outlet))))
(defn flow-sideways [cells outlet]
(let [right (flow-right cells (right outlet))
left (flow-left cells (left outlet))
{:keys [new-outlets uncertain-water]}
(merge-with set/union right left {:uncertain-water #{outlet}})]
(if new-outlets
{:consumed-outlets [outlet]
:new-outlets new-outlets
:cells (merge cells (zipmap uncertain-water (repeat :flowing-water)))}
{:consumed-outlets [outlet]
:revisit-upwards [outlet]
:cells (merge cells (zipmap uncertain-water (repeat :still-water)))})))
(defn flow-downwards [cells outlet]
;(println "cells below outlet" (cells (below outlet)))
(if (nil? (cells (below outlet)))
{:cells (assoc cells outlet :flowing-water)
:new-outlets [(below outlet)]}
{:cells cells}))
(defn flow-in-row [{:keys [cells] :as m} outlet]
(let [flow-results (if (blocked? cells (below outlet))
(flow-sideways cells outlet)
(flow-downwards cells outlet))]
(-> (merge-with concat m flow-results)
(assoc :cells (:cells flow-results)))))
(def print-cell
(fnil {:clay \#
:still-water \~
:flowing-water \|
:empty \.}
:empty))
(defn print-cells [cells]
(let [x-min (apply min (map first (keys cells)))
x-max (apply max (map first (keys cells)))
y-min (apply min (map second (keys cells)))
y-max (apply max (map second (keys cells)))]
(map #(apply str %) (for [y (range y-min (inc y-max))]
(for [x (range x-min (inc x-max))]
(print-cell (cells [x y])))))))
(defn remove-consumed-outlets [consumed all]
;(println "Consumed" consumed)
;(println "All" all)
;(println (type consumed))
;(println (type all))
(->> consumed
(group-by second)
(reduce (fn [all [y ps]]
(update all y #(remove (into #{} ps) %)))
all)))
(defn simulate [clay spring]
(println "Simulating...")
(time (let [y-max (apply max (map second clay))]
(loop [outlets {(second spring) [spring]}
old-cells (zipmap clay (repeat :clay))
y (second spring)]
(when (> y 825)
(println outlets)
(println (str/join \newline (print-cells old-cells)))
(println y)
(println "Current outlets" (outlets y))
(println (type outlets))
(println (type old-cells)))
(when (zero? (rem y 200)) (println "y =" y))
(def last-y y)
(if (<= y y-max)
(let [{:keys [cells new-outlets consumed-outlets] :as m}
(reduce flow-in-row
{:cells old-cells
:new-outlets []}
(outlets y))]
(recur (->> new-outlets
(group-by second)
(merge-with concat outlets)
(remove-consumed-outlets consumed-outlets))
cells
(if (:revisit-upwards m) (dec y) (inc y))))
old-cells)))))
(map println (take 900 (print-cells (simulate (parse-clay my-input) [500 0]))))
(def my-input "x=332, y=1355..1367\ny=444, x=543..566\nx=343, y=1375..1386\nx=359, y=236..244\ny=1955, x=429..432\nx=377, y=339..349\nx=481, y=1305..1317\ny=842, x=487..499\nx=446, y=1588..1599\nx=388, y=802..824\ny=1346, x=430..434\ny=1896, x=366..369\nx=562, y=1992..2015\ny=707, x=466..469\ny=1904, x=488..512\ny=1917, x=539..541\nx=400, y=1825..1838\ny=692, x=458..474\nx=349, y=1356..1367\nx=373, y=1069..1085\ny=1366, x=485..487\nx=488, y=462..472\nx=381, y=12..26\nx=511, y=727..730\ny=1346, x=341..357\nx=496, y=1453..1473\nx=344, y=1878..1890\nx=542, y=240..251\nx=505, y=1505..1519\nx=347, y=1333..1343\nx=351, y=912..921\nx=507, y=2005..2013\nx=330, y=575..596\ny=1127, x=321..349\nx=473, y=1151..1171\nx=350, y=169..180\nx=499, y=1075..1096\nx=500, y=1429..1438\nx=386, y=884..887\ny=216, x=537..553\nx=428, y=976..1003\nx=550, y=994..1016\nx=498, y=2000..2004\ny=1777, x=332..355\nx=463, y=680..689\nx=343, y=1316..1327\nx=493, y=1839..1843\nx=422, y=207..220\nx=350, y=249..256\nx=490, y=1034..1041\nx=448, y=1989..2012\nx=466, y=1040..1054\nx=372, y=927..942\nx=462, y=1780..1786\nx=509, y=494..516\nx=356, y=236..244\ny=334, x=539..562\nx=530, y=407..432\ny=1129, x=522..538\nx=527, y=996..1013\ny=1599, x=446..474\nx=461, y=1604..1618\ny=1223, x=410..420\ny=164, x=451..520\ny=553, x=353..367\nx=409, y=604..631\ny=944, x=472..489\nx=486, y=1603..1625\nx=346, y=1803..1815\nx=461, y=857..859\ny=70, x=403..410\ny=224, x=559..562\ny=1017, x=486..488\nx=446, y=1492..1498\ny=1111, x=460..480\nx=382, y=1611..1621\ny=2012, x=446..448\nx=555, y=1178..1185\nx=431, y=1413..1427\ny=490, x=367..389\nx=326, y=1414..1436\ny=1403, x=551..566\nx=468, y=957..959\nx=357, y=1320..1322\nx=493, y=484..494\ny=1246, x=352..380\nx=544, y=391..397\nx=444, y=1913..1925\ny=1786, x=460..462\nx=442, y=357..371\nx=479, y=345..346\ny=1173, x=382..388\nx=422, y=1363..1374\nx=460, y=176..190\nx=386, y=1760..1769\nx=533, y=1404..1424\nx=422, y=983..999\nx=498, y=80..89\nx=397, y=172..184\nx=441, y=1817..1845\ny=607, x=477..521\ny=1745, x=375..379\nx=344, y=101..126\nx=488, y=55..68\ny=1958, x=437..448\nx=492, y=870..881\nx=372, y=217..238\nx=499, y=11..22\nx=537, y=191..216\nx=528, y=1405..1424\ny=1361, x=338..342\nx=430, y=335..349\nx=357, y=1439..1451\ny=1428, x=335..337\nx=540, y=604..614\ny=1408, x=351..371\nx=521, y=1216..1235\ny=1436, x=326..343\ny=697, x=427..443\nx=323, y=394..416\nx=416, y=1492..1506\nx=455, y=1817..1845\nx=478, y=952..962\ny=1427, x=431..445\nx=489, y=1093..1096\nx=468, y=1041..1054\nx=484, y=1292..1315\nx=465, y=638..647\nx=544, y=901..915\nx=456, y=15..24\nx=444, y=179..182\nx=543, y=429..444\nx=342, y=450..456\ny=1002, x=505..519\ny=1390, x=544..552\nx=401, y=975..1003\nx=405, y=1410..1431\nx=440, y=1652..1675\ny=561, x=488..514\ny=1424, x=528..533\ny=24, x=434..456\nx=442, y=1879..1882\nx=523, y=1277..1287\ny=205, x=444..449\nx=398, y=1035..1049\ny=1925, x=534..549\nx=365, y=1876..1878\nx=483, y=930..940\ny=46, x=497..513\ny=1699, x=535..538\ny=893, x=368..376\nx=344, y=688..697\nx=392, y=1143..1153\nx=419, y=553..556\ny=1063, x=435..452\nx=405, y=688..702\nx=562, y=321..334\nx=449, y=1890..1899\ny=430, x=514..517\nx=387, y=1226..1239\nx=331, y=192..202\nx=477, y=7..24\nx=350, y=449..456\nx=375, y=1293..1306\ny=744, x=367..391\ny=833, x=320..336\nx=478, y=464..477\ny=1017, x=437..443\nx=394, y=1206..1218\nx=406, y=1493..1507\ny=126, x=474..521\nx=411, y=604..631\nx=409, y=537..540\nx=375, y=1205..1218\ny=706, x=507..520\ny=79, x=368..388\nx=320, y=287..307\nx=365, y=752..778\nx=437, y=918..921\nx=480, y=1329..1331\nx=549, y=1903..1925\ny=270, x=324..328\nx=564, y=261..271\nx=435, y=1053..1063\ny=1961, x=507..520\nx=534, y=74..96\nx=386, y=1141..1148\nx=441, y=1192..1217\nx=353, y=646..668\nx=397, y=1652..1664\nx=521, y=596..607\nx=554, y=41..54\ny=1785, x=506..530\nx=517, y=421..430\nx=563, y=1050..1074\nx=528, y=40..54\nx=354, y=1522..1524\nx=549, y=66..72\nx=478, y=1839..1843\ny=1469, x=444..448\nx=514, y=549..561\nx=488, y=484..494\nx=490, y=1324..1334\ny=1050, x=322..324\ny=1122, x=527..530\nx=384, y=1951..1963\nx=374, y=1526..1528\nx=403, y=816..843\nx=338, y=1929..1933\ny=979, x=474..480\nx=498, y=58..62\nx=538, y=724..733\nx=447, y=1706..1720\nx=364, y=188..208\nx=500, y=328..334\nx=536, y=1831..1859\ny=1087, x=421..448\ny=1157, x=430..452\nx=389, y=1572..1577\nx=556, y=1069..1071\nx=390, y=1588..1595\ny=643, x=472..475\ny=331, x=514..533\ny=1397, x=466..489\nx=534, y=1903..1925\ny=28, x=521..546\nx=324, y=687..697\ny=1806, x=394..422\ny=1621, x=365..382\ny=1179, x=442..444\nx=481, y=637..647\nx=387, y=124..128\nx=524, y=1920..1933\nx=374, y=1250..1263\nx=334, y=191..202\ny=1953, x=511..537\nx=392, y=605..606\ny=2035, x=469..490\ny=1675, x=440..457\nx=403, y=861..882\ny=882, x=403..420\nx=396, y=673..699\nx=523, y=80..92\ny=99, x=421..445\ny=126, x=332..344\nx=489, y=365..373\nx=543, y=678..688\ny=1424, x=357..359\nx=466, y=491..518\nx=408, y=364..386\nx=454, y=1439..1445\ny=796, x=463..467\nx=554, y=1136..1155\ny=1016, x=550..564\nx=511, y=384..393\nx=437, y=523..529\nx=485, y=717..726\nx=488, y=1035..1041\ny=1071, x=552..556\nx=390, y=1655..1657\nx=420, y=415..421\nx=496, y=855..862\ny=1356, x=506..533\ny=1600, x=382..399\ny=1696, x=404..418\nx=499, y=681..699\nx=398, y=1321..1325\nx=504, y=724..736\ny=699, x=486..499\nx=403, y=795..798\nx=530, y=479..494\nx=441, y=756..782\nx=449, y=54..73\nx=418, y=1294..1313\ny=376, x=464..473\ny=824, x=388..392\nx=358, y=1395..1404\nx=467, y=785..796\ny=1860, x=389..408\ny=1096, x=497..499\nx=332, y=1774..1777\ny=1507, x=482..487\nx=414, y=364..383\nx=347, y=1481..1488\ny=416, x=323..350\ny=308, x=396..410\ny=1481, x=347..349\nx=428, y=1873..1886\ny=1229, x=534..537\nx=335, y=554..568\nx=434, y=577..583\nx=497, y=33..46\ny=1580, x=384..408\ny=487, x=443..449\ny=959, x=419..425\ny=702, x=405..411\ny=397, x=544..559\nx=530, y=135..146\nx=514, y=1597..1618\ny=1657, x=386..390\nx=497, y=656..675\nx=452, y=1686..1701\ny=1459, x=419..439\nx=400, y=232..245\ny=383, x=414..416\ny=1625, x=486..499\ny=583, x=434..436\nx=391, y=742..744\ny=245, x=400..404\nx=398, y=1480..1505\nx=510, y=54..68\nx=428, y=1390..1392\nx=547, y=419..421\nx=548, y=679..688\ny=186, x=439..457\nx=367, y=741..744\ny=902, x=381..398\ny=858, x=351..359\ny=80, x=523..526\ny=885, x=320..340\ny=161, x=353..370\ny=462, x=433..440\ny=1438, x=473..500\ny=1109, x=335..362\ny=1085, x=373..391\nx=369, y=1940..1953\ny=212, x=389..396\ny=1075, x=475..479\ny=1507, x=355..360\ny=133, x=369..395\nx=559, y=212..224\nx=373, y=1232..1238\ny=1616, x=549..563\nx=550, y=1566..1586\nx=442, y=1726..1748\ny=585, x=508..529\ny=484, x=540..553\nx=523, y=364..373\ny=1703, x=378..380\nx=378, y=1692..1703\ny=1051, x=513..521\ny=1701, x=452..466\nx=490, y=2021..2035\ny=1613, x=408..425\nx=324, y=1328..1332\nx=384, y=1567..1580\nx=528, y=408..432\nx=524, y=1876..1903\nx=396, y=284..308\ny=949, x=554..559\ny=1477, x=436..455\ny=1994, x=392..403\nx=555, y=507..533\ny=146, x=464..482\ny=256, x=330..350\nx=342, y=1361..1363\nx=501, y=948..958\ny=410, x=362..388\nx=473, y=1247..1263\nx=374, y=1972..1982\nx=437, y=1942..1958\nx=512, y=1104..1118\nx=415, y=1123..1134\ny=1526, x=374..376\nx=431, y=1168..1184\ny=22, x=499..517\nx=458, y=682..692\ny=1545, x=342..356\nx=401, y=31..46\ny=798, x=387..403\ny=438, x=489..503\ny=733, x=538..549\ny=182, x=444..449\nx=497, y=1074..1096\ny=2004, x=498..500\ny=1003, x=401..428\ny=533, x=539..555\nx=454, y=851..862\nx=506, y=1706..1728\nx=517, y=577..580\nx=380, y=1851..1862\nx=504, y=327..334\nx=324, y=261..270\nx=548, y=1883..1890\nx=467, y=1725..1748\nx=337, y=1640..1651\nx=532, y=367..369\nx=421, y=650..655\nx=420, y=116..137\nx=404, y=1683..1696\nx=376, y=868..893\nx=494, y=720..729\nx=369, y=1502..1511\nx=366, y=1886..1896\nx=449, y=580..595\nx=483, y=899..906\nx=517, y=12..22\ny=944, x=419..425\nx=517, y=388..390\ny=133, x=430..432\nx=499, y=185..195\nx=441, y=886..895\nx=487, y=968..992\nx=418, y=1529..1554\nx=559, y=900..915\nx=346, y=1622..1636\ny=1859, x=508..536\nx=369, y=121..133\nx=370, y=1192..1213\ny=992, x=487..503\nx=455, y=1462..1477\nx=449, y=1664..1667\ny=958, x=501..514\nx=500, y=2000..2004\nx=330, y=1459..1469\nx=535, y=1697..1699\ny=822, x=323..337\nx=463, y=785..796\nx=394, y=1163..1176\nx=491, y=1782..1787\nx=462, y=1649..1666\nx=500, y=996..1013\ny=1153, x=376..392\nx=544, y=1372..1390\ny=885, x=483..499\nx=526, y=80..92\nx=469, y=1247..1263\nx=478, y=1329..1331\nx=511, y=980..984\nx=349, y=1122..1127\nx=532, y=383..393\nx=416, y=511..519\ny=1370, x=356..362\ny=119, x=548..559\nx=551, y=1135..1155\ny=1389, x=331..351\ny=1876, x=382..386\ny=1882, x=437..442\nx=464, y=1593..1596\nx=341, y=1740..1742\ny=1596, x=464..466\ny=556, x=419..435\nx=323, y=490..496\ny=577, x=513..517\ny=2020, x=320..340\nx=531, y=1939..1950\nx=344, y=999..1006\nx=420, y=862..882\ny=1772, x=399..405\ny=369, x=532..543\nx=513, y=1705..1728\nx=561, y=1642..1653\ny=286, x=355..381\nx=351, y=855..858\ny=699, x=386..396\ny=456, x=407..412\nx=346, y=1928..1933\ny=1148, x=384..386\nx=432, y=123..133\nx=439, y=1458..1459\nx=396, y=1572..1577\nx=556, y=344..354\ny=393, x=511..532\ny=2018, x=417..433\nx=348, y=645..668\nx=558, y=1160..1171\nx=474, y=276..279\nx=382, y=1161..1173\nx=348, y=6..28\nx=430, y=1137..1157\nx=453, y=888..901\ny=2013, x=424..427\nx=435, y=296..303\nx=367, y=805..815\ny=1343, x=347..351\nx=383, y=433..458\ny=390, x=517..521\nx=471, y=1205..1231\ny=307, x=320..326\ny=28, x=408..420\ny=839, x=436..463\nx=521, y=388..390\nx=340, y=1375..1386\nx=551, y=753..773\nx=457, y=1653..1675\nx=460, y=1031..1045\nx=507, y=678..706\nx=553, y=1090..1102\ny=456, x=342..350\nx=482, y=1480..1507\ny=1815, x=328..346\nx=469, y=699..707\ny=1829, x=556..558\ny=1769, x=355..364\ny=349, x=374..377\nx=466, y=1387..1397\nx=419, y=1457..1459\nx=507, y=423..433\ny=804, x=410..435\nx=410, y=69..70\ny=43, x=502..507\nx=485, y=1122..1141\ny=1652, x=527..540\nx=541, y=1907..1917\nx=521, y=939..967\ny=718, x=513..530\nx=407, y=574..580\nx=408, y=1566..1580\nx=479, y=738..751\ny=1054, x=466..468\nx=399, y=1706..1725\ny=618, x=437..453\ny=1593, x=464..466\nx=377, y=189..208\ny=1059, x=503..527\nx=548, y=106..119\ny=1595, x=390..393\nx=384, y=1141..1148\nx=536, y=281..291\nx=425, y=1607..1613\nx=355, y=1774..1777\nx=371, y=1397..1408\nx=514, y=461..472\nx=468, y=1611..1614\nx=432, y=1953..1955\nx=552, y=1069..1071\ny=2038, x=407..410\nx=484, y=507..519\nx=536, y=1983..1999\nx=475, y=1058..1075\ny=1471, x=512..533\nx=412, y=1013..1032\nx=418, y=396..406\nx=389, y=620..648\nx=392, y=416..421\nx=400, y=1141..1148\nx=369, y=691..715\ny=1489, x=452..474\ny=917, x=479..506\ny=536, x=509..512\ny=729, x=476..494\ny=691, x=435..437\nx=385, y=1669..1680\nx=494, y=504..516\nx=379, y=604..606\nx=549, y=576..580\ny=1903, x=516..524\nx=566, y=260..271\nx=445, y=1413..1427\nx=376, y=1544..1556\nx=457, y=953..962\nx=388, y=1161..1173\nx=549, y=1598..1616\nx=400, y=927..942\nx=472, y=1516..1539\nx=513, y=1532..1543\ny=1268, x=490..516\nx=507, y=1807..1813\nx=424, y=453..469\ny=906, x=483..506\nx=331, y=879..881\nx=533, y=304..331\nx=441, y=942..951\ny=1440, x=425..446\nx=537, y=1936..1953\nx=498, y=465..477\nx=472, y=912..925\nx=370, y=954..972\nx=499, y=828..842\ny=1664, x=445..449\nx=488, y=999..1017\ny=78, x=329..355\nx=556, y=2031..2034\nx=519, y=493..516\ny=1148, x=397..400\nx=338, y=1515..1533\ny=1505, x=380..398\nx=542, y=1089..1102\nx=464, y=133..146\nx=418, y=1682..1696\ny=209, x=437..456\ny=1491, x=338..361\nx=537, y=259..269\nx=465, y=876..890\nx=516, y=1877..1903\nx=472, y=957..959\ny=1313, x=418..429\ny=773, x=544..551\ny=1134, x=392..415\nx=410, y=285..308\ny=964, x=530..533\nx=369, y=218..238\ny=1884, x=460..468\ny=54, x=528..554\nx=390, y=518..540\nx=384, y=517..540\ny=614, x=540..547\ny=1451, x=341..357\nx=369, y=1802..1815\ny=940, x=479..483\nx=474, y=788..800\nx=505, y=1002..1007\nx=376, y=1869..1881\nx=525, y=103..128\nx=528, y=262..274\nx=393, y=1588..1595\ny=1886, x=428..449\nx=366, y=1850..1862\ny=878, x=531..534\ny=1350, x=411..414\nx=514, y=421..430\nx=516, y=1105..1118\ny=1239, x=387..405\nx=363, y=1785..1788\nx=488, y=1899..1904\nx=528, y=818..824\nx=361, y=262..263\nx=487, y=1649..1666\nx=467, y=875..890\ny=781, x=507..514\nx=565, y=710..731\nx=349, y=1418..1428\ny=1332, x=324..331\ny=380, x=366..373\nx=434, y=980..1000\nx=350, y=743..765\nx=487, y=1988..2010\nx=501, y=1699..1704\nx=460, y=1780..1786\ny=1007, x=505..519\nx=439, y=175..186\nx=555, y=1160..1171\nx=524, y=424..433\ny=356, x=560..562\nx=444, y=1469..1473\nx=394, y=1929..1942\nx=512, y=527..536\nx=362, y=953..972\ny=229, x=427..531\nx=373, y=368..380\ny=1671, x=422..425\nx=462, y=1093..1096\nx=549, y=435..440\ny=371, x=433..442\nx=540, y=467..484\nx=467, y=1353..1361\nx=467, y=1439..1445\ny=128, x=374..387\nx=508, y=1453..1473\nx=444, y=886..895\ny=1331, x=478..480\ny=1185, x=555..563\nx=554, y=2031..2034\ny=918, x=437..454\nx=435, y=796..804\ny=96, x=512..534\ny=1878, x=382..386\ny=2015, x=550..562\ny=1554, x=410..418\nx=358, y=153..157\nx=451, y=396..419\nx=525, y=169..178\nx=566, y=379..385\nx=433, y=457..462\ny=1524, x=348..354\nx=455, y=111..131\nx=398, y=436..463\nx=486, y=680..699\ny=890, x=465..467\ny=1617, x=371..375\ny=131, x=445..455\nx=472, y=1325..1334\nx=388, y=363..386\nx=474, y=1768..1793\nx=520, y=171..181\nx=489, y=1412..1423\nx=473, y=1429..1438\ny=334, x=500..504\nx=514, y=727..730\nx=448, y=1941..1958\nx=450, y=967..977\ny=73, x=426..449\nx=331, y=1378..1389\nx=478, y=1992..2005\nx=494, y=1925..1949\nx=523, y=1566..1567\ny=1647, x=412..440\nx=559, y=105..119\ny=67, x=455..469\nx=347, y=1460..1469\ny=89, x=430..439\ny=1533, x=332..338\nx=428, y=1531..1547\nx=486, y=999..1017\nx=444, y=942..951\ny=571, x=348..354\nx=524, y=725..736\nx=539, y=322..334\ny=271, x=564..566\nx=410, y=1493..1507\ny=72, x=545..549\ny=1060, x=442..446\nx=432, y=1250..1263\nx=355, y=1505..1507\nx=377, y=620..648\nx=534, y=1883..1890\ny=1127, x=407..409\nx=344, y=1664..1687\nx=546, y=1643..1653\nx=355, y=73..78\nx=414, y=1383..1390\ny=883, x=442..460\nx=511, y=1937..1953\nx=512, y=74..96\nx=489, y=932..944\nx=359, y=1596..1604\ny=291, x=536..557\ny=1327, x=343..369\nx=538, y=1110..1129\nx=393, y=1346..1365\nx=376, y=1144..1153\nx=325, y=1556..1561\nx=470, y=7..24\nx=472, y=436..439\nx=374, y=124..128\ny=477, x=478..498\nx=513, y=444..454\nx=424, y=2004..2013\ny=1363, x=439..456\nx=429, y=1954..1955\nx=520, y=153..164\nx=470, y=1353..1361\ny=1899, x=433..449\nx=511, y=1678..1699\nx=332, y=1596..1604\nx=507, y=981..984\nx=363, y=1153..1181\ny=1997, x=322..417\nx=487, y=131..134\ny=208, x=364..377\nx=544, y=1216..1235\ny=819, x=450..493\nx=362, y=1521..1535\nx=498, y=1346..1372\ny=1949, x=494..503\nx=499, y=865..885\ny=354, x=537..556\nx=512, y=1469..1471\nx=545, y=1692..1702\ny=2031, x=554..556\ny=925, x=423..472\ny=668, x=348..353\nx=366, y=368..380\nx=463, y=829..839\nx=392, y=803..824\nx=460, y=871..883\nx=435, y=157..170\nx=357, y=1889..1900\ny=1392, x=418..428\ny=1618, x=439..461\nx=329, y=73..78\ny=1048, x=513..521\nx=419, y=376..390\nx=533, y=1469..1471\nx=509, y=527..536\ny=824, x=506..528\nx=377, y=1322..1325\ny=220, x=419..422\nx=389, y=1848..1860\ny=1567, x=498..523\nx=410, y=795..804\nx=505, y=1371..1377\ny=1176, x=376..394\ny=1769, x=367..386\ny=1498, x=387..390\ny=800, x=539..543\ny=1918, x=334..406\nx=323, y=336..339\ny=108, x=488..509\nx=560, y=342..356\nx=519, y=1002..1007\nx=489, y=1386..1397\nx=332, y=1620..1626\nx=387, y=795..798\ny=50, x=460..488\ny=862, x=480..496\nx=342, y=1539..1545\nx=390, y=1486..1498\nx=479, y=930..940\nx=512, y=1898..1904\nx=502, y=30..43\ny=1561, x=325..335\nx=527, y=1645..1652\nx=350, y=393..416\ny=1265, x=499..509\nx=380, y=1692..1703\nx=506, y=914..917\nx=400, y=323..326\ny=1408, x=432..438\ny=266, x=380..388\ny=469, x=424..450\nx=380, y=256..266\ny=472, x=506..514\nx=371, y=1091..1095\nx=408, y=1608..1613\ny=1372, x=479..498\ny=263, x=336..361\nx=394, y=1784..1806\nx=381, y=275..286\ny=1218, x=375..394\ny=184, x=397..403\ny=1881, x=376..395\ny=288, x=548..550\ny=1730, x=349..369\ny=1508, x=562..566\nx=564, y=994..1016\nx=348, y=560..571\nx=391, y=586..594\ny=1787, x=482..491\ny=1130, x=407..409\nx=550, y=284..288\nx=520, y=244..247\ny=870, x=489..492\ny=580, x=401..407\nx=352, y=1227..1246\nx=360, y=1621..1636\nx=375, y=1735..1745\nx=466, y=699..707\ny=631, x=409..411\ny=395, x=460..473\nx=330, y=248..256\ny=1045, x=437..460\nx=356, y=1663..1687\nx=533, y=1332..1356\nx=460, y=387..395\nx=322, y=1044..1050\nx=524, y=478..494\ny=170, x=435..441\nx=546, y=341..349\nx=550, y=1458..1464\nx=322, y=1655..1667\nx=452, y=1487..1489\ny=269, x=535..537\nx=514, y=1179..1186\nx=480, y=416..443\nx=367, y=479..490\nx=543, y=1737..1742\nx=467, y=768..773\nx=420, y=1217..1223\ny=1325, x=377..398\nx=417, y=1987..1997\nx=389, y=753..778\ny=727, x=511..514\nx=526, y=645..662\nx=406, y=1905..1918\ny=584, x=540..555\ny=158, x=324..343\nx=371, y=1672..1683\nx=509, y=1263..1265\ny=716, x=557..560\ny=1329, x=478..480\nx=454, y=1942..1959\nx=339, y=343..344\ny=1173, x=442..444\nx=479, y=914..917\nx=357, y=993..1011\nx=362, y=1356..1370\nx=357, y=1335..1346\nx=451, y=526..527\ny=1306, x=358..375\nx=555, y=572..584\ny=1102, x=542..553\nx=354, y=561..571\nx=419, y=1928..1942\nx=334, y=1168..1186\nx=552, y=1371..1390\nx=410, y=1218..1223\ny=1766, x=375..380\ny=1687, x=344..356\nx=523, y=1176..1201\nx=483, y=866..885\nx=369, y=1694..1706\nx=373, y=1034..1049\nx=472, y=933..944\nx=472, y=1967..1973\nx=421, y=82..99\ny=1506, x=416..428\ny=594, x=391..415\ny=595, x=449..455\nx=559, y=932..949\nx=506, y=461..472\nx=419, y=512..519\ny=884, x=386..389\nx=355, y=1762..1769\ny=1298, x=328..332\nx=487, y=1121..1141\nx=439, y=1356..1363\nx=444, y=1173..1179\nx=370, y=146..161\nx=522, y=1109..1129\ny=1337, x=561..564\nx=379, y=2019..2029\ny=726, x=485..488\ny=244, x=356..359\ny=284, x=548..550\nx=430, y=86..89\nx=337, y=801..822\ny=1845, x=441..455\ny=921, x=437..454\nx=336, y=829..833\ny=881, x=329..331\nx=557, y=708..716\nx=552, y=1565..1586\nx=544, y=752..773\ny=1644, x=366..384\nx=551, y=302..313\nx=527, y=102..128\nx=460, y=701..711\nx=537, y=1229..1232\nx=529, y=572..585\nx=358, y=1876..1878\nx=456, y=197..209\nx=347, y=42..57\nx=406, y=1099..1112\nx=437, y=1008..1017\ny=1791, x=357..375\ny=1074, x=540..563\nx=514, y=757..781\ny=773, x=467..470\ny=1535, x=362..383\nx=355, y=924..935\nx=560, y=708..716\nx=530, y=1122..1126\nx=511, y=1179..1186\nx=437, y=615..618\nx=473, y=1941..1959\ny=731, x=563..565\nx=474, y=1486..1489\nx=386, y=673..699\nx=462, y=1965..1979\nx=480, y=764..776\ny=711, x=460..476\nx=530, y=962..964\nx=431, y=979..1000\nx=389, y=1830..1832\nx=429, y=1294..1313\ny=1973, x=467..472\nx=324, y=1340..1343\ny=959, x=468..472\nx=452, y=1052..1063\ny=800, x=458..474\nx=348, y=1523..1524\nx=549, y=363..373\nx=341, y=1621..1626\ny=859, x=461..466\nx=392, y=1308..1315\ny=887, x=522..550\nx=521, y=1048..1051\nx=391, y=1671..1683\ny=373, x=523..549\nx=423, y=1184..1198\ny=529, x=437..445\nx=338, y=1361..1363\ny=782, x=431..441\nx=531, y=216..229\ny=516, x=491..494\nx=364, y=170..180\nx=447, y=1305..1331\nx=422, y=816..843\ny=1953, x=344..369\nx=503, y=426..438\nx=456, y=1357..1363\nx=444, y=334..349\ny=1112, x=406..429\nx=411, y=400..403\nx=490, y=1533..1543\nx=507, y=30..43\nx=480, y=1992..2005\nx=487, y=1354..1366\nx=336, y=1237..1243\ny=1066, x=420..430\ny=596, x=330..356\nx=411, y=1330..1350\nx=568, y=301..313\ny=1390, x=396..414\ny=1141, x=485..487\nx=467, y=1967..1973\nx=391, y=1706..1725\ny=1000, x=431..434\ny=576, x=547..549\nx=382, y=1830..1832\nx=470, y=768..773\nx=344, y=555..568\ny=1365, x=378..393\nx=343, y=1414..1436\ny=1263, x=374..432\nx=412, y=940..962\ny=1367, x=332..349\ny=1171, x=460..473\nx=527, y=1043..1059\nx=445, y=83..99\ny=349, x=430..444\nx=407, y=400..403\ny=1343, x=324..334\ny=1748, x=442..467\nx=367, y=534..553\nx=563, y=1597..1616\nx=514, y=303..331\ny=1878, x=358..365\nx=374, y=1628..1641\nx=369, y=1737..1749\nx=443, y=685..697\nx=343, y=1191..1213\ny=432, x=528..530\ny=1641, x=374..376\nx=487, y=1479..1507\nx=449, y=179..182\nx=480, y=1107..1111\nx=425, y=944..959\nx=487, y=827..842\nx=386, y=88..107\nx=563, y=1177..1185\ny=390, x=419..422\nx=447, y=967..977\nx=349, y=1481..1488\ny=46, x=401..426\ny=671, x=451..472\ny=754, x=474..494\nx=338, y=1809..1811\nx=564, y=372..374\nx=422, y=49..53\ny=1667, x=322..333\ny=53, x=398..422\nx=441, y=158..170\nx=381, y=1669..1680\nx=468, y=1860..1884\nx=341, y=1440..1451\ny=1667, x=445..449\ny=179, x=444..449\ny=2034, x=554..556\nx=540, y=572..584\nx=421, y=1075..1087\nx=437, y=1032..1045\ny=1287, x=519..523\nx=547, y=605..614\ny=439, x=472..474\nx=375, y=1757..1766\ny=2038, x=548..566\ny=433, x=507..524\ny=1907, x=539..541\nx=386, y=1655..1657\ny=1445, x=454..467\nx=477, y=596..607\nx=429, y=1098..1112\nx=489, y=870..881\nx=460, y=1150..1171\nx=442, y=1050..1060\nx=375, y=1780..1791\nx=539, y=507..533\nx=431, y=756..782\nx=503, y=968..992\nx=445, y=524..529\ny=421, x=547..563\ny=1699, x=511..513\nx=556, y=1809..1829\ny=1171, x=555..558\ny=887, x=386..389\nx=389, y=479..490\ny=1146, x=492..503\nx=507, y=758..781\ny=1547, x=424..428\ny=472, x=483..488\ny=400, x=407..411\nx=559, y=392..397\ny=1636, x=346..360\nx=545, y=518..521\nx=353, y=147..161\nx=425, y=1436..1440\ny=655, x=421..443\ny=648, x=377..389\ny=1890, x=534..548\nx=435, y=688..691\nx=328, y=262..270\nx=320, y=860..885\nx=538, y=1697..1699\ny=1303, x=363..366\ny=1539, x=472..483\nx=359, y=855..858\ny=58, x=498..502\nx=353, y=805..815\nx=558, y=1808..1829\nx=423, y=911..925\ny=1862, x=366..380\ny=962, x=412..431\nx=546, y=17..28\nx=543, y=367..369\nx=332, y=100..126\nx=393, y=1545..1556\ny=1982, x=374..396\nx=348, y=978..984\ny=2016, x=326..329\nx=368, y=867..893\nx=322, y=1236..1243\nx=360, y=1272..1284\ny=527, x=451..453\ny=972, x=362..370\nx=327, y=428..451\nx=360, y=1505..1507\ny=1683, x=371..391\nx=513, y=32..46\nx=355, y=274..286\nx=542, y=992..996\ny=901, x=434..453\ny=1186, x=511..514\nx=520, y=1960..1961\nx=562, y=1495..1508\nx=374, y=339..349\nx=474, y=436..439\nx=335, y=1425..1428\nx=363, y=1715..1727\ny=406, x=402..418\nx=550, y=868..887\nx=335, y=1089..1109\nx=325, y=5..28\nx=380, y=1757..1766\nx=397, y=1142..1148\ny=124, x=374..387\ny=303, x=435..455\ny=765, x=325..350\nx=517, y=1504..1519\nx=331, y=1329..1332\ny=1284, x=360..447\nx=532, y=1737..1742\nx=476, y=702..711\ny=146, x=513..530\nx=365, y=925..935\nx=366, y=1291..1303\ny=1793, x=453..474\ny=1198, x=383..423\nx=364, y=912..921\ny=1507, x=406..410\ny=344, x=339..346\nx=455, y=1913..1925\nx=440, y=1634..1647\ny=367, x=532..543\nx=403, y=173..184\ny=238, x=369..372\nx=416, y=364..383\nx=399, y=1421..1446\nx=436, y=829..839\ny=497, x=481..500\nx=351, y=1377..1389\ny=1933, x=338..346\nx=356, y=1538..1545\nx=530, y=715..718\nx=321, y=1121..1127\nx=530, y=1781..1785\ny=518, x=545..548\nx=333, y=1656..1667\nx=336, y=261..263\ny=1838, x=342..400\ny=1742, x=532..543\nx=417, y=1878..1890\nx=361, y=153..157\ny=859, x=365..384\ny=1702, x=527..545\nx=491, y=504..516\ny=1331, x=447..460\nx=513, y=136..146\ny=880, x=448..453\nx=439, y=86..89\ny=1815, x=369..386\nx=329, y=1739..1742\nx=398, y=50..53\nx=444, y=194..205\nx=450, y=988..1001\ny=407, x=517..519\nx=517, y=399..407\ny=1394, x=478..482\nx=458, y=787..800\nx=482, y=1783..1787\nx=480, y=856..862\nx=448, y=1469..1473\ny=42, x=387..394\ny=68, x=488..510\nx=453, y=615..618\nx=518, y=1939..1950\nx=539, y=794..800\ny=688, x=543..548\nx=453, y=1767..1793\ny=921, x=351..364\nx=419, y=983..999\ny=1161, x=507..511\nx=369, y=1315..1327\nx=450, y=1011..1023\nx=548, y=284..288\nx=328, y=1804..1815\nx=498, y=445..454\nx=473, y=386..395\nx=443, y=651..655\ny=1096, x=462..489\ny=1749, x=369..385\ny=958, x=388..399\ny=895, x=441..444\nx=535, y=259..269\nx=514, y=947..958\ny=539, x=502..518\nx=412, y=1821..1839\nx=361, y=329..357\ny=1006, x=341..344\nx=530, y=1919..1933\ny=1626, x=332..341\ny=1727, x=354..363\nx=500, y=486..497\nx=516, y=1255..1268\ny=1942, x=394..419\ny=1651, x=337..348\nx=564, y=615..631\ny=1184, x=431..457\nx=451, y=657..671\nx=363, y=1291..1303\nx=387, y=1486..1498\ny=1231, x=471..473\nx=554, y=371..374\nx=410, y=1530..1554\nx=382, y=1876..1878\nx=432, y=1010..1023\nx=320, y=2006..2020\ny=2029, x=379..389\nx=542, y=1425..1432\nx=414, y=1329..1350\nx=466, y=680..689\nx=383, y=1184..1198\nx=366, y=1631..1644\ny=1618, x=514..540\ny=1890, x=403..417\nx=478, y=1390..1394\nx=399, y=1744..1772\nx=508, y=572..585\nx=341, y=999..1006\nx=481, y=344..346\ny=1404, x=358..360\nx=422, y=1653..1671\nx=341, y=1336..1346\nx=493, y=808..819\ny=751, x=479..486\ny=1126, x=527..530\nx=403, y=68..70\nx=336, y=1809..1811\ny=1464, x=536..550\nx=431, y=941..962\ny=580, x=513..517\nx=389, y=210..212\ny=1431, x=403..405\ny=24, x=537..539\nx=369, y=1886..1896\ny=715, x=369..371\nx=548, y=2028..2038\nx=489, y=184..195\nx=562, y=213..224\ny=1604, x=332..359\ny=494, x=488..493\ny=1428, x=349..368\nx=346, y=1878..1890\nx=537, y=343..354\nx=417, y=2029..2042\nx=378, y=1347..1365\ny=540, x=409..422\ny=443, x=462..480\ny=1155, x=551..554\nx=462, y=1987..2010\nx=506, y=1331..1356\nx=566, y=2029..2038\nx=472, y=635..643\ny=279, x=452..474\ny=999, x=419..422\ny=414, x=509..525\ny=458, x=383..395\nx=350, y=490..496\ny=521, x=545..548\nx=371, y=1420..1446\ny=349, x=543..546\nx=554, y=932..949\ny=62, x=498..502\nx=381, y=877..902\nx=466, y=1593..1596\nx=340, y=1098..1104\nx=426, y=32..46\nx=343, y=131..158\nx=395, y=121..133\ny=977, x=447..450\ny=519, x=416..419\ny=1577, x=389..396\nx=545, y=1424..1432\nx=482, y=1390..1394\ny=1843, x=478..493\nx=403, y=1991..1994\nx=499, y=1604..1625\nx=558, y=1760..1783\nx=437, y=196..209\nx=513, y=715..718\nx=452, y=1136..1157\nx=415, y=587..594\nx=359, y=1415..1424\nx=483, y=1517..1539\nx=469, y=2021..2035\nx=536, y=1457..1464\ny=1386, x=340..343\nx=380, y=1228..1246\nx=457, y=174..186\nx=521, y=115..126\nx=547, y=576..580\nx=371, y=691..715\nx=419, y=208..220\ny=2010, x=462..487\ny=1315, x=484..490\nx=380, y=1480..1505\nx=383, y=329..357\ny=1950, x=518..531\nx=445, y=111..131\nx=473, y=1204..1231\nx=479, y=1059..1075\nx=566, y=429..444\nx=540, y=1596..1618\nx=368, y=1417..1428\nx=509, y=98..108\nx=407, y=1127..1130\ny=1213, x=343..370\ny=1315, x=392..400\nx=553, y=615..631\nx=472, y=850..862\ny=519, x=484..502\nx=457, y=969..980\nx=502, y=506..519\ny=1653, x=546..561\nx=469, y=64..67\ny=662, x=518..526\ny=1972, x=548..559\nx=365, y=1610..1621\nx=539, y=1907..1917\ny=1322, x=357..359\nx=531, y=876..878\ny=1201, x=504..523\ny=1664, x=373..397\nx=522, y=1507..1526\ny=1217, x=429..441\nx=395, y=1869..1881\nx=507, y=1959..1961\nx=488, y=98..108\ny=1556, x=376..393\nx=508, y=1831..1859\nx=506, y=1781..1785\nx=432, y=1406..1408\ny=942, x=372..400\ny=181, x=520..539\nx=533, y=962..964\nx=394, y=28..42\ny=689, x=463..466\ny=92, x=523..526\nx=540, y=1644..1652\nx=460, y=1304..1331\nx=367, y=1153..1181\ny=2042, x=397..417\nx=356, y=1357..1370\nx=480, y=969..979\ny=178, x=525..530\nx=434, y=14..24\ny=440, x=549..553\nx=332, y=1516..1533\ny=2005, x=478..480\nx=396, y=324..326\nx=379, y=11..26\nx=553, y=190..216\nx=405, y=1744..1772\nx=435, y=554..556\nx=376, y=1164..1176\nx=488, y=717..726\ny=1963, x=384..403\ny=1049, x=373..398\nx=450, y=452..469\ny=1999, x=520..536\nx=398, y=876..902\ny=984, x=507..511\nx=474, y=740..754\ny=980, x=437..457\nx=351, y=1398..1408\nx=386, y=1876..1878\ny=630, x=467..542\nx=548, y=518..521\nx=384, y=852..859\ny=1813, x=503..507\nx=453, y=525..527\nx=527, y=1122..1126\nx=342, y=1168..1186\nx=350, y=1501..1511\nx=329, y=879..881\nx=563, y=709..731\ny=1377, x=505..528\nx=466, y=857..859\nx=367, y=1232..1238\ny=496, x=323..350\ny=815, x=353..367\ny=454, x=498..513\nx=451, y=153..164\nx=412, y=440..456\nx=507, y=1135..1161\nx=392, y=1991..1994\nx=325, y=744..765\nx=401, y=573..580\nx=442, y=1173..1179\ny=984, x=320..348\ny=967, x=521..541\nx=475, y=635..643\ny=180, x=350..364\ny=1425, x=335..337\ny=1933, x=524..530\nx=506, y=899..906\nx=521, y=17..28\ny=1543, x=490..513\ny=1890, x=344..346\nx=557, y=282..291\ny=89, x=473..498\nx=479, y=1304..1317\nx=418, y=437..463\nx=551, y=1400..1403\nx=334, y=1340..1343\nx=543, y=341..349\nx=528, y=1371..1377\nx=427, y=2004..2013\nx=527, y=1693..1702\ny=730, x=511..514\nx=403, y=1951..1963\nx=408, y=20..28\ny=157, x=358..361\ny=421, x=392..420\ny=1519, x=505..517\ny=1830, x=382..389\ny=1682, x=520..548\ny=697, x=324..344\nx=418, y=1391..1392\nx=436, y=577..583\nx=320, y=979..984\nx=335, y=1555..1561\nx=409, y=1127..1130\ny=195, x=489..499\ny=373, x=489..495\ny=1967, x=467..472\nx=559, y=1953..1972\nx=369, y=1718..1730\nx=387, y=28..42\nx=375, y=1608..1617\nx=542, y=618..630\nx=433, y=2007..2018\ny=1181, x=363..367\ny=778, x=365..389\nx=388, y=256..266\nx=399, y=951..958\nx=443, y=1008..1017\ny=313, x=551..568\nx=408, y=1847..1860\nx=483, y=177..190\nx=448, y=878..880\nx=434, y=1320..1346\ny=1118, x=512..516\nx=427, y=685..697\nx=412, y=1635..1647\nx=420, y=21..28\ny=1263, x=469..473\ny=24, x=470..477\nx=376, y=1888..1900\nx=337, y=1425..1428\nx=437, y=970..980\nx=553, y=435..440\ny=1728, x=506..513\ny=675, x=479..497\nx=430, y=1319..1346\nx=462, y=415..443\nx=364, y=1761..1769\nx=562, y=342..356\nx=358, y=1294..1306\ny=128, x=525..527\nx=509, y=401..414\nx=334, y=992..1011\nx=518, y=646..662\nx=438, y=1407..1408\ny=776, x=460..480\ny=1432, x=542..545\nx=344, y=1098..1104\nx=425, y=1654..1671\nx=433, y=357..371\nx=463, y=490..518\ny=1742, x=329..341\nx=472, y=658..671\nx=506, y=9..19\nx=438, y=1492..1498\ny=419, x=432..451\nx=481, y=487..497\ny=962, x=457..478\ny=26, x=379..381\ny=274, x=528..544\nx=455, y=297..303\nx=420, y=1054..1066\nx=520, y=678..706\ny=1032, x=412..420\nx=520, y=1669..1682\nx=411, y=689..702\nx=534, y=876..878\nx=448, y=1074..1087\nx=430, y=123..133\nx=442, y=870..883\nx=320, y=830..833\nx=518, y=529..539\ny=1979, x=462..479\ny=1104, x=340..344\nx=455, y=581..595\nx=539, y=172..181\nx=362, y=390..410\nx=384, y=1630..1644\nx=424, y=1531..1547\ny=403, x=407..411\ny=346, x=479..481\nx=490, y=1293..1315\nx=436, y=1462..1477\nx=340, y=860..885\nx=420, y=1014..1032\ny=951, x=441..444\ny=1334, x=472..490\nx=326, y=286..307\nx=439, y=117..137\nx=474, y=970..979\nx=548, y=1954..1972\nx=449, y=194..205\nx=396, y=211..212\ny=540, x=384..390\ny=1788, x=363..366\nx=482, y=133..146\nx=322, y=429..451\nx=488, y=31..50\nx=519, y=1277..1287\nx=379, y=1735..1745\nx=506, y=819..824\nx=388, y=64..79\ny=436, x=472..474\nx=324, y=132..158\nx=342, y=1825..1838\ny=202, x=331..334\ny=1232, x=534..537\nx=460, y=1860..1884\ny=1001, x=450..465\nx=360, y=1395..1404\nx=439, y=1605..1618\nx=474, y=1589..1599\ny=1925, x=444..455\ny=1498, x=438..446\nx=362, y=1089..1109\nx=382, y=1591..1600\nx=357, y=1780..1791\ny=1706, x=369..387\ny=736, x=504..524\ny=999, x=341..344\nx=534, y=1229..1232\nx=536, y=1508..1526\nx=407, y=2026..2038\nx=407, y=1821..1839\ny=1666, x=462..487\ny=1243, x=322..336\ny=86, x=430..439\ny=1528, x=374..376\nx=494, y=741..754\nx=430, y=1054..1066\nx=376, y=1628..1641\ny=326, x=396..400\nx=503, y=1131..1146\ny=631, x=553..564\ny=862, x=454..472\nx=499, y=1263..1265\nx=502, y=58..62\nx=388, y=952..958\nx=422, y=377..390\nx=361, y=1478..1491\nx=419, y=1364..1374\nx=346, y=342..344\nx=432, y=396..419\ny=1526, x=522..536\nx=349, y=1717..1730\nx=445, y=1664..1667\ny=1041, x=488..490\ny=1832, x=382..389\nx=454, y=918..921\ny=1900, x=357..376\ny=385, x=549..566\nx=549, y=380..385\nx=561, y=1334..1337\nx=519, y=399..407\nx=513, y=1677..1699\nx=473, y=353..376\nx=483, y=462..472\ny=1469, x=330..347\ny=1095, x=369..371\nx=474, y=683..692\ny=580, x=547..549\nx=396, y=1384..1390\nx=388, y=389..410\ny=451, x=322..327\nx=553, y=466..484\nx=386, y=1803..1815\nx=368, y=65..79\nx=429, y=1192..1217\nx=508, y=132..134\nx=513, y=577..580\nx=323, y=802..822\nx=473, y=79..89\ny=568, x=335..344\nx=564, y=1333..1337\nx=474, y=115..126\nx=322, y=1987..1997\nx=443, y=474..487\nx=417, y=239..251\nx=338, y=1477..1491\nx=530, y=2006..2013\nx=437, y=688..691\nx=385, y=1738..1749\nx=369, y=1092..1095\nx=376, y=1526..1528\ny=935, x=355..365\nx=354, y=1715..1727\ny=1785, x=363..366\nx=340, y=2007..2020\nx=503, y=1808..1813\nx=466, y=1685..1701\nx=449, y=1874..1886\ny=374, x=554..564\ny=1704, x=479..501\nx=410, y=2026..2038\nx=404, y=233..245\nx=394, y=87..107\ny=386, x=388..408\nx=511, y=1136..1161\nx=563, y=418..421\ny=1235, x=521..544\nx=495, y=365..373\ny=1839, x=407..412\nx=466, y=1610..1614\ny=1361, x=467..470\ny=107, x=386..394\nx=566, y=1496..1508\nx=392, y=1123..1134\nx=332, y=1272..1298\ny=357, x=361..383\nx=492, y=1130..1146\nx=545, y=66..72\nx=479, y=1964..1979\ny=647, x=465..481\nx=566, y=1399..1403\nx=402, y=395..406\nx=407, y=440..456\ny=843, x=403..422\nx=541, y=940..967\nx=446, y=1436..1440\nx=554, y=1761..1783\ny=1488, x=347..349\nx=510, y=9..19\nx=479, y=656..675\ny=19, x=506..510\nx=357, y=1415..1424\ny=1811, x=336..338\nx=328, y=1272..1298\ny=1783, x=554..558\ny=996, x=537..542\nx=449, y=474..487\nx=373, y=1653..1664\nx=383, y=1522..1535\nx=502, y=530..539\nx=504, y=1413..1423\nx=544, y=261..274\nx=391, y=1069..1085\nx=485, y=1354..1366\ny=1473, x=496..508\ny=190, x=460..483\nx=490, y=1254..1268\nx=537, y=21..24\nx=427, y=216..229\nx=550, y=1992..2015\nx=503, y=1924..1949\nx=479, y=1699..1704\ny=1423, x=489..504\ny=247, x=520..525\nx=422, y=1785..1806\nx=351, y=1333..1343\ny=137, x=420..439\nx=455, y=65..67\nx=537, y=993..996\nx=374, y=42..57\nx=476, y=719..729\ny=1320, x=357..359\nx=452, y=275..279\nx=365, y=853..859\nx=334, y=1905..1918\nx=450, y=809..819\nx=548, y=1669..1682\nx=460, y=764..776\nx=522, y=868..887\nx=549, y=723..733\ny=1317, x=479..481\ny=1023, x=432..450\nx=540, y=1051..1074\nx=324, y=1045..1050\ny=876, x=531..534\nx=366, y=1785..1788\nx=525, y=402..414\ny=1720, x=447..459\ny=1238, x=367..373\nx=539, y=21..24\nx=446, y=1990..2012\nx=326, y=2004..2016\ny=1614, x=466..468\nx=395, y=433..458\ny=1725, x=391..399\ny=606, x=379..392\nx=356, y=575..596\ny=1186, x=334..342\ny=881, x=489..492\nx=543, y=793..800\nx=520, y=1982..1999\ny=28, x=325..348\nx=367, y=1759..1769\nx=489, y=426..438\nx=389, y=884..887\ny=251, x=417..542\nx=327, y=335..339\nx=397, y=2028..2042\nx=417, y=2006..2018\nx=434, y=889..901\nx=457, y=1168..1184\nx=488, y=549..561\nx=464, y=353..376\nx=447, y=1271..1284\nx=400, y=1309..1315\nx=344, y=1940..1953\nx=371, y=1608..1617\ny=1586, x=550..552\ny=516, x=509..519\ny=518, x=463..466\nx=513, y=1048..1051\nx=467, y=619..630\nx=353, y=535..553\nx=503, y=1043..1059\ny=1446, x=371..399\ny=1511, x=350..369\ny=494, x=524..530\nx=504, y=1175..1201\ny=1959, x=454..473\nx=459, y=1706..1720\ny=1473, x=444..448\nx=498, y=1565..1567\nx=433, y=1891..1899\ny=915, x=544..559\ny=339, x=323..327\nx=405, y=1226..1239\nx=419, y=944..959\nx=446, y=1050..1060\nx=403, y=1879..1890\nx=460, y=31..50\ny=134, x=487..508\ny=1013, x=500..527\ny=1011, x=334..357\nx=348, y=1639..1651\nx=525, y=244..247\ny=463, x=398..418\nx=440, y=457..462\nx=426, y=54..73\nx=359, y=1320..1322\ny=1363, x=338..342\nx=422, y=536..540\nx=437, y=1879..1882\nx=329, y=2004..2016\nx=399, y=1590..1600\nx=389, y=2020..2029\nx=530, y=169..178\ny=57, x=347..374\nx=396, y=1973..1982\nx=453, y=878..880\nx=486, y=738..751\nx=428, y=1493..1506\ny=1680, x=381..385\nx=387, y=1695..1706\nx=479, y=1345..1372\nx=465, y=987..1001\ny=1374, x=419..422\ny=2013, x=507..530\nx=403, y=1411..1431\nx=460, y=1107..1111\n")
(def answer
(let [clay (parse-clay my-input)
y-min (apply min (map second clay))
y-max (apply max (map second clay))]
(->>
(simulate clay [500 0]))))
;(filter (fn [[[_ y] contents]]
; (and (#{:flowing-water :still-water} contents)
; (<= y-min y y-max))))
;count)))
(do (map println (print-cells answer))
nil)
(defn solve-1 [])
;; TODO
(defn solve-2 [])
;; TODO
;(deftest part-1
; (is (= (str answer-1)
; (str (solve-1)))))
;
;(deftest part-2
; (is (= (str answer-2)
; (str (solve-2)))))
;;;; Scratch
(comment
(t/run-tests))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment