Skip to content

Instantly share code, notes, and snippets.

@jhbertra
Last active December 6, 2017 06:10
Show Gist options
  • Save jhbertra/962e9fd8cd6a7ad43742bf770f4a8cda to your computer and use it in GitHub Desktop.
Save jhbertra/962e9fd8cd6a7ad43742bf770f4a8cda to your computer and use it in GitHub Desktop.
Advent of Code 2017
valIfEqual :: Int -> Int -> Int
valIfEqual x x' =
if x == x' then x
else 0
invCaptcha1 :: Int -> [Int] -> Int
invCaptcha1 fst (x:[]) = valIfEqual fst x
invCaptcha1 fst (x:x':xs) = (valIfEqual x x') + invCaptcha1 fst (x':xs)
invCaptcha2 :: Int -> [Int] -> Int
invCaptcha2 0 _ = 0
invCaptcha2 i list@(x:xs) =
let x' = list !! ((length list) `quot` 2)
in (valIfEqual x x') + invCaptcha2 (i - 1) (xs ++ [x])
makeInvCaptcha :: String -> ([Int] -> Int) -> Int
makeInvCaptcha str comp = comp (map (read . (:"")) str :: [Int])
main :: IO ()
main =
do
{ putStrLn "Part 1:"
; putStrLn $ show $ invCaptcha $ \(fst:xs) -> invCaptcha1 fst (fst:xs)
; putStrLn "Part 2:"
; putStrLn $ show $ invCaptcha $ \xs -> invCaptcha2 (length xs) xs
}
where invCaptcha = makeInvCaptcha "3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763"
minMaxDiff :: [Int] -> Int
minMaxDiff row = (maximum row) - (minimum row)
quotOfOnlyDivisible :: [Int] -> Int
quotOfOnlyDivisible [] = 0
quotOfOnlyDivisible (x:xs) =
case quotOfOnlyDivisible' x xs of
Just i -> i
Nothing -> quotOfOnlyDivisible xs
quotOfOnlyDivisible' :: Int -> [Int] -> Maybe Int
quotOfOnlyDivisible' cur [] = Nothing
quotOfOnlyDivisible' cur (x:xs)
| cur `mod` x == 0 = Just $ cur `div` x
| x `mod` cur == 0 = Just $ x `div` cur
| otherwise = quotOfOnlyDivisible' cur xs
checksum :: ([Int] -> Int) -> [[Int]] -> Int
checksum rowFolder = foldl (\total row -> total + rowFolder row) 0
main :: IO ()
main =
do
{ putStrLn "First checksum:"
; putStrLn $ show $ checksum minMaxDiff input
; putStrLn "Second checksum:"
; putStrLn $ show $ checksum quotOfOnlyDivisible input
}
where
input =
[ [ 409, 194, 207, 470, 178, 454, 235, 333, 511, 103, 474, 293, 525, 372, 408, 428 ]
, [ 4321, 2786, 6683, 3921, 265, 262, 6206, 2207, 5712, 214, 6750, 2742, 777, 5297, 3764, 167 ]
, [ 3536, 2675, 1298, 1069, 175, 145, 706, 2614, 4067, 4377, 146, 134, 1930, 3850, 213, 4151 ]
, [ 2169, 1050, 3705, 2424, 614, 3253, 222, 3287, 3340, 2637, 61, 216, 2894, 247, 3905, 214 ]
, [ 99, 797, 80, 683, 789, 92, 736, 318, 103, 153, 749, 631, 626, 367, 110, 805 ]
, [ 2922, 1764, 178, 3420, 3246, 3456, 73, 2668, 3518, 1524, 273, 2237, 228, 1826, 182, 2312 ]
, [ 2304, 2058, 286, 2258, 1607, 2492, 2479, 164, 171, 663, 62, 144, 1195, 116, 2172, 1839 ]
, [ 114, 170, 82, 50, 158, 111, 165, 164, 106, 70, 178, 87, 182, 101, 86, 168 ]
, [ 121, 110, 51, 122, 92, 146, 13, 53, 34, 112, 44, 160, 56, 93, 82, 98 ]
, [ 4682, 642, 397, 5208, 136, 4766, 180, 1673, 1263, 4757, 4680, 141, 4430, 1098, 188, 1451 ]
, [ 158, 712, 1382, 170, 550, 913, 191, 163, 459, 1197, 1488, 1337, 900, 1182, 1018, 337 ]
, [ 4232, 236, 3835, 3847, 3881, 4180, 4204, 4030, 220, 1268, 251, 4739, 246, 3798, 1885, 3244 ]
, [ 169, 1928, 3305, 167, 194, 3080, 2164, 192, 3073, 1848, 426, 2270, 3572, 3456, 217, 3269 ]
, [ 140, 1005, 2063, 3048, 3742, 3361, 117, 93, 2695, 1529, 120, 3480, 3061, 150, 3383, 190 ]
, [ 489, 732, 57, 75, 61, 797, 266, 593, 324, 475, 733, 737, 113, 68, 267, 141 ]
, [ 3858, 202, 1141, 3458, 2507, 239, 199, 4400, 3713, 3980, 4170, 227, 3968, 1688, 4352, 4168 ]
]
getPos :: Int -> Int -> (Int, Int)
getPos num cellRank
| num == 1 && cellRank == 1 = (0,0)
| num < firstInOuterLayer =
let
(x, y) = getPos num (cellRank - 2)
in
(x + 1, y + 1)
| num < firstInOuterLayer + sideLength = (cellRank - 1, cellRank - 2 - (num - firstInOuterLayer))
| num < firstInOuterLayer + 2 * sideLength = ((firstInOuterLayer + 2 * sideLength) - num - 1, 0)
| num < firstInOuterLayer + 3 * sideLength = (0, num - firstInOuterLayer - 2 * sideLength + 1)
| otherwise = (num - (cellRank ^ 2 - cellRank + 1), cellRank - 1)
where
firstInOuterLayer = (cellRank - 2) ^ 2 + 1
sideLength = cellRank - 1
getRank :: Int -> Int
getRank num
| root2Ciel `mod` 2 == 0 = root2Ciel + 1
| otherwise = root2Ciel
where root2Ciel = (ceiling $ sqrt $ fromIntegral num) :: Int
promoteGrid :: [(Int, (Int, Int))] -> [(Int, (Int, Int))]
promoteGrid = map (\(n, (x, y)) -> (n, (x + 1, y + 1)))
spiral2 :: Int -> Int -> Int -> [(Int, (Int, Int))] -> [(Int, (Int, Int))]
spiral2 step steps rank grid
| step > steps = grid
| (getRank step) > rank = spiral2 step steps (rank + 2) (promoteGrid grid)
| otherwise =
let
(nX, nY) = getPos step rank
adjacent = filter (\(n, (x, y)) -> abs (nX - x) <= 1 && abs (nY - y) <= 1) grid
n = sum $ map (\(n, _) -> n) adjacent
in
spiral2 (step + 1) steps rank ((n, (nX, nY)):grid)
findAnswer2 :: Int -> Int -> Int
findAnswer2 steps limit =
let val = fst $ head $ spiral2 2 steps 1 [(1,(0,0))]
in
if val > limit then
val
else
findAnswer2 (steps + 1) limit
main :: IO ()
main =
do
{ putStrLn "Answer1:"
; let
rank = getRank input
(x0, y0) = getPos 1 rank
(x1, y1) = getPos input rank
in
putStrLn $ show $ (abs $ x1 - x0) + (abs $ y1 - y0)
; putStrLn "Answer2:"
; putStrLn $ show $ findAnswer2 1 input
}
where input = 325489
import Data.List
containsMatchingPair :: (String -> String -> Bool) -> [String] -> Bool
containsMatchingPair _ [] = False
containsMatchingPair _ [x] = False
containsMatchingPair pred (x:xs) =
if any (pred x) xs then
True
else
containsMatchingPair pred xs
hasDuplicates :: [String] -> Bool
hasDuplicates = containsMatchingPair (==)
areAnagrams :: String -> String -> Bool
areAnagrams s1 s2 = (sort s1) == (sort s2)
hasAnagrams :: [String] -> Bool
hasAnagrams = containsMatchingPair areAnagrams
main :: IO ()
main =
do
{ putStrLn "Answer 1:"
; putStrLn $ show $ length $ filter (not . hasDuplicates) input
; putStrLn "Answer 2:"
; putStrLn $ show $ length $ filter (not . hasAnagrams) input
}
where
input =
map words
[ "kvvfl kvvfl olud wjqsqa olud frc"
, "slhm rdfm yxb rsobyt rdfm"
, "pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr"
, "ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi"
, "dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef"
, "gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn"
, "roan kqnztj edc zpjwb"
, "yzc roc qrygby rsvts nyijgwr xnpqz"
, "jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo"
, "nyeeg omn geyen ngyee rcjt rjuxh"
, "qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb"
, "rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm"
, "jnmomfc jnmomfc bkluz izn ovvm flsch bkluz"
, "odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo"
, "gjtszl gjtszl fruo fruo"
, "rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze"
, "flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll"
, "lnazok dze foi tqwjsk hpx qcql euzpj mwfrk"
, "ilb fmviby ivybmf gtx xtg"
, "rpauuu timere gyg wcolt ireetm safi"
, "croe szwmq bbhd lciird vhcci pdax"
, "hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs"
, "hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz"
, "ngw don ddvyds nlhkoa aaf gptumum ugtpmmu"
, "vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx"
, "obomgk bkcgo yso ttft vbw ckl wjgk"
, "fli qvw zhin dfpgfjb udsin nihz ovr tiewo"
, "tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx"
, "jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb"
, "uycn zxqm znft ayal znacus kvcyd ekv qqfpnh"
, "fqghur xtbtdd ztjrylr bpuikb ziyk"
, "rvakn uqbl ozitpdh uqbl dsej xehj"
, "laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh"
, "dyiy dyiy ihb qcyxr"
, "wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr"
, "fxczpmn cininu akcxs ggslxr riyxe ojisxe"
, "ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor"
, "jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd"
, "mroq mroq flsbu flsbu"
, "fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr"
, "cfh cxjvx cfh cfh uewshh"
, "bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn"
, "tvyvzk ezszod ntxr xtnr och"
, "knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf"
, "nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz"
, "aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm"
, "mgguob gobmug dzenpty gmogbu"
, "yvq eepof rgnree nerger fpb stfrln ernger"
, "hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj"
, "fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs"
, "qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww"
, "ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc"
, "qqm qdfya qxyx qmq qfday uqnfttt"
, "rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb"
, "mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb"
, "ilteux pyutyfx mau lrr bacak"
, "sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa"
, "tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb"
, "qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd"
, "rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw"
, "ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu"
, "iqqv iqqv neui iqqv"
, "ypsxm icqyup zyetrwq nbisrv"
, "viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye"
, "fhnacbg jghchh ghjhhc iue hwqmo"
, "vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd"
, "yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv"
, "xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj"
, "vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq"
, "dyuoc ywiyvch irfgl ywiyvch fxb fxb"
, "tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl"
, "oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg"
, "hew lbup botaj ltr jpd"
, "dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva"
, "xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx"
, "tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph"
, "hxl iwph iwph xnr otifm ljhre"
, "zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo"
, "sar gfor nkf hek nkf aql shc aql"
, "dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg"
, "omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty"
, "jxt cszylng ifht ixtuna azoi xutqlv jtx tjx"
, "usgm azuayp fgkby ezpyq jqwl ezofj"
, "tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw"
, "zomy zcquwnv lzx bvcna yods mjp dgsez"
, "blklyf xokd gpit tiysj yrwfhm tofx"
, "dtig vhdp omuj vhpd"
, "fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj"
, "sjxll sjxll pedvgb sjxll"
, "drvay gtzhgtx yrt okz nqf"
, "haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr"
, "prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel"
, "lzypt jdbtrad ogr jdbtrad heink"
, "rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf"
, "yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye"
, "qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs"
, "daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp"
, "mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu"
, "egqn gaa qgen urs mix zbn rhn"
, "ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm"
, "dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud"
, "yxqaa ups okbhgt iet qns tqn rnjqxgp"
, "npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo"
, "dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr"
, "dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej"
, "cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky"
, "lteucke xrgwy hszgzu hnyrcvb"
, "pfgsgwg dxzh fworek qbstod"
, "usemcrf psczxu gcjtr brls"
, "hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg"
, "bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov"
, "xkre lqvd juf lqvd xio xyg xyg"
, "tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv"
, "ucgl azlppu jvxqlj pest"
, "dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp"
, "odfq knox mkbcku pxucmuf lpjpol phl"
, "ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk"
, "izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe"
, "twyfps bmdbgtu qye qkwjms"
, "wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp"
, "opajag itwjhfu purnnvk opajag"
, "hpkopqp vnj aialpt lzrkzfs nwucez nwuezc"
, "mcx hzcjxq zbxr dsx tpknx fva"
, "rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr"
, "cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx"
, "eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag"
, "wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol"
, "yqwzh uujn ujun ujnu"
, "srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh"
, "mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser"
, "lhehwrs mqevb ygmv gri izop qgb ivm"
, "loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope"
, "phozre todsknr todsknr ibj mvllsar"
, "wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq"
, "xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki"
, "yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv"
, "kqz tdy goqwge ygn jgd"
, "szjjhdk zkpoo nxexz ebicc"
, "wzuemcj oyd qupulju iaakzmt vzkvz"
, "nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb"
, "bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc"
, "ani mggxf mcoixh zdd nai hbhzl mes bdpqr"
, "mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood"
, "cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box"
, "uumhdxd cmwgyf vepr rwqdkj exwk"
, "hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse"
, "mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey"
, "dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq"
, "xmkelgk fdukc cye legkxkm wwly"
, "enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc"
, "ggdn jnysl dsacffw ukj hdae cmzxku"
, "uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna"
, "keazuq ertql rauwl keazuq obmh rauwl ksrotm"
, "jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv"
, "yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs"
, "gaug ivvx ceb xujonak hbtfkeb ttciml cctoz"
, "dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq"
, "rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm"
, "wulxxu jyjek hclcp ogob viex wiqcupq"
, "tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb"
, "dtde bgvb smu vbbg zhlu"
, "lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl"
, "lleyr onha hkwulbm jfg"
, "bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev"
, "rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh"
, "kpewfd beq klilis klisli eeezut"
, "euqh hueq ldoo crqurv lvrwh tmaewp oodl"
, "bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi"
, "srjylou phavzjd wost uxkaq byh sluryoj"
, "ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv"
, "ijsx iedemek ktlz gtga tbal lbki gtga"
, "vmiaxn kefig kefig vngxz"
, "vrdmfvi qts vlvhq vlvhq dihmq"
, "cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp"
, "rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt"
, "egnuti ozat eltl ngueti"
, "qtcwoxq rmaf qtcwoxq qtcwoxq"
, "zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn"
, "tmr hhd dojid zwrj bhsim righ keqlep flzunou"
, "lwoquvy acjowxk tqudk oenvioh nyavyl"
, "rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei"
, "bjiumig lcbmbgh vleipx sfawua rnf"
, "gftfh qwb tfdroe xbno qhgofm vqfoe mux"
, "ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju"
, "nxjmjr egqwg arllu xqaahri lzc ivt uhsti"
, "sqiepba rcmts kvesv nvp"
, "tiksw tiksw rjni gbhvzm ctbq zuqfyvz"
, "ibsnm kfka aoqigwo sqouih rxz"
, "jmymq lxio adtmk umyu sxvzquq bporqnb heol fow"
, "mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu"
, "yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh"
, "nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv"
, "dthfwip zqnwa zqnwa zqnwa"
, "gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko"
, "wvpze seodz lpq lpq pmtp wsxs ffppx"
, "yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz"
, "esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw"
, "yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb"
, "yxi voxvtuw unwg jqqm"
, "igvjr ljz rus sru gbjtjt qfeg ztu zjl"
, "leof ocxns hbkoysh hbkoysh leof"
, "hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn"
, "mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf"
, "mtej rlolsnn zbl uykek dpkan gmz etxtgj"
, "mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi"
, "jvqpj bwt jvqpj bwt gxr"
, "qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi"
, "dntmcg jglm sxtnu sxtnu sxtnu"
, "fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw"
, "nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph"
, "xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee"
, "maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf"
, "liujcd vnlkouy dxkwc gto vhjvtw"
, "swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm"
, "igh iqicicf ghi pcxt srcrjx gmf gyscphv"
, "drplj drplj wopgpnk wytag wopgpnk"
, "zexe ilcqoh qiefb txkuv lirfzv"
, "ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms"
, "rox silka irhsvym kutus otasof tdneav pcagds"
, "mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo"
, "tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew"
, "frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem"
, "zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa"
, "qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug"
, "firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag"
, "ivey ivey mtvc mtvc"
, "lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc"
, "xreiqkc aawrovl pofcsg xreiqkc xreiqkc"
, "cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn"
, "izsod htkeqz entxn qtns prpcwu omfnmoy"
, "kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk"
, "epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom"
, "ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu"
, "zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw"
, "uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx"
, "khqciz som yklmm jceb khqciz jspy jceb"
, "ncwggv njvi nqox krtsn lnm"
, "bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb"
, "jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm"
, "wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr"
, "pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq"
, "hgge ghge vxmvz hqxgjdg zab guo gheg"
, "ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg"
, "cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt"
, "mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv"
, "tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm"
, "ylbm lxlz lybm lzxl"
, "wgtxoij zad slgsi cvnxfg iomswwl vmx"
, "hkm yinhnkj kmh kwkw kayknck chur styjif yknakck"
, "rtfwhkq rtfwhkq zsf zsf"
, "sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf"
, "lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew"
, "hnzer fbgqp aazta aazta lxaz lmgv aazta"
, "victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj"
, "gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah"
, "wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb"
, "kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj"
, "eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr"
, "ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag"
, "suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr"
, "cfc efwbzck ozkmcxv moczkvx ccf"
, "bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass"
, "sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm"
, "ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo"
, "grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok"
, "umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm"
, "utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj"
, "znb rsuqoa uxo svc"
, "obs lbifa cffi catpd"
, "qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf"
, "hatg bfgmb aght ghat"
, "kuq inp dun cknbun wmwsu drlmmg kyxc bdl"
, "bddybth swdbf jhi fva qpobio bjwm wjaztp jywi"
, "mgckz vhveu zkemhp zdf xtiqqew mlx wazgd"
, "umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz"
, "xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym"
, "agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih"
, "nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx"
, "qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj"
, "mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx"
, "ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd"
, "motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq"
, "tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy"
, "aczq ypw pgmzz srfn quatjgf"
, "cih ypapk bfxvr euvhkk gugru auhqui"
, "vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu"
, "lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr"
, "iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr"
, "grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc"
, "bopo chvwuhf qhd ieesl xey ieesl fnjcbe"
, "kic fyq hsucnu agwyl pzzmd hqksh psw"
, "mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz"
, "bypmix ptzxgmf xmtzgpf hrvzzq"
, "lbfw zwusma lbfw tuyyy"
, "lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya"
, "qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn"
, "nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq"
, "lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn"
, "vekteds utsuxdx utsuxdx vekteds"
, "feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh"
, "dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg"
, "vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc"
, "yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg"
, "obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy"
, "nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf"
, "pffzruz vogfosh dcs wje"
, "pohhf fhpoh oon yyz"
, "xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq"
, "wefcqrt gejw cwerqtf fttf gjew"
, "jfsvnmr osca epwtle pgfif sxom"
, "exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv"
, "rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt"
, "kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte"
, "cdinpx bfur mkj naz ihkheyr nohhoe"
, "ylris xeqcgup wap bbfih tgfoj"
, "ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg"
, "aedx edax dnfwq qndwf"
, "rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc"
, "qcnc iaw grjfsxe gnf gnf"
, "zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro"
, "zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr"
, "ipnqj opjf vabyoe wkwnd"
, "wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg"
, "acncv jmmbwlg oiphlm ifuo cvt"
, "pvmb egansnd zmh gcuzzci rrxpslv ubith"
, "uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns"
, "rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr"
, "seaebgz wlmtkre qguv qguv wlmtkre"
, "sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv"
, "tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof"
, "mmliphp ocup puoc eijjv"
, "gmajqpb ijki ijki kvz"
, "pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl"
, "gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs"
, "rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot"
, "ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv"
, "kmluh mie bby fwer chsinb ojglqr nqk mie"
, "yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm"
, "btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb"
, "hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb"
, "hdn znblw ifoblur bwzln dbv"
, "smofpbs vjuyiro llk lfzesga tybu tybu"
, "gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib"
, "evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt"
, "bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv"
, "xtuykl fjz mbikc xpnx hmey fjz fjz"
, "rkls nwdcsyx rkls rkls"
, "tygml untequ ybdfumz nqffbq uipc sove hfnqj"
, "ytecew vven koqn royynd qsn ksl qsn sdw"
, "hknlw qwho whoq oqwh"
, "lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd"
, "zsr axw kwtzcv tydzo kwtzcv lkxsm"
, "rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo"
, "dpd wblfwp wblfwp wblfwp ygahc tqjbaq"
, "gsw gsw pacgj xmrcz zmxhmch xmrcz"
, "pdq rhe xqmq lgpkhg fyffrot ovnqh wle"
, "tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv"
, "snch nxlgjgp jeyn sxoqfj jtage jtage iuice"
, "rtb coefuj grwg grwg rtb krhqnma vfhgbr"
, "vhegtl btorwxg szcev kbvkx itsk nlzpbed"
, "hiukrf ilzkm yllhh xsgwkdp zyy kjbv"
, "rfcg tdorci zcj wzftlv rfcg rfcg"
, "lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp"
, "sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh"
, "mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj"
, "gpf ims ynh ffrs vpa iemp gofh cgbauje"
, "secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu"
, "ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa"
, "nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab"
, "nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv"
, "qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa"
, "zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg"
, "byzgw rece iigdug ehif tpgje"
, "ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf"
, "dqyii milqqc qjgkojp qjgkojp ryde"
, "tdkyj tbrcud tsba vqtmb cjwxnf"
, "hqhmq wemvrce nagig pwnw nagig epg nagig vlsi"
, "tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti"
, "itgt tuwc itgt rvp itgt tigns eipl ksmru"
, "pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr"
, "qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq"
, "vpxik ypfr qytimvu qms oxbmw ppyfx"
, "fwwidn gdhd pyuexk snsz iwndfw"
, "lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd"
, "unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj"
, "goj tnrcml eyizngj txa xrkiw zvu igduz"
, "wek xrrlkna clyof rrlnxak"
, "cjm rmyuku vjom gtf"
, "buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj"
, "sudguo dxwplto rlebdh bkamu dxwplto"
, "crwkyxm yuz kjtdhom crwkyxm"
, "trhc sduorxr aizfryh rsudxor gbyc"
, "pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht"
, "jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv"
, "sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr"
, "vteyo fng lvr lxytn txpj milg"
, "wjx ahtmgo cgwcaj kaxae fhlvlqf"
, "ezj eetqhzu upwda iiefwlk vyvby"
, "imalvy yeghqe jwcu mvrod cwju"
, "bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy"
, "fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb"
, "rmq iqs yvprnyy iezqrzm wlqsrr"
, "yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz"
, "tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv"
, "nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc"
, "cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz"
, "sbcuxb wfur nnnfqjj fdwg huhe sbcuxb"
, "icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh"
, "izcp htykj xxmndoq amnspe htykj"
, "vverol oixwlny vqd tvfzu henc gnyrwr"
, "ytxio etytsx choynep zqapo hfjit"
, "lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy"
, "jlgpyp kkqysg oqjki hjohoug hbhta muilz zft"
, "sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt"
, "tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci"
, "zxi vmf vmf dpyg"
, "sfzxysw lcms bkojtv bkojtv"
, "opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy"
, "gkod luo qrosbp orbd rpsjzyd rlh gdok tze"
, "nusiuq nusiuq zeys ahufexc"
, "veno jntg avtmtdn qojxru zegdcql odfcetz pgehau"
, "uqun vigjm ykac ozlelj danmji bibugox"
, "rpuozh ajwru rbvuevv uhzsq"
, "iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt"
, "gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf"
, "qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl"
, "jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji"
, "nzsrmiq nmhse ilivrk kqv"
, "besmyzi imkgpt iekbjax abxeijk uvzs wwv"
, "jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry"
, "hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy"
, "ehg connnza ekt ddgokw"
, "mpbsoms uzhzl xevww ztt uzhzl"
, "lftybr firc awsud dsxdkk ltf ipjv dtx lcymth"
, "vkcpb gxtxq yioeq fexj xxgqt"
, "srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir"
, "yxjkl lyjkx jyxlk kgc xtz"
, "tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp"
, "qvt uhznqe bpvos vtq ddlebtd tqv"
, "xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg"
, "cwqnnrt rkkqyf dye yde fzl pthanj"
, "boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv"
, "qhalb gnazwc fhl iuti"
, "clnbjfo nnfs nnfs heymvr oarew oarew nxu"
, "lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly"
, "rrvi tsjp tsjp tsjp killji"
, "rpx hiclj cmwq ibhj nfd"
, "pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq"
, "rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb"
, "tkctdj hhkuc viskmy obw"
, "zvjkuj akeky ikj jqd hfhzbwe bkc"
, "btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc"
, "ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz"
, "uxrs ckyi xpmqm czzrkl cjp"
, "nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl"
, "dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq"
, "isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi"
, "qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka"
, "ltykfp gtzl olrp gxend vapee deq"
, "emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe"
, "vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy"
, "miha zgvyux rmraszo xwf"
, "kjaagk btm kjaagk wkewjrg kjaagk"
, "lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob"
, "svz dlk rijagg avxmg fkzwhk uro gegm"
, "dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn"
, "uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs"
, "wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu"
, "idp zmrrzp zmrrzp nktp xsnx rjsxn"
, "eybrnib ivgntl vaxsbpi eybrnib"
, "nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn"
, "nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk"
, "kwpkks ecikxu bcxswlt qvrxm sbcqmh"
, "kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg"
, "oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd"
, "hmcf hmcf xlhgc hmcf cdlm buofnx"
, "onjcj yluonz kzmk phqo phqo phqo"
, "ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf"
, "msohiqz aunk njki bfktdgi htmyrj mgx"
, "numlzrl rmnlulz glb ltt fhbajz gqxpu"
, "gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah"
, "btzpjem brpk vqr atxu rhlh rqv jmg fvyus"
, "phmxxgj ejx xje qtk hsb kqt npwj gqt"
, "hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi"
, "zfbnyz fwvh xrnrw usn zin daq iwjzj"
, "yykyg iwypfy hehqnl cjvk cevdrec"
, "gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion"
, "lpng nduid iqbpu nduid knrqd"
, "xwxn oefpckv gjaua ugaaj gjuaa"
, "qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf"
, "rfv qmbe fvr bmeq"
, "upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen"
, "bdcara qyhx rtaez qyq gbyr"
, "evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl"
, "zaapeo kpwhz tygknau nyd pch trp xqe"
, "ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm"
, "wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa"
, "qqqb rettz rycukl ihpkhh"
, "dnxzxqv znb znb fbxj azxtezb xvxa"
, "peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj"
, "dpwy oavzkk dwyp ehij upqxgii pydw"
, "amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj"
, "hqhhe qkbhwli wmhlcq xaczs peywuo"
, "vcr xfv xfv kymo qpszwzo xfv"
, "nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk"
, "tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd"
, "beffod sknlph amb feobdf"
, "mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo"
, "tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx"
, "mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm"
, "cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc"
, "rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub"
]
incrementElem :: Int -> [Int] -> (Int -> Int) -> Maybe [Int]
incrementElem _ [] _ = Nothing
incrementElem 0 (x:xs) incr = Just $ incr x : xs
incrementElem n (x:xs) incr = (:) x <$> incrementElem (n - 1) xs incr
countJumps :: Int -> Int -> [Int] -> (Int -> Int) -> Int
countJumps count pos offsets incrJump =
case incrementElem pos offsets incrJump of
Nothing -> count
Just offsets' ->
let
jump = offsets !! pos
in
countJumps (count + 1) (pos + jump) offsets' incrJump
main :: IO ()
main =
do
{ print "Part 1:"
; print $ countJumps 0 0 input (1 +)
; print "Part 2:"
; print $ countJumps 0 0 input (\i -> if i >= 3 then i - 1 else i + 1)
}
where
input = [ 2, 0, -1, 0, -2, -2, 0, -5, -6, 1, -4, -3, 1, -2, -4, -9, -4, -5, -10, -10, -17, -8, -17, -17, -10, -18, -12, -21, -1, -22, -4, -24, -2, -16, -8, -6, -33, 1, -2, -5, -35, -20, -26, -9, -15, -14, -33, -24, -8, 2, -13, -25, -45, -44, -32, -50, -27, -56, -56, -16, -26, -8, -13, -41, -48, -59, -59, -34, -7, -56, -8, -49, -11, -16, -25, -11, -4, -31, -22, -12, -68, -7, -13, 0, -12, -8, -59, -73, -68, -78, -46, -37, -87, -63, -61, -81, -83, -72, -1, -36, -75, -33, -31, -76, -25, -15, -15, -74, -74, -37, -46, -82, -110, -66, -60, -104, -61, -55, 0, -109, -16, -63, -118, -109, -25, -96, -124, -7, -20, -36, -68, -38, -71, -106, -7, -14, -96, -117, -109, -107, -112, -46, -116, -128, -18, -87, -20, -121, -121, 0, -115, -89, 0, -12, -124, -24, -18, -124, -44, -99, -10, -63, -103, -45, -54, -99, -101, -96, 0, -50, -143, -18, -55, -78, -31, -40, -62, -176, -137, -5, -135, -36, -52, -97, -29, -16, -12, -108, -64, -29, -65, -128, -113, -21, -135, -126, -163, -51, -61, -177, -52, -26, -151, -142, -98, -203, -178, -175, -81, -110, -201, -150, -104, -117, -165, -4, -96, -9, -118, -123, -156, -39, -122, -59, -223, -9, -14, -53, -191, -23, -171, -7, -131, -2, -225, -20, -66, -225, -203, -41, -122, -159, -222, -96, -134, -191, -105, -78, -139, -225, -164, -109, -178, -186, -24, -161, -125, -214, -199, -152, -172, -102, -217, -15, -60, -148, -173, -10, -258, -119, -9, -11, -6, -53, -220, -57, -123, -62, -172, -80, -200, -236, -255, -61, -199, -165, -277, -32, -169, -108, -86, -137, 2, -96, -204, -269, -181, -96, -166, -271, -235, -75, -245, -6, -95, -130, -303, -55, -227, -266, -82, -298, -135, -272, -311, -311, -86, -198, -41, -147, -169, -91, -65, -122, -293, -149, -218, -325, -292, -136, -119, -100, -290, -48, -257, -282, -199, -67, -262, -75, -274, -136, -87, -123, -61, -258, -117, -93, -113, -250, -225, -250, -135, -342, -304, -153, -114, -335, -327, -276, -119, -35, -75, -239, -140, -199, -354, -94, -51, -176, -35, -121, 2, -51, -80, -116, -69, -282, -180, -10, -103, -172, -332, -158, -95, -365, -358, -69, -263, -75, -74, -1, -236, -28, -311, -364, -275, -333, -52, -376, -156, -310, -276, -160, -218, -341, -78, -184, -14, -291, -279, -248, 0, -199, -252, -221, -23, -371, -39, -355, 0, -211, -151, -34, -209, -310, -215, -76, -398, -21, -206, -339, -147, -47, -70, -105, -340, -128, -321, -101, -225, -425, -248, -117, -437, -379, -196, -262, -236, -365, -217, -213, -70, -406, -414, -425, -332, -13, -120, -238, -238, -110, -224, -116, -414, -419, -309, -121, -104, -9, -406, -82, -72, -249, -432, -380, -14, -388, -403, -249, -349, -480, -118, -243, -285, 1, -126, -33, -99, -241, -151, -329, -64, -63, -120, -75, -255, -118, -177, -138, -451, -306, -245, -33, -55, -90, -212, -301, -168, -363, -314, -417, -385, -52, -497, -131, -71, -134, -69, -138, -141, -347, -358, -505, -294, -288, -432, -234, -439, -112, -260, -31, -273, -86, -362, -237, -369, -442, -402, -453, -30, -171, -33, -170, -20, -539, -93, -456, -240, -10, -344, -150, -262, -417, -421, -44, -15, -51, -69, -268, -290, -344, -196, -556, -519, -242, -197, -546, -99, -377, -225, -113, -138, -120, -263, -170, -452, -405, -376, -551, -190, -9, -224, -110, -183, -454, -212, -55, -264, -348, -510, -152, -71, -356, -424, -233, -234, -10, -524, -76, -251, -456, -578, -348, -176, -406, -173, -160, -603, -129, -558, -106, -535, -465, -310, -569, -302, -504, 0, -175, -59, -485, -586, -88, -136, -524, -164, -55, -150, -191, -40, -552, -386, -217, -119, -250, -448, -357, -485, -623, -412, -202, -266, -55, -256, -169, -327, -165, -101, -550, -434, -176, -152, -518, -624, -374, -305, -370, -304, -362, -109, -277, -53, -318, -574, -338, -276, -620, -306, -499, -77, -122, -329, -156, -654, -576, -79, -498, -9, -15, -445, -415, -491, -641, -104, -600, -126, -156, 0, -70, -271, -162, 0, -640, -505, -261, 0, -476, -555, -130, -423, -360, -138, -457, -674, -303, -624, -513, -566, -405, -406, -632, -177, -66, -277, -445, -117, -628, -452, -156, -535, -254, -44, -466, -142, -414, -473, -201, -85, -336, -660, -607, -376, -367, -582, -619, -499, -89, -232, -708, -731, -215, -72, -159, -278, -53, -257, -104, -7, -745, -403, -534, -17, -520, -510, -353, -504, -578, -729, -139, -271, -181, -134, -475, -251, -490, -205, -675, -112, -753, -256, -485, -234, -654, -403, -450, -658, -172, -675, -54, -169, -230, -1, -436, -108, -660, -289, -367, -314, -68, -572, -586, -369, -145, -543, -756, -78, -490, -785, -180, 2, -424, -159, -727, -235, -645, -28, -282, -489, -250, -71, -682, -711, -398, -55, -328, -182, -166, -743, -388, -334, -432, -729, -360, -471, -16, -602, -709, -69, -269, -791, -489, -322, -646, -301, -159, -268, -777, -456, -746, -356, -809, -728, -90, -302, -386, -728, -656, -29, -101, -728, -82, -406, -675, -62, -160, -617, -125, -698, -120, -655, -751, -284, -475, -16, -420, -574, -638, -38, -573, -623, -747, -115, -430, -591, -832, -422, -40, -212, -564, -71, -513, -623, -503, -189, -256, -728, -655, -580, -508, -382, -883, -885, -480, -117, -407, -253, -635, -244, -101, -847, -857, -205, -119, -756, -302, -169, -277, -521, -586, -472, -880, -580, -825, -428, -248, -846, -226, -621, -413, -302, -161, -177, -601, -830, -275, -700, -922, 0, -897, -764, -151, -343, -10, -601, -772, -574, -478, -791, -244, -4, -927, -601, -686, -109, -786, -224, -409, -725, -411, -692, -886, -667, -767, -773, -623, -868, -319, -739, -36, -309, -634, -240, -790, -711, -426, -426, -860, -227, -677, -67, -567, -621, -714, -430, -914, -335, -601, -205, -475, -737, -60, -28, -19, -221, -660, -386, -67, -474, -49, -488, -207, -209, -178, -889, -370, -180, -232, -709, -861, -359, -372, -591, -80, -709, -340, -441, -116, -156, -525, -687, -604, -31, -303, -425, -650, -642, -606, -626, -332, -26, -126, -846, -672, -74, -201, -256, -660, -342, -184, -1008, -196, -757, -522, -293, -241, -662, -655, -617, -810, -943, -295, -506, -904, -1038, -966, -259, -1025, -448, -597, -210, -45, -533, -48, -943, -618, 1, -697, -1049, -607, -668, -164, -751, -722, -940, -381, -194, -671, -336, -738, -712, -390, -352, -35, -470, -737, -715, -663, -549, -598, -707, -135, -277, -470, -225, -742, -1010, -10, -134, 0, -724, -811, -758, -869, -1029, -567, -889 ]
using System;
public static class Program
{
public static void Main(string[] args)
{
var input = new int[] { 2, 0, -1, 0, -2, -2, 0, -5, -6, 1, -4, -3, 1, -2, -4, -9, -4, -5, -10, -10, -17, -8, -17, -17, -10, -18, -12, -21, -1, -22, -4, -24, -2, -16, -8, -6, -33, 1, -2, -5, -35, -20, -26, -9, -15, -14, -33, -24, -8, 2, -13, -25, -45, -44, -32, -50, -27, -56, -56, -16, -26, -8, -13, -41, -48, -59, -59, -34, -7, -56, -8, -49, -11, -16, -25, -11, -4, -31, -22, -12, -68, -7, -13, 0, -12, -8, -59, -73, -68, -78, -46, -37, -87, -63, -61, -81, -83, -72, -1, -36, -75, -33, -31, -76, -25, -15, -15, -74, -74, -37, -46, -82, -110, -66, -60, -104, -61, -55, 0, -109, -16, -63, -118, -109, -25, -96, -124, -7, -20, -36, -68, -38, -71, -106, -7, -14, -96, -117, -109, -107, -112, -46, -116, -128, -18, -87, -20, -121, -121, 0, -115, -89, 0, -12, -124, -24, -18, -124, -44, -99, -10, -63, -103, -45, -54, -99, -101, -96, 0, -50, -143, -18, -55, -78, -31, -40, -62, -176, -137, -5, -135, -36, -52, -97, -29, -16, -12, -108, -64, -29, -65, -128, -113, -21, -135, -126, -163, -51, -61, -177, -52, -26, -151, -142, -98, -203, -178, -175, -81, -110, -201, -150, -104, -117, -165, -4, -96, -9, -118, -123, -156, -39, -122, -59, -223, -9, -14, -53, -191, -23, -171, -7, -131, -2, -225, -20, -66, -225, -203, -41, -122, -159, -222, -96, -134, -191, -105, -78, -139, -225, -164, -109, -178, -186, -24, -161, -125, -214, -199, -152, -172, -102, -217, -15, -60, -148, -173, -10, -258, -119, -9, -11, -6, -53, -220, -57, -123, -62, -172, -80, -200, -236, -255, -61, -199, -165, -277, -32, -169, -108, -86, -137, 2, -96, -204, -269, -181, -96, -166, -271, -235, -75, -245, -6, -95, -130, -303, -55, -227, -266, -82, -298, -135, -272, -311, -311, -86, -198, -41, -147, -169, -91, -65, -122, -293, -149, -218, -325, -292, -136, -119, -100, -290, -48, -257, -282, -199, -67, -262, -75, -274, -136, -87, -123, -61, -258, -117, -93, -113, -250, -225, -250, -135, -342, -304, -153, -114, -335, -327, -276, -119, -35, -75, -239, -140, -199, -354, -94, -51, -176, -35, -121, 2, -51, -80, -116, -69, -282, -180, -10, -103, -172, -332, -158, -95, -365, -358, -69, -263, -75, -74, -1, -236, -28, -311, -364, -275, -333, -52, -376, -156, -310, -276, -160, -218, -341, -78, -184, -14, -291, -279, -248, 0, -199, -252, -221, -23, -371, -39, -355, 0, -211, -151, -34, -209, -310, -215, -76, -398, -21, -206, -339, -147, -47, -70, -105, -340, -128, -321, -101, -225, -425, -248, -117, -437, -379, -196, -262, -236, -365, -217, -213, -70, -406, -414, -425, -332, -13, -120, -238, -238, -110, -224, -116, -414, -419, -309, -121, -104, -9, -406, -82, -72, -249, -432, -380, -14, -388, -403, -249, -349, -480, -118, -243, -285, 1, -126, -33, -99, -241, -151, -329, -64, -63, -120, -75, -255, -118, -177, -138, -451, -306, -245, -33, -55, -90, -212, -301, -168, -363, -314, -417, -385, -52, -497, -131, -71, -134, -69, -138, -141, -347, -358, -505, -294, -288, -432, -234, -439, -112, -260, -31, -273, -86, -362, -237, -369, -442, -402, -453, -30, -171, -33, -170, -20, -539, -93, -456, -240, -10, -344, -150, -262, -417, -421, -44, -15, -51, -69, -268, -290, -344, -196, -556, -519, -242, -197, -546, -99, -377, -225, -113, -138, -120, -263, -170, -452, -405, -376, -551, -190, -9, -224, -110, -183, -454, -212, -55, -264, -348, -510, -152, -71, -356, -424, -233, -234, -10, -524, -76, -251, -456, -578, -348, -176, -406, -173, -160, -603, -129, -558, -106, -535, -465, -310, -569, -302, -504, 0, -175, -59, -485, -586, -88, -136, -524, -164, -55, -150, -191, -40, -552, -386, -217, -119, -250, -448, -357, -485, -623, -412, -202, -266, -55, -256, -169, -327, -165, -101, -550, -434, -176, -152, -518, -624, -374, -305, -370, -304, -362, -109, -277, -53, -318, -574, -338, -276, -620, -306, -499, -77, -122, -329, -156, -654, -576, -79, -498, -9, -15, -445, -415, -491, -641, -104, -600, -126, -156, 0, -70, -271, -162, 0, -640, -505, -261, 0, -476, -555, -130, -423, -360, -138, -457, -674, -303, -624, -513, -566, -405, -406, -632, -177, -66, -277, -445, -117, -628, -452, -156, -535, -254, -44, -466, -142, -414, -473, -201, -85, -336, -660, -607, -376, -367, -582, -619, -499, -89, -232, -708, -731, -215, -72, -159, -278, -53, -257, -104, -7, -745, -403, -534, -17, -520, -510, -353, -504, -578, -729, -139, -271, -181, -134, -475, -251, -490, -205, -675, -112, -753, -256, -485, -234, -654, -403, -450, -658, -172, -675, -54, -169, -230, -1, -436, -108, -660, -289, -367, -314, -68, -572, -586, -369, -145, -543, -756, -78, -490, -785, -180, 2, -424, -159, -727, -235, -645, -28, -282, -489, -250, -71, -682, -711, -398, -55, -328, -182, -166, -743, -388, -334, -432, -729, -360, -471, -16, -602, -709, -69, -269, -791, -489, -322, -646, -301, -159, -268, -777, -456, -746, -356, -809, -728, -90, -302, -386, -728, -656, -29, -101, -728, -82, -406, -675, -62, -160, -617, -125, -698, -120, -655, -751, -284, -475, -16, -420, -574, -638, -38, -573, -623, -747, -115, -430, -591, -832, -422, -40, -212, -564, -71, -513, -623, -503, -189, -256, -728, -655, -580, -508, -382, -883, -885, -480, -117, -407, -253, -635, -244, -101, -847, -857, -205, -119, -756, -302, -169, -277, -521, -586, -472, -880, -580, -825, -428, -248, -846, -226, -621, -413, -302, -161, -177, -601, -830, -275, -700, -922, 0, -897, -764, -151, -343, -10, -601, -772, -574, -478, -791, -244, -4, -927, -601, -686, -109, -786, -224, -409, -725, -411, -692, -886, -667, -767, -773, -623, -868, -319, -739, -36, -309, -634, -240, -790, -711, -426, -426, -860, -227, -677, -67, -567, -621, -714, -430, -914, -335, -601, -205, -475, -737, -60, -28, -19, -221, -660, -386, -67, -474, -49, -488, -207, -209, -178, -889, -370, -180, -232, -709, -861, -359, -372, -591, -80, -709, -340, -441, -116, -156, -525, -687, -604, -31, -303, -425, -650, -642, -606, -626, -332, -26, -126, -846, -672, -74, -201, -256, -660, -342, -184, -1008, -196, -757, -522, -293, -241, -662, -655, -617, -810, -943, -295, -506, -904, -1038, -966, -259, -1025, -448, -597, -210, -45, -533, -48, -943, -618, 1, -697, -1049, -607, -668, -164, -751, -722, -940, -381, -194, -671, -336, -738, -712, -390, -352, -35, -470, -737, -715, -663, -549, -598, -707, -135, -277, -470, -225, -742, -1010, -10, -134, 0, -724, -811, -758, -869, -1029, -567, -889};
var pos = 0;
var steps = 0;
while (pos < input.Length)
{
var jump = input[pos];
input[pos] += jump >= 3 ? -1 : 1;
pos += jump;
++steps;
}
Console.WriteLine(steps);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
public static class Day6
{
public static void Main(string[] args)
{
var input = new[] {0, 5, 10, 0, 11, 14, 13, 4, 11, 8, 8, 7, 1, 4, 12, 11 };
var seen = new Dictionary<string, int>();
var steps = 0;
while (!seen.ContainsKey(string.Join(",", input)))
{
seen[string.Join(",", input)] = steps;
var indexOfLargest = Array.IndexOf(input, input.Max());
var toDistribute = input[indexOfLargest];
input[indexOfLargest] = 0;
for (var i = (indexOfLargest + 1) % input.Length; toDistribute > 0; i = (i + 1) % input.Length)
{
++input[i];
--toDistribute;
}
++steps;
}
Console.WriteLine("Total steps: {0}", steps);
Console.WriteLine("Steps in loop: {0}", steps - seen[string.Join(",", input)]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment