summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrefetch2024-03-26 21:41:32 +0100
committerPrefetch2024-03-26 21:41:32 +0100
commit757b98fb30e75d7698a0986184d0303224db156c (patch)
treeb0f01bf59bb6fc7d26b55f6edd611393f8f8bf62
parent1fbb07c54523c7a576bfff1cb689e155dd55f15a (diff)
Publish days 6-10
-rw-r--r--06/input.txt1
-rw-r--r--06/lib.scm82
-rw-r--r--06/main.scm14
-rw-r--r--06/test.scm29
-rw-r--r--07/input.txt1193
-rw-r--r--07/lib.scm192
-rw-r--r--07/main.scm20
-rw-r--r--07/test.scm43
-rw-r--r--08/input.txt1000
-rw-r--r--08/lib.scm105
-rw-r--r--08/main.scm20
-rw-r--r--08/test.scm34
-rw-r--r--09/input.txt1
-rw-r--r--09/lib.scm70
-rw-r--r--09/main.scm14
-rw-r--r--09/test.scm68
-rw-r--r--10/input.txt1
-rw-r--r--10/lib.scm123
-rw-r--r--10/main.scm14
-rw-r--r--10/test.scm42
20 files changed, 3066 insertions, 0 deletions
diff --git a/06/input.txt b/06/input.txt
new file mode 100644
index 0000000..04f1425
--- /dev/null
+++ b/06/input.txt
@@ -0,0 +1 @@
+4 1 15 12 0 9 9 5 5 8 7 3 14 5 12 3
diff --git a/06/lib.scm b/06/lib.scm
new file mode 100644
index 0000000..76bd34d
--- /dev/null
+++ b/06/lib.scm
@@ -0,0 +1,82 @@
+(library (lib)
+ (export solve-part1 solve-part2)
+ (import (chezscheme))
+
+ ; Split list at first delimiter into `prefix' and `suffix'
+ ; Return value is a pair like `((p r e f i x) s u f f i x)'
+ (define (list-split-left delimiter? xs)
+ (let loop ((prefix '())
+ (suffix xs))
+ (if (null? suffix)
+ (cons prefix suffix)
+ (let ((x (car suffix)))
+ (if (delimiter? x)
+ ; Found first delimiter, so return immediately
+ (cons prefix (cdr suffix))
+ ; `x' isn't a delimiter, so append it to `prefix'
+ (loop (append prefix (list x)) (cdr suffix)))))))
+
+ ; Split list at given delimiter into list of sublists
+ (define (list-split delimiter? xs)
+ (let loop ((pieces '())
+ (rest xs))
+ (if (null? rest)
+ ; Fix order and remove all empty sublists from output
+ ; (which are caused by consecutive delimiters in `xs')
+ (reverse (remp null? pieces))
+ ; Extract next piece from `rest' and prepend it to `pieces'
+ (let ((next (list-split-left delimiter? rest)))
+ (loop (cons (car next) pieces) (cdr next))))))
+
+ ; Split string at whitespace into list of words
+ (define (string-split str)
+ (map list->string (list-split char-whitespace? (string->list str))))
+
+ ; Find the index at which `needle' occurs in `haystack', or `#f'
+ (define (find-index needle haystack)
+ (let loop ((xs haystack) (i 0))
+ (if (null? xs)
+ #f
+ (if (equal? needle (car xs))
+ i
+ (loop (cdr xs) (+ i 1))))))
+
+ ; `apply' but for vectors, assuming `proc' returns a scalar
+ (define (vector-apply proc vec)
+ (apply proc (vector->list vec)))
+
+ ; Redistribute the items according to the puzzle description
+ (define (redistribute old)
+ (let* ((n-max (vector-apply max old)) ; largest value in `old'
+ (i-max (find-index n-max (vector->list old))) ; index of `n-max' in `old'
+ (new (vector-apply vector old)) ; allocate copy of `old'
+ (len (vector-length old))) ; number of slots in `old'
+ ; Clear the slot that had the most items
+ (vector-set! new i-max 0)
+ ; Add those items to the other slots one by one
+ (let loop ((i (mod (+ i-max 1) len))
+ (remaining n-max))
+ (if (= remaining 0)
+ new
+ (let ((n (vector-ref new i)))
+ (vector-set! new i (+ n 1))
+ (loop (mod (+ i 1) len) (- remaining 1)))))))
+
+ ; Keep redistributing items until a previous state is revisited
+ (define (solve-puzzle str)
+ (let ((init (list->vector (map string->number (string-split str)))))
+ (let loop ((states (list init)))
+ (if (find-index (car states) (cdr states))
+ states
+ (loop (cons (redistribute (car states)) states))))))
+
+ ; Loop detected after `(length states)' cycles, minus initial state
+ (define (solve-part1 str)
+ (- (length (solve-puzzle str)) 1))
+
+ ; Loop start state first seen somewhere in `(cdr states)', at which index?
+ (define (solve-part2 str)
+ (let ((states (solve-puzzle str)))
+ (+ (find-index (car states) (cdr states)) 1)))
+
+)
diff --git a/06/main.scm b/06/main.scm
new file mode 100644
index 0000000..4e58151
--- /dev/null
+++ b/06/main.scm
@@ -0,0 +1,14 @@
+(import (chezscheme))
+
+; Where the magic happens
+(import (lib))
+
+; Read my personal puzzle input
+(define input
+ (call-with-input-file "input.txt" get-line))
+
+; Part 1 gives 6681 for me
+(printf "Part 1 solution: ~a\n" (solve-part1 input))
+
+; Part 2 gives 2392 for me
+(printf "Part 2 solution: ~a\n" (solve-part2 input))
diff --git a/06/test.scm b/06/test.scm
new file mode 100644
index 0000000..e8efb7c
--- /dev/null
+++ b/06/test.scm
@@ -0,0 +1,29 @@
+(import (chezscheme))
+
+; Where the magic happens
+(import (lib))
+
+; My quick-and-dirty unit testing framework (copied for each day)
+(define (run-test name proc input expected)
+ (let ((result (proc input)))
+ (if (equal? result expected)
+ (printf "\x1b;[32;1mPASS\x1b;[0m: ~a\n"
+ name)
+ (printf "\x1b;[31;1mFAIL\x1b;[0m: ~a: got ~a, expected ~a\n"
+ name result expected))))
+
+(printf "Part 1 tests:\n")
+
+(define (test-part1 name input expected)
+ (run-test name solve-part1 input expected))
+
+(test-part1 "part 1 example 1"
+ "0 2 7 0" 5)
+
+(printf "Part 2 tests:\n")
+
+(define (test-part2 name input expected)
+ (run-test name solve-part2 input expected))
+
+(test-part2 "part 2 example 1"
+ "0 2 7 0" 4)
diff --git a/07/input.txt b/07/input.txt
new file mode 100644
index 0000000..4f6dd1c
--- /dev/null
+++ b/07/input.txt
@@ -0,0 +1,1193 @@
+yvpwz (50)
+vfosh (261) -> aziwd, tubze, dhjrv
+xtvawvt (19)
+nspsk (24)
+sgtfap (19) -> bohjocj, bqvzg
+oyuteie (52)
+irrpz (226) -> cibfe, hemjsj, upbldz
+vtvku (426)
+vbsfwqh (6055) -> govhrck, pglpu, rwuflbi, ppgaoz
+nupmnv (47) -> cngdg, olgsb, lmvmb
+ulndqey (71)
+fujgzbt (198) -> fbesgp, hewtnrw
+nsbvvsi (39)
+ajvtdl (36)
+xrgca (85)
+mksrqb (45)
+ozfsktz (56) -> xzwjii, uhxjy
+peretma (15) -> suzsw, ycvvjgc, cdyhvr, jixggay
+boplau (77) -> boggvxt, cnyasj
+rzqffr (84) -> tbppaj, htyeqf, pgnyu, ruhqn
+shkkwp (5)
+bpptuqh (68) -> ugxls, zlshut, ltqljtw
+bngres (944) -> ktwby, tblhhg, jzgpty, skbprng
+tjnyo (55)
+ujfeg (13) -> vldxkw, kfbsjv, rlqwaz, dvwsrc, ymxlwf, zvmhx, wfdxfxq
+mxplky (35)
+ezkqh (91)
+kozgi (48)
+pgnyu (94)
+yhunajf (25)
+pvpmt (77)
+cvitrpt (88)
+zjwih (46) -> cvitrpt, chtamif
+mhfnxk (6) -> jddyhz, gvrhj, ctpdk, oprvyxy, luzjys
+dbrnqc (77)
+iorlbdv (43)
+twwzhwf (118) -> ndgupvi, aumbaa
+mvngvtg (67)
+kwkprrw (187) -> uobxcai, aklrjg
+wtvffu (120) -> vzxvex, mtsbrje, slfile
+vjwivnq (52)
+cbwbdsv (157) -> przuau, atjtgjx
+rwuflbi (8) -> lapoix, dkdovw, spgcwtn
+upbldz (27)
+xgnqi (64)
+ksotbs (48) -> cqbvru, tqbvdu
+romrjs (55) -> vhilqk, gzxuw
+ftmwqqj (76)
+kqpvqie (63) -> qomhp, fwvsi
+xxrsnzv (39)
+trqfblp (85)
+rmjktk (28) -> wtkfiw, mlrdsj, pnicdos, woujz, psrzr
+lwygknn (96)
+ctgbkrb (76) -> iavuhwe, onvkja
+iqbrs (67) -> tghoyv, hoheog, kjpzwp, wwvad, ezmjqnt
+efuqu (136) -> umljkr, qblnh
+egwjjg (85)
+dgtvwiy (27)
+ndgupvi (28)
+zdvai (85)
+auhio (82)
+dywjt (40)
+hhboca (18)
+pptbkz (96)
+iqsvbk (73)
+nwjibjk (31)
+veclzy (308) -> dohjma, hbiwkt
+repak (139) -> bcjxhps, eyckbl
+xguqlvl (74)
+rkjmp (59)
+eqviuw (171) -> mqlsvih, lrnjjfq, njgkkxo
+zogylog (80)
+kroqr (38)
+onvkja (49)
+tedehrz (94) -> ipqjff, dmiqf
+lhwyt (287) -> jbwbw, htyyatf, ppvwkei, vtbzq, pynomi, uswsg
+mrbqk (64)
+aoxtau (64)
+gvrhj (59) -> qurrva, xrgca
+lfksu (72)
+tnwle (49)
+dgnpr (93)
+ucsxzhl (21) -> tpefei, ntkeax, jvayv, yuobv
+wbibf (183) -> pvtat, ygnww, akngdu, swpkkpi
+ljaktj (21939) -> seeqikh, mqrfbqc, ihnus
+agqkf (69)
+tubze (48)
+fcapw (105) -> nkhzrd, shkkwp
+sdied (47)
+zfmeblt (56)
+wqyzjzi (41)
+zxjeza (185) -> ioumv, pjersb
+vecxd (56) -> civozek, qzsypj
+dkxebg (73) -> atrmuc, mhfnxk, zwwbw, ryaotx, yqhmb, yztqpc
+oqiye (35)
+edyqn (60)
+fujwzoc (404)
+llcbiqi (79)
+yejkld (41)
+utbev (25) -> hsxru, jfuxeo, zyshq, eznabc, lgsda, uobxonm
+ojxyv (79)
+vbpde (20)
+fyjowg (26)
+yfzjc (31)
+obwzec (41)
+zcanxq (85)
+woujz (125) -> qntvn, kwzrzn
+adhwzp (305) -> agqkf, yallk
+zvcfznz (184) -> rjuhrpu, yzwnh, hikik
+dxbrl (66)
+appays (423) -> nupmnv, cyppxr, rqoczb
+rgndu (81) -> tsbbzu, dtxrjg
+jncex (74) -> rrdczem, bhhgpe, gtvnow, vndrx
+cfvbuip (53)
+vsqfx (29)
+zocaag (38)
+ppymmsf (19)
+amwxj (69) -> pptbkz, kweqtf, jwmbs
+svadhfo (99)
+xdsbnr (8)
+duvrzrl (22)
+dfaro (8)
+vgugdtt (220) -> nxpakq, fhsecp
+fwddmmv (43)
+igaww (28)
+bbxbrsh (31)
+swpkkpi (13)
+bkqexxz (77)
+ovfduq (16)
+rtzce (39)
+gmwto (119) -> wbeizj, refgrip
+rmdhj (24)
+yeref (77)
+ifstrgw (23) -> qpixldb, tukirqp, bwcyqb, bzbmt
+untdpje (45) -> owimy, yejkld
+esiwujq (41)
+emvxet (131) -> vecdh, ftgvx
+mztuzb (764) -> jgzvrf, eaqiocy, fsagr
+bwnabqh (83)
+gypsfc (43)
+bhemin (44)
+imydd (164) -> iabqb, vdpnsak
+qajpehv (49)
+oxnfnsv (76) -> twwzhwf, uiyyc, gfaamu, umhcrc, bcjpzpk, vrqeade
+qfdldyu (231)
+dmsmgs (29)
+oqady (7) -> mhtzh, cpreh
+zbhwrc (759) -> esrilo, dcngdo
+cyppxr (272) -> pitmcu, nvlqab
+jtzjrke (45)
+przuau (59)
+eexkce (44)
+xsewlv (124) -> fwfpmti, rszjhxn
+fbesgp (28)
+sxegjbz (297) -> yhycc, gxmry, favzt
+nxpakq (17)
+hbvvse (98)
+ygzwut (83)
+cngdg (93)
+tfzum (69)
+ccghjn (58)
+ylbpwah (190) -> htlpx, eduzave, peqgox, fkqkfdu
+mobbhp (141) -> clgbo, jtzjrke
+icdlpb (62)
+wkrtcw (1663) -> qqzhz, ybewhak, mazbb
+uswsg (312)
+zdvlgn (63) -> rmpryj, qrtdtt
+hfcifm (107) -> tpfuxx, wdivd
+cltqhc (25)
+gnrnwtz (513) -> efxakc, jxlgwb, ksotbs, gvayfu, wqvtdc
+rdufpid (25)
+kszmj (137) -> eemfgbx, amvjukd
+ykuto (662) -> pvuoltd, kcyiwqs, kbjnzw, kszmj
+ckswvj (264) -> cleanrs, ntixh
+czhsx (51)
+luayjsp (47) -> alhjba, qjghc
+djnsvq (295) -> nbnqidn, ijjfn
+qxzfv (57)
+qyzja (94)
+rmpryj (96)
+eyreht (45)
+vzkii (216)
+rwheyic (68)
+rjmdre (21)
+qntvn (71)
+lescv (32)
+qomhp (32)
+oegwh (70)
+tukirqp (85)
+pumxr (103) -> wvpwez, kiuiq
+fjrpc (89)
+gmoliax (1327) -> jniisu, cfafhwl
+wsrwgvc (80)
+zhgzg (62) -> aonfu, vqiqglo
+fxcuah (208) -> uofigyp, kfxyzqc
+fnjnhmk (76)
+zlshut (62)
+hsnbry (26)
+pjnyxo (30)
+luzjys (115) -> kisjb, owsosl
+vecdh (14)
+vfrqc (13)
+udjcwm (18)
+twpmx (30)
+oiysq (64)
+lcazsyd (78)
+ryaotx (399) -> lmctbp, imydd, wlkatbq, sikzsc
+rbnfwkf (51)
+kdtpg (4260) -> lymwlyg, xgqzb, appays
+djvps (30)
+vjqjwk (76)
+pbrdt (66)
+rciilr (33)
+heumdl (75)
+whqvs (146) -> ttxrd, qxuakjr
+zvtxa (77)
+cpkkq (18) -> romrjs, xmpdevf, nnofr, qgqou, nmkjx, nbvwta
+sxada (7) -> dgrwv, irlfj, rmjpia, ciafn
+frbmr (67) -> tnwle, nnyqes
+tgksxw (53) -> dkffgot, yvpwz
+ijvux (77)
+tblhhg (44)
+xxsivgz (17) -> kkhfzgn, rbqcbvl
+ylxxmlt (83) -> qxzfv, dacbtyf, aqhcy
+vndrx (248) -> xecqd, tznkdt
+jwezuh (57) -> kxrxtq, cijfsu
+ztqvzwj (86)
+dluyef (1987) -> zcicmp, qkhhg, eivrwbt, iqzdu, rmvry
+ybzvav (873) -> agwyte, kawloxz, bmdxyf
+pvuoltd (115) -> glgrdm, gfizf, bnehbkl, lkyeyn
+ceefghr (21) -> mksrqb, saqjax, llild, qwvvha
+khphs (101) -> qwlepd, acgrw
+yxvgj (13)
+zifogt (85)
+wgwlbz (83) -> uwaij, qklota
+xlyvge (235) -> zgnoqml, trqfblp
+qaxvec (41)
+ylkfgx (6)
+pzgvdt (37)
+vtzdfjg (77)
+tyiekxm (24)
+jaiqusy (18)
+avhkram (73)
+akluijb (77)
+bohjocj (73)
+ofoto (1287) -> sgrcmj, jxykl
+qgqou (227)
+xtoaq (18)
+peqgox (25)
+kobcmy (64) -> haeymgy, egwjjg, zcanxq, zifogt
+namzy (79)
+vldxkw (463) -> gmwto, aflmt, boplau, khphs, qlthpj, epqsj
+chtamif (88)
+vqsuh (92)
+iofsrh (35)
+njgkkxo (17)
+zsqqhe (94)
+xupdam (64)
+bqvzg (73)
+hmetm (889) -> aklagd, ceefghr, whcxfwf, guztl
+hoheog (296)
+llsvd (18)
+giupn (30)
+dfzfwun (64)
+nmfvmam (125) -> qxwlhxh, obwzec
+ioumv (86)
+gxmry (143) -> cyvplfd, wmcusr
+ywgvsdb (131) -> fzfxs, yvdkbo, igaww
+pwsye (49)
+mywezi (407) -> gimkyms, bnxvusb
+fzfxs (28)
+kurgrkq (76)
+txeucf (61)
+gjwflt (84) -> xmfzu, gcbjhu, xxnannn, bwnabqh
+vrgxe (1226) -> zbfyg, rocbcw, zouml, wbibf
+izwze (16)
+jwmbs (96)
+euvev (46)
+dgzvf (30)
+iezdimc (82)
+zkhll (992) -> bbqtwv, xupdam
+jhxxfq (71)
+hemjsj (27)
+ryxkvxj (124) -> bhemin, apghde
+qxuakjr (54)
+aonfu (95)
+dvopaww (98)
+uobwwa (69)
+dojvyuv (96)
+ezcmm (886) -> ntjmwf, qfdldyu, vokxlx
+yzwnh (15)
+jfqanu (302) -> dcgarog, tcpqh
+gfizf (14)
+kvbdsv (46)
+qzsypj (98)
+vyffcrm (24)
+iuoxs (13)
+zitfb (23) -> ctagl, ddpgq
+yueoma (46)
+bbqtwv (64)
+hgsng (45)
+wgehfu (77) -> lescv, hnjbsg, bxvwe, evmuxia
+arwqmho (66)
+amvjukd (17)
+ntixh (10)
+zfzblty (47)
+cxzuprb (592) -> texfyi, dvgstr, irhxzg
+ekqux (76)
+abxalr (697) -> zjwih, gjwuf, eqviuw
+choiui (65)
+tgjdwlh (24)
+glhsr (60)
+rtymngs (66)
+rocbcw (169) -> djizg, dtnaqds
+bjwws (46) -> evgtp, ztqvzwj
+gowbiey (78)
+yqhmb (497) -> njgrpbo, tedehrz, bjwws
+lapoix (240) -> xkizl, dyhate, disan
+vckqsrm (30)
+sxdljm (66)
+frpmd (13)
+uwhwsv (86)
+wknic (47)
+pnicdos (165) -> czhsx, rbnfwkf
+wrsik (80)
+wbogdd (66) -> eibtll, ppmvpn
+fyrqw (28) -> ekqux, zxoqwjv, ipogzy, dhzuvup
+uttjzap (22)
+gqjkk (41)
+gcbjhu (83)
+bnxvusb (21)
+bxvwe (32)
+difjqqd (47)
+xxnannn (83)
+lxzucvk (94)
+ehynj (98) -> ijvuozb, wutdi
+vwkbje (25)
+ciafn (62)
+pyyuj (34)
+zofljd (685) -> hfcifm, emvxet, ahrdgu
+zyshq (140) -> dpcmm, eosuf
+zgslahq (101) -> ximrxj, auvxopo
+xszci (72)
+fomxzjj (47)
+mcduoz (6)
+rcltx (73) -> djnsvq, hqmum, ifstrgw
+pemna (98)
+fgnsyw (39)
+tfppg (77) -> uwhwsv, fmapm
+tohlady (84)
+gzxuw (86)
+mkdiuil (96)
+qfhkgt (52)
+csxwyly (47)
+intuzzk (82) -> jqqxv, dlnyi, pbides, qtcqtv
+bfxhl (78) -> qvmorke, pazbvum
+eduzave (25)
+kwbni (74) -> abxalr, bbsuv, gnrnwtz, rmjktk, eqcnl, pdwesa, sunvhgy
+hhnvuv (83)
+ismgnve (68)
+alhjba (84)
+mspkmg (94)
+rszjhxn (34)
+frleu (60)
+mewfm (48) -> gowbiey, yevks
+mpulnxr (42) -> eziuhsd, xsewlv, tckcxhb, bfxhl
+mzksj (68)
+shnqfh (1649) -> wnnov, mdtniv, fwpuy
+bxpfop (153)
+zucsr (26)
+gmpqmio (93)
+wzjbp (174)
+zcicmp (301)
+ppvwkei (93) -> eqjfyj, lghygm, grrycy
+tcsoaw (239) -> kzfzp, oypzs
+nnsial (78)
+mazbb (98) -> dsxhhub, fqoqkzk
+lclbeiq (81) -> bwxicc, uttjzap
+jddyhz (91) -> vmmww, mvalh
+umqrwk (132) -> itvhd, jbuxnpr, mxopf
+qxfan (34)
+cdafdq (26)
+drrjnr (80)
+kxrxtq (68)
+cnyasj (56)
+kpdbki (38)
+dgzoyx (72)
+zwwbw (155) -> eqbvn, qcghv, tfppg, xaanoft
+zsxbg (22)
+fwvsi (32)
+hefgter (6) -> pirieql, hikocbe
+mwelezd (81)
+eptcqns (16)
+jmbiky (96)
+gnozwfo (242) -> vqsuh, cxlfgl
+wtkfiw (48) -> owresw, grqjew, okbzzwd
+ltqljtw (62)
+lymwlyg (72) -> snkox, adhwzp, cvdjts
+mgeizij (60) -> sbcuc, rqrfl
+zghvta (57)
+uqcqc (85)
+tozwp (19)
+nqjrds (81)
+cfufhn (11)
+yznhjg (60) -> choiui, yhecio, lprpgxe
+qtbhnxr (27)
+bwdfws (27)
+kiuiq (89)
+zjfrc (141) -> zghvta, lkqiqa
+ooiyeep (80)
+xiawjb (38)
+wgzdt (216) -> vfrqc, frpmd
+lugkrb (36)
+mvalh (69)
+cruxrmy (52)
+azwmkej (33)
+tqbvdu (61)
+szvlte (21)
+bzbmt (85)
+gcczhgd (43) -> eecoekq, kwpnxyh
+jxlgwb (24) -> pzahn, yadtxl
+gfaamu (8) -> ygzwut, hhnvuv
+ntjmwf (211) -> owqdo, umvvwsq
+rqhrb (19)
+jixggay (28)
+gavjzk (91)
+mbydswv (69)
+unqbwiz (10) -> rixge, lkwapf, phvbwg
+veycd (62)
+lmctbp (106) -> wqyzjzi, gqjkk
+jwpjy (94) -> ywlub, rtymngs
+febjzqn (46461) -> mwtojre, iqmqju, dkxebg
+yvdkbo (28)
+iayzdx (7181) -> fakyd, fjwmd, uzicvdh
+uobxonm (118) -> wrsik, wsrwgvc
+sehxgj (41) -> wpezjoi, dcnuouj, vrpqev, kjwvqdz, vzkii
+eziuhsd (192)
+gcichoe (79)
+jwzmsv (45)
+fmapm (86)
+rbtvx (53)
+sgkksme (94)
+zmces (86)
+rmjpia (62)
+feiki (376) -> oqady, fcymcb, wlleabp
+sgrcmj (54)
+dohjma (76)
+kgzqclo (71)
+eqjfyj (73)
+zcjrk (1009) -> zdvlgn, sxada, yznhjg, pnoxhe
+zhudrmb (78) -> mvngvtg, kvags
+iylwxgn (98) -> edebwk, gjwflt, rlapq
+beraoor (10) -> pumxr, gasnep, ulznkvm
+gxnoomf (185) -> ihrhkj, cfufhn
+fhoprd (71)
+pbides (59)
+xqgjvz (192) -> twpmx, zwofu
+mexuge (52)
+rbfbf (47)
+oprvyxy (125) -> oyuteie, yibxqhs
+eqcnl (637) -> kgjcj, wgzdt, rrgffal
+kikfs (40)
+ntvul (77)
+bwxicc (22)
+rttwea (55) -> fnjnhmk, kurgrkq
+kfxyzqc (9)
+ddmrgzp (69)
+clgbo (45)
+qoapjhr (173)
+kkhfzgn (88)
+njgrpbo (74) -> dgzoyx, rlywif
+bwcyqb (85)
+esrilo (47)
+blutjw (717) -> fxcuah, efuqu, jwpjy
+owimy (41)
+oeeqrsd (62)
+akoqk (16)
+owqdo (10)
+fwpuy (26) -> eqnpvwk, lbhxdbr, lqqkjjr, tlvpv
+tzqzk (52)
+gxobd (91)
+npqroe (36)
+pstaxvr (761) -> peretma, kqpvqie, untdpje
+boggvxt (56)
+uobxcai (10)
+vmyda (63912) -> rcltx, ajwxaa, yvqasth
+jznrci (51) -> mclgebd, emdsyso
+ktgfsm (50)
+kweqtf (96)
+mtsbrje (66)
+rjuhrpu (15)
+zgnoqml (85)
+qlthpj (57) -> arwqmho, yydyjr
+cdudjbj (128) -> iofsrh, nuuwbui, mxplky
+estwket (94)
+adjlg (67)
+jbwbw (114) -> dxbrl, lhdhko, fdjhpq
+ezfky (71)
+rrdczem (71) -> dgrfhvi, adjlg, ajyqxh
+xqrmgdk (6543) -> unqbwiz, cxzuprb, rmkhel
+nmkjx (213) -> wycesn, gpfipvk
+qklota (16)
+jbuxnpr (30)
+xtzqooh (27)
+vbcfe (49938) -> yuepckc, ybzvav, sxapjc, cfvlt, dluyef
+drzrtpi (96) -> nuuqqqy, scqutwb
+xkfps (7)
+nvxlr (49)
+hazbs (31)
+ajyqxh (67)
+guhyk (66)
+ipwxws (190) -> difjqqd, wknic
+akngdu (13)
+evgtp (86)
+eznabc (150) -> dvhbwl, xnuoisk
+limjm (52)
+bykjeka (71) -> sdied, zfzblty, csxwyly, fomxzjj
+gpfipvk (7)
+cpreh (86)
+qurrva (85)
+sikzsc (46) -> dpetvw, pridma
+vokxlx (69) -> gadnfmt, nqjrds
+scbycx (193)
+qjghc (84)
+ctpjjsh (964) -> thlbs, wgehfu, fetns
+uzicvdh (42) -> altsh, xhhhix, calvq, bykjeka, iucuw
+tpefei (109) -> qtznzyx, myznok
+sizfqfs (116) -> vsqfx, dmsmgs
+qumahjn (71)
+ctagl (97)
+hewtnrw (28)
+ocpzltp (67)
+ihnus (40) -> vrgxe, shnqfh, auzded, hkhsc, jwddn, mcxki, lhwyt
+iuydxn (253) -> fhoaub, kmnjo
+evubadn (49)
+wpezjoi (112) -> zpxqtrg, tzqzk
+qtznzyx (57)
+dcnuouj (76) -> oegwh, ztzfled
+ddpgq (97)
+ktrkhe (67)
+podcsx (71)
+univhdj (26)
+puxaz (60)
+jadome (50)
+uplbokf (5475) -> vbxqhoy, cpkkq, iqozz
+llild (45)
+lylaoh (170) -> lomhz, tzjzmmv, cefbp
+owsosl (57)
+iqozz (681) -> syykbn, mbmzme, cdudjbj
+nvdon (345) -> dgzvf, djvps
+iigqfh (327)
+ctatrbo (279) -> tyiekxm, rmdhj
+yevks (78)
+cipxwb (85)
+edmljb (134) -> ligev, glhsr
+yallk (69)
+owtxsq (71) -> zxjeza, pzgvsxu, amwxj
+pejmc (151) -> fjvoff, esgqip
+pridma (71)
+vdpnsak (12)
+hlfbt (200) -> univhdj, xnxdmdb
+wyuwk (315) -> ibcbvy, ztaff
+phvbwg (86) -> yachdf, utncpu, tohlady
+nbnqidn (34)
+tnyjkok (93)
+kwpnxyh (41)
+yachdf (84)
+ximrxj (42)
+appok (73)
+rrgffal (78) -> trxgpy, zmjfa
+uiyyc (126) -> nspsk, plxdglq
+rcxtjte (210) -> drrvse, szvlte
+ruild (9) -> zqdezgy, cxpoqyu
+mqlsvih (17)
+xgqzb (451) -> mgeizij, hefgter, ajtjnwp, ljhezx, pwwqvhw
+gmdcbyg (214) -> mexuge, limjm
+mxopf (30)
+wnnov (170)
+qgwcfll (95)
+smtbsys (49)
+jiyuw (40)
+sunvhgy (218) -> fmlhgs, clmyzsu, zvcfznz, xrkca, jznrci
+wycesn (7)
+sbgwln (66)
+dkffgot (50)
+ximrdyg (217) -> tpbgp, ibmcytl
+mvqfvit (38)
+spgcwtn (63) -> yeref, itxaax, ntvul
+apmpzd (46)
+njkeu (67) -> vecxd, rpcoxd, emqoxss, elusirt, hlfbt, xqgjvz
+irlfj (62)
+zxoqwjv (76)
+vjwlck (28)
+ezmjqnt (146) -> wdssrl, gwcig
+plzfjy (41)
+beeeaye (71)
+nqkwmyd (254)
+hbiwkt (76)
+hspol (20)
+ntjawca (63)
+yuobv (91) -> vtdpkof, basjwp, pfvpb
+lqqkjjr (36)
+zzqwzy (48) -> cnbzj, vftqnj, mywezi
+goyzt (22)
+apghde (44)
+ahrdgu (23) -> ismgnve, rwheyic
+vqiqglo (95)
+ruclz (25)
+wuqbe (98)
+nedbkp (49)
+fpmipcr (40)
+gadnfmt (81)
+kxrfley (55)
+thlbs (59) -> iqsvbk, tbyihc
+wqvtdc (126) -> uyjre, dvkrlzc
+omfvqhv (29) -> iorlbdv, fwddmmv
+lihivo (81)
+ligev (60)
+iabqb (12)
+zwjqar (71)
+ddsqd (61)
+wwvad (23) -> owzybm, gavjzk, gxobd
+plhybj (48)
+rgyamx (79)
+trxgpy (82)
+vzxvex (66)
+favzt (69) -> qxfan, pyyuj, lhahl
+atrmuc (1081) -> qrsgca, bhthbfj
+mqrfbqc (9769) -> vbqtd, ykuto, mgktiii, iylwxgn
+ihkcni (66)
+ttxrd (54)
+dvhbwl (64)
+nlhxju (31)
+kjwvqdz (140) -> zocaag, gszqlv
+gulset (80)
+vubst (114) -> giupn, vckqsrm
+pvejq (52)
+lhahl (34)
+rqoczb (310) -> ropzx, xdsbnr
+xhhhix (259)
+ictdnyf (1551) -> ezfky, ckxblyq
+jexvtb (15)
+fmlhgs (103) -> ntjawca, jwpwt
+fcymcb (17) -> mwelezd, jaoiiae
+cepddei (195) -> ppymmsf, mcdmpq, tozwp
+suzsw (28)
+dlnyi (59)
+nzrfhb (198) -> xwpwer, vjwlck
+kmnjo (35)
+itvhd (30)
+tpbgp (11)
+syykbn (127) -> teastj, ntazqjk
+vhilqk (86)
+ctpdk (31) -> yzciq, ljlotlp
+putpp (92) -> pbrdt, ihkcni, sxdljm
+peydhei (737) -> dojvyuv, nnogow, lwygknn, ndajgou
+yzciq (99)
+xmfzu (83)
+plzgfx (98)
+qckem (28)
+kuakyv (77)
+qpixldb (85)
+nnjbjm (23) -> cgwnn, veclzy, rzqffr
+nrkdm (200) -> dgtvwiy, qtbhnxr
+xwkski (59)
+mgktiii (827) -> ggbxd, gjfoe, qoapjhr
+elusirt (106) -> appok, avhkram
+ttkboa (24)
+ckxblyq (71)
+disan (18)
+owresw (73)
+pyuuxw (39)
+hwsrjah (176) -> pvejq, cruxrmy, vjwivnq
+skbprng (44)
+lkyeyn (14)
+mdtniv (82) -> eexkce, oiiagw
+ljhezx (130) -> jpxogsl, pjnyxo
+upsiumf (18)
+glgrdm (14)
+rvcmif (288) -> jdmjou, ddmrgzp
+wvsspk (25) -> lqnwffm, edgplu, qyzja
+umljkr (45)
+ggbxd (67) -> jikpfbk, siqksje
+kuujprz (67) -> ctatrbo, xibdlh, wyuwk, siflauk, iigqfh, jhwltnv
+aklagd (201)
+lprpgxe (65)
+auvxopo (42)
+uorika (69)
+avbgwvm (81)
+nnogow (96)
+iybvphk (85)
+sxapjc (129) -> peydhei, sehxgj, lgtffok
+utrdhz (75)
+nbvwta (153) -> bbviexo, pzgvdt
+jzgpty (44)
+qqzhz (32) -> eyreht, xxswgx
+ropzx (8)
+xaanoft (42) -> cwgrjoh, uorika, uobwwa
+ybnpc (307) -> dibqua, ozfsktz, txrxyqh
+cfvlt (753) -> rusayd, feiki, ucsxzhl
+ruxuw (43)
+ywpjusg (64) -> joxmxc, mzksj
+qtcqtv (59)
+qwddgc (82)
+eyckbl (58)
+lgsda (44) -> lcazsyd, mwdfwe, nnsial
+tlvpv (36)
+rlqwaz (901) -> sizfqfs, ehynj, wzjbp, vubst
+fgbnlu (66)
+zvmhx (105) -> tcsoaw, rtnpvf, lbkvgme, xtttnfp
+oiiagw (44)
+jpxogsl (30)
+lomhz (78)
+calvq (85) -> ccghjn, lpascsz, zkecjv
+ljlotlp (99)
+jqqxv (59)
+iqzdu (187) -> itygd, cdvmqs
+ugkey (86)
+tjjrys (94)
+dtjhnzr (85)
+tqeeva (214) -> xwkski, rkjmp
+tznkdt (12)
+daiah (26)
+cwgrjoh (69)
+dibqua (24) -> rgyamx, gcichoe
+scqutwb (94)
+yeifw (71)
+dyhate (18)
+acgrw (44)
+fndpz (18)
+pynomi (170) -> kgzqclo, ygvkw
+kcyiwqs (35) -> givljl, yntnjp
+lbkvgme (223) -> jadome, dtwbpl, ktgfsm
+ygvkw (71)
+dgsutv (25)
+rlywif (72)
+nevpm (49)
+xtttnfp (73) -> heumdl, axgpyq, utrdhz, paeea
+ptmqo (284)
+ibmcytl (11)
+ejwno (80)
+mcdmpq (19)
+azvke (170) -> wscktm, jexvtb
+govhrck (176) -> vuqriq, crfse, eoditdi
+tzjzmmv (78)
+dhjrv (48)
+dlifqat (49)
+ruhqn (94)
+mhtzh (86)
+bhhgpe (124) -> bywwy, xguqlvl
+ucicsdu (199) -> itvizjy, wsnqied
+agwyte (498) -> gcczhgd, lclbeiq, rgndu
+gapjnb (200)
+pitmcu (27)
+vtdpkof (44)
+joxmxc (68)
+mclgebd (89)
+refgrip (35)
+hsxru (30) -> oeeqrsd, icdlpb, veycd, dlrpnot
+jikpfbk (53)
+usztpox (160) -> goyzt, eagggd
+aqhcy (57)
+umhcrc (174)
+qwvvha (45)
+crxnz (10)
+mbmzme (37) -> qajpehv, dlifqat, bponwxc, hjzehyw
+uyjre (22)
+tsbbzu (22)
+tenzzu (67)
+ijvuozb (38)
+oypzs (67)
+ymxlwf (327) -> nzrfhb, wbogdd, fujgzbt, nqkwmyd, vgugdtt
+dvgstr (87) -> rqhrb, xtvawvt, receu
+yzuygum (57) -> oiysq, jibdphs
+vuqriq (238)
+lsysd (68)
+meayff (35)
+guztl (73) -> mrbqk, aoxtau
+rtnpvf (177) -> pwsye, nevpm, nvxlr, smtbsys
+zbqpk (112) -> apmpzd, yueoma
+bbviexo (37)
+gimkyms (21)
+fjwmd (692) -> luayjsp, njqzaxg, ywgvsdb
+igfhu (31)
+qkhhg (105) -> yknwap, qqqsv
+ybewhak (122)
+xkizl (18)
+siqksje (53)
+vtbzq (178) -> tenzzu, ocpzltp
+giblwzi (7)
+atjtgjx (59)
+bjlwfmo (49)
+jibdphs (64)
+cxlfgl (92)
+wltlu (1495) -> swumt, qeosq, guhyk
+lkqiqa (57)
+qwlepd (44)
+rmvry (145) -> ejzfwt, pknjpc, qfhkgt
+xmpdevf (185) -> rjmdre, abcyotz
+utwzg (10)
+lpascsz (58)
+abcyotz (21)
+grqjew (73)
+vindom (25)
+tzmes (28)
+ktwby (44)
+gfsnsdu (38)
+ywlub (66)
+iryrfjs (31)
+fwfpmti (34)
+givljl (68)
+edebwk (161) -> dtjhnzr, cipxwb, uqcqc
+aziwd (48)
+ajtjnwp (46) -> clfrs, qdwkxia
+nvlqab (27)
+dvwsrc (1517) -> jiyuw, dvtdje
+basjwp (44)
+rhchuf (67) -> sedysm, nedbkp
+cdvmqs (57)
+dkdovw (262) -> afglbpz, ovfduq
+seeqikh (10944) -> mztuzb, zovbvcr, nnjbjm
+bgcrdqu (174)
+huqpiix (121) -> eptcqns, aiget
+bywwy (74)
+aujxmm (89)
+xecqd (12)
+tbppaj (94)
+zkecjv (58)
+utncpu (84)
+grrycy (73)
+htlpx (25)
+pvtat (13)
+dfdlzzt (71)
+uwaij (16)
+edgplu (94)
+aflmt (153) -> puyiail, jaiqusy
+eoditdi (10) -> boqtohm, odsrv, iblrer
+imshim (39)
+nioeugr (38)
+eagggd (22)
+ulznkvm (211) -> meayff, oqiye
+psrzr (213) -> bwdfws, sdrhiyo
+vmmww (69)
+blofdav (18)
+zbfyg (49) -> xoqxrbl, dgnpr
+qzhyumq (25)
+dpcmm (69)
+qvmorke (57)
+exuwhfs (89) -> qumahjn, kkvkz
+rdqvi (56)
+axlgwj (38)
+vbxqhoy (744) -> nquonb, zhudrmb, ryxkvxj
+rqlaf (67)
+mlrdsj (107) -> tzdtm, etmvojh
+tnzqj (1057) -> nbpic, ctgbkrb, bgcrdqu
+lghygm (73)
+wvjjht (60)
+wmvht (36)
+xibdlh (255) -> tgjdwlh, vyffcrm, ahridq
+pjersb (86)
+pdwesa (407) -> ximrdyg, xaebyo, qqpsrts, ucicsdu
+tflulu (3299) -> ezcmm, tnzqj, njkeu, ctpjjsh
+rmkhel (55) -> olkcm, yquqk, iuydxn
+odsrv (76)
+kfbsjv (73) -> ylxxmlt, whqvs, edmljb, bpptuqh, jwjggy, nrkdm
+vywqra (18)
+bnehbkl (14)
+lkwapf (290) -> ttkboa, xvcikqe
+kawloxz (45) -> rttwea, nmfvmam, kwkprrw, gxnoomf
+drrvse (21)
+tklfj (465) -> fcapw, omfvqhv, wgwlbz
+receu (19)
+zqdezgy (72)
+ntkeax (91) -> sbgwln, fgbnlu
+boqtohm (76)
+rpcoxd (252)
+hiqqg (82)
+cdyhvr (28)
+snkox (67) -> mspkmg, lxzucvk, zsqqhe, sgkksme
+zpxqtrg (52)
+olgsb (93)
+hikocbe (92)
+xwpwer (28)
+kzfzp (67)
+dfyyjta (33822) -> hvhjh, ujfeg, iayzdx
+hvhjh (6551) -> uveybq, iqbrs, zrnnyet
+kjpzwp (160) -> fmvyjwj, lsysd
+htyyatf (240) -> fndpz, xtoaq, hhboca, llsvd
+uveybq (947) -> ywpjusg, gapjnb, azvke
+cqbvru (61)
+saqjax (45)
+emlqbo (18)
+jvayv (171) -> daiah, fyjowg
+dtnaqds (33)
+rxuwet (92)
+xnuoisk (64)
+etmvojh (80)
+eqnpvwk (36)
+puyiail (18)
+ijrzzr (77)
+jfuxeo (150) -> xgnqi, dfzfwun
+pzgvsxu (282) -> cltqhc, ruclz, vindom
+tqpgc (1018) -> bbxbrsh, uwxbv, nlhxju, hazbs
+nadbbgx (258) -> akoqk, izwze
+qdwkxia (72)
+rbqcbvl (88)
+wutdi (38)
+mlrjfy (38)
+efxakc (154) -> dfaro, lcsqgx
+dacbtyf (57)
+mevea (303) -> qaxvec, esiwujq, plzfjy
+dsxhhub (12)
+wjzyxt (252)
+pnoxhe (27) -> vjqjwk, enpprra, ftmwqqj
+kkvkz (71)
+clfrs (72)
+zovbvcr (383) -> diyvlug, xhodnx, repak, zjfrc
+jwjggy (210) -> duvrzrl, zsxbg
+xjfkrjs (33) -> ibzalz, rxuwet
+gtvnow (180) -> euvev, kvbdsv
+etfuhz (123) -> zoicqbj, ajvtdl, wmvht
+afglbpz (16)
+nquonb (50) -> avbgwvm, lihivo
+nbpic (148) -> iuoxs, yxvgj
+eivrwbt (17) -> yeifw, podcsx, fhoprd, beeeaye
+gszqlv (38)
+yhycc (121) -> vwkbje, qzhyumq
+gjzddf (38)
+cxpoqyu (72)
+emdsyso (89)
+qqpsrts (85) -> doudbv, mmzdk
+gjwuf (124) -> bjlwfmo, evubadn
+hkhsc (171) -> ipwxws, yrdgv, ckswvj, yjlrwzu, ptmqo, ojishwt, drzrtpi
+mwtojre (207) -> hmetm, utbev, wltlu, ictdnyf
+fqoqkzk (12)
+nkhzrd (5)
+enpprra (76)
+gwcig (75)
+uqcpah (91)
+koued (75) -> kxrfley, tjnyo
+dtxrjg (22)
+pnkag (93) -> ofoto, zzqwzy, zobjfxe, blutjw, aisfhs, gmoliax
+iucuw (99) -> gulset, drrjnr
+fhsecp (17)
+dgrwv (62)
+ibzalz (92)
+tbyihc (73)
+cleanrs (10)
+cibfe (27)
+ycvvjgc (28)
+dnphyfm (7185) -> mpulnxr, sxegjbz, tklfj
+xnxdmdb (26)
+jniisu (34)
+eaqiocy (93) -> dywjt, kikfs, fpmipcr
+bugtxto