2024-19 in haskell
This commit is contained in:
parent
dba0d99aa7
commit
cc7e97348b
4 changed files with 502 additions and 0 deletions
10
2024/19-Linen_Layout/example
Normal file
10
2024/19-Linen_Layout/example
Normal file
|
@ -0,0 +1,10 @@
|
|||
r, wr, b, g, bwu, rb, gb, br
|
||||
|
||||
brwrr
|
||||
bggr
|
||||
gbbr
|
||||
rrbgbr
|
||||
ubwu
|
||||
bwurrg
|
||||
brgr
|
||||
bbrgwb
|
42
2024/19-Linen_Layout/first.hs
Normal file
42
2024/19-Linen_Layout/first.hs
Normal file
|
@ -0,0 +1,42 @@
|
|||
-- requires cabal install --lib megaparsec parser-combinators heap vector
|
||||
module Main (main) where
|
||||
|
||||
import Control.Monad (void, when)
|
||||
import Data.Functor
|
||||
import qualified Data.List as L
|
||||
import Data.Maybe
|
||||
import Data.Void (Void)
|
||||
import Text.Megaparsec
|
||||
import Text.Megaparsec.Char
|
||||
|
||||
exampleExpectedOutput = 6
|
||||
|
||||
type Input = ([String], [String]) -- patterns, designs
|
||||
|
||||
type Parser = Parsec Void String
|
||||
|
||||
parseInput' :: Parser Input
|
||||
parseInput' = (,) <$> some (some letterChar <* optional (string ", ")) <* eol <* eol
|
||||
<*> some (some letterChar <* eol) <* eof
|
||||
|
||||
parseInput :: String -> IO Input
|
||||
parseInput filename = do
|
||||
input <- readFile filename
|
||||
case runParser parseInput' filename input of
|
||||
Left bundle -> error $ errorBundlePretty bundle
|
||||
Right input' -> return input'
|
||||
|
||||
compute :: Input -> Int
|
||||
compute (stripes, designs) = length . filter id $ map compute' designs
|
||||
where
|
||||
compute' :: String -> Bool
|
||||
compute' [] = True
|
||||
compute' design = or $ map compute' $ catMaybes $ map (\s -> L.stripPrefix s design) stripes
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
example <- parseInput "example"
|
||||
let exampleOutput = compute example
|
||||
when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput)
|
||||
input <- parseInput "input"
|
||||
print $ compute input
|
402
2024/19-Linen_Layout/input
Normal file
402
2024/19-Linen_Layout/input
Normal file
|
@ -0,0 +1,402 @@
|
|||
wubr, uwbu, ugwru, wwgrgwbu, brwwuuwb, wgu, rw, rgb, ugr, gwuurww, rrb, ugwg, wwgb, rwr, wuw, wwbb, wwgrwuw, gruggu, ggb, wrrgww, gwuu, bwb, wbbubwb, urwgggg, bubwu, wbb, rurrgwgg, rub, urr, uwrgrgwu, gwgb, wbwb, gur, brw, bg, gugrwb, ub, ugwgu, wubbg, bubgrw, wgb, wgruu, bgg, bbuubbr, rbbw, ww, grgrb, urw, rug, wbwrgw, brr, bbgrguw, rwb, bbguu, gwbbg, bubg, wwuwwb, urggwu, bbwg, bbbwbbr, wwb, brgwbuw, wwrr, bwu, urbu, wguuw, grb, urbrbbu, rwg, urguw, wbg, uuru, uburw, bbbwrb, urwbur, guu, rbg, gwgwwrr, rbwu, r, wbw, gb, wgwg, ubw, bb, rbgru, rrbuwg, uwb, wuub, uurrub, wuu, bub, uwww, wug, grwguwu, bwgggbrw, uwu, wb, rrbgwubw, wubu, urbrg, wrbw, gruw, rrgwg, bbrub, ugu, gbu, gburu, wgbru, ubwu, brggw, wurr, bgwwgu, wggw, ugbgur, gwruww, wuwww, rbbbrug, wgw, gggu, rgrww, wgwwrg, wuugbw, rggb, brurrg, rbuu, ruu, wrrb, wwwb, gbguuuu, ruubur, gbwrw, gbgu, rbw, ubbb, wr, buwug, grw, wrbu, guwwwur, guw, urggurbu, uwg, grrwwwr, gbb, ruuw, ugww, guurw, grguu, gwrwrr, uwrwr, ubrb, wrrw, burbru, gugg, ubg, rwbu, rruwbru, ugbwu, gbr, ggwwg, rubbugg, wuwb, rrgw, rrbuu, rggbu, gbguu, ggr, wwwbgu, gbrw, bbbug, wrwwbb, wrg, buu, gwub, brrgugw, brg, rwggg, wuuuuugb, guwu, wgbbb, urur, wrr, wugwggu, uubgg, gbg, wgub, grru, uu, gbgbw, wubrg, wwrb, urrgb, wbuurrb, bw, bbw, rugbuw, bwbu, wbu, rrgwgbru, ggurrrb, grr, rrgug, rgw, rr, gbwbbww, ubbru, uuw, ruwbwwr, gwu, ugw, gbw, ruw, grww, ubbwrgrg, wgg, rwwr, ggwur, buuru, bbg, ruwgg, ururu, wrb, b, wbbubwgr, uub, brgr, wbbrrb, bru, wbbub, ggbbrg, wgrwbwr, gwrg, ubwruw, rurrb, brug, wu, bug, wwrruuu, uuu, wurgbu, u, bbr, wwrwu, wru, wbgr, ru, rwgguw, wwu, ggbg, ggrgu, wgwurw, ruwrwu, ggg, wggggbu, rbugggg, wwbbu, w, rwru, bgr, gr, bwwb, uggwbwuw, grg, uur, wbwrrugb, wbwg, ggww, wwg, rbwg, gub, bbb, gugbu, ugg, rurrg, brb, guggww, bugb, ubrwww, bbwr, ur, wwr, uru, uuurrw, wgwwbb, bgbbr, gugu, bwrrgrrw, bgw, gbgw, ubgrgr, wrw, grug, ugggww, wbbwg, rbwb, ubr, wgwb, brbwbgwu, gubwgr, bruugggg, wgggu, rgr, ugwwgbgr, bgrurr, wgr, gwb, gwgrr, ggw, gurrb, wuwubw, brbbgw, ububrbw, ubbrw, ububu, ubrbub, bggu, rwrgb, burwg, wrru, rg, rrbww, rrww, wrwb, uuwwu, bwuwr, gwbr, urruwrg, rubgbr, gwgbw, rbru, wrrubw, bgwugbr, uguurg, wwrg, bwr, rwrr, uwugr, uug, wwgu, wwrububg, www, bgb, urg, wg, gu, rwu, rbb, gwgw, grggguuw, rbuwrru, gwug, bgu, burgb, bwrubu, uww, wur, rurr, rrr, wwbrr, wwbbrw, urww, buwugwr, rbuurb, wub, bbbw, gwr, wwbgru, ubu, uugrg, rbu, rrg, gggg, gww, ubgbb, wbr, ururbwu, wugr, uugub, br, bgbb, grbgrw, gru, bgur, bbu, rru, ug, wwgugub, uuwgg, wguubw, urwbruw, gbbb, wrwuw, wguw, gbwgrbw, rwwwu, brgru, bu, rur, rbr, wrguugu, bbrr, wbgb, ugwbwu, wrbuwr, ubgr, uwbw, uwwuwrrb, gwugr, ggrr, uurgru, brbrb, brwbrr, bbru, ruwub, rrwgu, buw, ggu, rggbbr, brgw, bguwr, wwbgu, rgu, bur, urrgbu, uw, uwrbuw, wrubbw, wubw, bww, gubgb, rww, bbuwggg, bwgr, brwb, rgg, rb, urb, bgrw, wgurgrr, bgwuur, bbbu, wbwrgg, uwr, ugb, rwbg, gbubbuw
|
||||
|
||||
guuggwbugbrrwgwgrwuburuggwwguwbgrrbbguugrbgwugu
|
||||
gwguggrrbbwwgwugugwbrbwbgwuuuuwwrbwrbbbgrwwrwwbbwbgww
|
||||
gwgggggwwwbuwwburbbrrguugrgruurggwburgruruguurwwuruguggr
|
||||
gwggwuwwwwbuwrubbwrbwgrggruwgbuuwwbbgwrubwbrgu
|
||||
gggbgrbuguwwgrggbrrwrrgburgbrubgbubrrbrbgguurgwburggrwwbub
|
||||
gwggbbrrbbwrrwbbubwgrrbwbwbbburrrgurrggwrrr
|
||||
gbuwrwrrgruurwuwwwrgurbbubgururbbuuwbbgggrwrgb
|
||||
gwgggwrggrrwbwrwwgbbrgbbwggwwgurrubrrrwggbuwrrrrwrugrbw
|
||||
brurbrgbubuugbwrrubwwwbgbwbuurwurgrggrrbrbuuwbbw
|
||||
gwgrwbbwrwbuurrgubrgbrrgbwwugrwgrwgwuwrbruwwbwgugrbbbbbrgwb
|
||||
wruubwrwwbbrugbwwbbrbbrrbubwrbggwrbugburbggubuu
|
||||
bwgrbbuwwugggwgrrwwwrgwuwwgbbwbggububbrugwbbruubggrb
|
||||
gwggbrgrburwbbwurrbuugwbgbgrbrwurrbuurgwbgugbrbbgr
|
||||
gbwguuuuwrbwwgwgwuurwbrugrbrgugrrgrgwrwgwrwurgg
|
||||
gwgruugubrbwbruwbbruwbgrbugubbbwrwurgbgbburwguw
|
||||
gwgrggwgbwbuuwubgrggbguurrruwuururuubbbguwuwrbbruguu
|
||||
rwrwbrubbbbrrrwrwgrgwuwbgrrbbwbrubggwubrwwguwb
|
||||
gwguuubuwwbbubggugrugwubbbrbwgbugbwgwbbruuwwuwgugbbwwwwrugr
|
||||
ggrgwggrwuggwwrbrggbbrurwguwuubrubrwwguburbbrubgwubgg
|
||||
gugbrggrrrguuwubgbwrwbrgbrrugwwrruruuggurrgbrwrwru
|
||||
bwuwgugbgrwgurbbgrgbrrgubbguwbburrwwwbgguwwgrggwwrbgwuwbww
|
||||
gwggbwwubbbbbrgrgwgrbburgrwgbbruubgrgwgwwugwbbrubggwgbb
|
||||
bbburbgugrguurubwwwwurbuubrgwwuururuuwbbuurwubrggrwbuubw
|
||||
gggbrrwwurwubrrgrburgruwwuwrrguurbruwrugrwbuwrwrggguwrggw
|
||||
rgbrguurrrbrgguurwrbbwuubwgrbguwgbugbwuwbbgg
|
||||
gwgubbruwwgwugrwuugwuruuwrwbbubugugguwwguurrruruwbg
|
||||
bbgwugurbuwgburbrrrrgrwwrrggggwuwbgbwrguwwgurgwuggrburrwgg
|
||||
gwrrgbwgugugrgrrggggrwugwbwgrrgwugurbwrbbwwrwggubrwbur
|
||||
rrwgrgwwwbbugrgwrbubuguwgggrgwguugurgurwrggburguwugr
|
||||
gwgugbrguwrbbuggrgbrwubgwubwwwrwrrrbbgbbw
|
||||
ruwgwuwugrrbrgwbgbbgbwugwuggruwuwurgbuubbruwubburbguw
|
||||
rwrugrgwbwuwgbwrbbwrrruubgubbwrugggugbwggbgrbuuwruwrrrgbuu
|
||||
wuwbgwgwggwwrbgrbuwbwrbugwgbrugrggggrggwuwuggwgubgu
|
||||
rbrgrwwrubuubuwuwwrgubggubrbrgggwrwrwrgwuu
|
||||
gwgururwgbwruwwggbwuwwwggugwwwwrgwbuwrrbbbgrgbgbrwurwbrwgw
|
||||
bgbrbgbwguwgrubggugrwrbwrgrwgubgruggrbburrbgwubwuguuw
|
||||
rguggurbgwrgurwurggwwgrwugbwgwbbbrbrurwggg
|
||||
gwgrgrgbbwrbgrwubwbbuwruuwurwgwwrwuruubrwgburbgwgbu
|
||||
uuubwbgruwbrwrubwguwbugbgggwguggrwubgbbbuurrguu
|
||||
gwgggwrbbgbrgbrwrbrwggrbrrwbuububwgrrrrggru
|
||||
gwgguwgurrrrbwwwrwrgwbbgurrwurrbubwbgbruw
|
||||
uwrwubgwuwbwggbgrgugbbwrwwbbbubwgrwbrubuuggggrwrrwwgrb
|
||||
grrwruuguuurgurwgwwgbrwwburwbuubrbggggrbrgu
|
||||
urgrruurbgurubrrbbrrrrgwrbbwguwrrbrgburwwrbwbrgugbugbgg
|
||||
rggbbrbbbgbburwrwrguwrwbwruwubrbgugrgugwbwbrwuggbgwbr
|
||||
wurbgbwbbwgubbburbrgbuugugguwbgrwggrruburugrb
|
||||
gwggubbgbgggwbbwurburwwguwbwbrggbubuuggwwr
|
||||
wrbrrbwrburbrgrubbwubbrgbbbuwrurrrrurubrbuuwwwubrbrrbr
|
||||
buggburbubbwrbbrbbwwwgwgrbugguuuugbgguuwrrgwrrbbrrgrwwgbru
|
||||
gwgugubwgbgrururgbbuguwwwbwrrugbbgrubrwrwuuwb
|
||||
buwrugurwgrbguwwrwgruwrgbbbwwruubugrubrbbwuub
|
||||
rwgwwbugbbrgwwrwrrrrrwgrugrbruurrgrggrrgbbruub
|
||||
ubguwwrgurguwwgbbbbbwwbburrurbuwwrgbwbbgrgbwwrbubbggbr
|
||||
urgwwrbbwggrwguugguurgugbuurrubrgbbuwbrwgwrwbuwuuw
|
||||
gwguwbgrggwugrrgrwbwrbugwgwgbubguurggrbrurugub
|
||||
ubgrbuwgguwgrbgrbguruwrgrgwuwgggrgurbwggbgbg
|
||||
wrgugrgggubbuwgggwbgubwwrwbgbuwgwgbbwguubgbwbr
|
||||
bwgguuuggrguwrubbruwbrbrgburrguwrrbrggwwbb
|
||||
gwggwggbrrgwgbruubwruwguwbugwrwrwrrwbwwu
|
||||
ugbuwrrwgwbruwurubbgruuuwrrwgbgwugbuubgwwugbu
|
||||
gwgugrgrrurrwgburbwbbwuugwruwrubrrbgbrrrrrrbguugbwb
|
||||
wubrrbuubugwrbburrrbbwwbgrwgbuuururgrruwbgrguwbwubgbu
|
||||
wurbruwuwrwggwuwrubrggwbbuwbgbggbbrwwwbuugbwrguwugwuugggub
|
||||
grrubugurbbbuuwrrrugggrbggurbbuuwrwbggubuugugwgrbguggggbw
|
||||
buwgrgwuugguurbubrwurgugbbwrgwgguubwgwgwwbu
|
||||
uggrwgggwgwwugbbrrgrurgbggwbgrbwwgugrwwgwr
|
||||
bbggrugwrbwggggbgbbwwrwbbgwgwwugugwbuwrugbg
|
||||
bubugwbwguwububwwwuwguwurbwwbbgurugwwuwurwbbbugbwrrgggb
|
||||
bggurgwbgggwbguubgwurubgrwbrwuwwgwubwbrguwwwuuuug
|
||||
rubguugrwrubwguuwrgwurbguuugurgbburrruwwrgwrggbggwruubwr
|
||||
wbbbruuwuwubbwrburugguurbggwwgbbrwwwbrggggwwu
|
||||
gwggrwbrbgrrbuwwgwuubrwgrwguruwrrgrbrbruwrgrgwu
|
||||
gggrbwrruuuuwruubgrgubrgrgwuwgbrwbrwgurgugbgugbruubrrgwwb
|
||||
bbwbbubgguwrbwbwubwgrbwurrbuwgurrwuuubggrbwwrwgbrwbuwrbuub
|
||||
gbggguuruugwrbuuuwgbwbububwbwrrwwubrrrwwbubrbwugbrug
|
||||
buuwgggurgbgbguwrruubruubbuwugbrggbrbruubwgb
|
||||
brwbrrrwrgurwgbugurubbguubbuwubrgbuwrgwbbgbwrbbwwg
|
||||
rbgwbuwuugbruurrbwbggrurguuwwgwbbubwgrgugbbwburbuggbwuwrru
|
||||
uggbruuuwwrurrwurwbwgbgwugwbgbwuwrwrwuuwubbrwruguug
|
||||
rrrwguwuwbbgrgrrgggwubbwrgrggrrwrrbgwbbrwgruugbgwrwwuugwr
|
||||
gwwbbwbgbrurgwbwwggurwrwgwbbrwugugubwwuwwbwbw
|
||||
wbgrwbbgwuuruwbbrurubgruwgwggbruggggbrrubggrwgbrgwuuwuwrbb
|
||||
gwggbbwgggwgrwubrguugugrururrwurrwuwbwuubuwrwuwuurgrbuub
|
||||
ubuggrwbubrrbggbgrbubbburgrugwurbbuwgwbwrwwgbwugubgwuu
|
||||
urgubgwwwwrubwwuuuwbbwwgwwrgwwwwwuuwbrgruugwrrrwuggw
|
||||
bwuwruurgrrgbbgrugrwrugbrbburbrwbugrbgrbrgug
|
||||
gwgugrrgbuwuwgrbrurbbuwgrububbrurrrwrugbbbrrruubuw
|
||||
gwrrbwwwburubbrgbwbugbuubuwwbwgwgubrburruruwgbbgurbgb
|
||||
gwguruwwuwrrbwggrbubbubwrurbwggwgurrbbubgbbggbr
|
||||
uwgubbwuggwubwbbwbwwrburbuuururuuwrrugwgurwrrrrbrbwwuubuw
|
||||
wbrbbbgwrgrurbrugrgwgggrgbggrruggbggwbwbwruggrurwu
|
||||
urgrbbwggrguurgrwwugbrrbwruwgwbbuwbuuwggwbgrguurgbwrgwb
|
||||
gwguwwrrrwgrgubbgrgbbbruuwgbugggbggurgrbwwwrrb
|
||||
gwgrgrwurrwggwwgbwubwburwbgubbwrgwurrwgwbruubburwbrwrwwww
|
||||
gwgubwugwugguwbrgwwbggguruburggrugwwgruurbrgrwwrwbrbgbwgw
|
||||
rbuurbuwurwrrggrbbburwwuugwbwrbbwgwbuwrrbu
|
||||
uuubrbwrguwuwubwgrrgrrubuwbrwwbbrrburwrbwgbwuwbru
|
||||
wbubuwbrgwubggbrrgwugwwuwbgwrrrgwgbruuwgggwgggurgrgr
|
||||
gwbgwggrgbbgwwwwgbrbwguurwbwgwgugrwrrrgrbwrgggbgr
|
||||
urrwurrwrurrgbwrbwguwbgbrrrububgbguuubbbwb
|
||||
uuwwrbbubruwuwrwwwrubrrbbrbbwwbuwbburbgbgrgrrbuwburuwbugr
|
||||
rrwggurbubbwbugwuuwuwggugwwwwugrrbgwbrwrbgburgbbrwu
|
||||
bwwgrugurwwbuwrrggubgrurgrwbwrrbggurgugwgrrguubwugw
|
||||
bwbbubbgbbruwrwuwrwugwbrrwgbgrbrruruubwuwwggg
|
||||
gwgrbwgwbuggbwbbggububbuwbuuuwrrurwwbbgrb
|
||||
gwgugwgrbbgwbbrwwbbwurguwwrgubuwbbbgrrurugbbw
|
||||
gwgrwbbbgbbbwgrrubrurbuurgbgggububurbwbrrgggwwr
|
||||
gwggbgrurgugwwburgwwrububguurwurrwuwwwbgwguruggbgwwrw
|
||||
rggwbwgbugrbwbwbwwburruwrurubuggwubrurbbguguwrwuwrg
|
||||
uurrggwugrrbuubwgwwgbrbuuuwugggguubuwbbwgggrrburggruwg
|
||||
gwggggrgbwwwrrrgwbgrbggwbwrgbrurgwgbwgbwwuwgrbgrwugbg
|
||||
wuurgrrgguuwbgugubrwwubuurbbuburrwgwugugwggbwrggurrurrb
|
||||
rwgwwgbgbwbbrggrwwrwgbuuuugbwbururgugwurwrubuuuuw
|
||||
gwgguurruuugbbrguuggbrgwgrbgbgbwrrurruwwwurggrg
|
||||
brurruwgwgrugbgruwgrrwwbrbuugugrrbgrwrburggurrwuuruubrwbu
|
||||
buurbrbgrrbrgwrgwrrwguugubrwwuuwbgwgruwuwgurrwurbrrwb
|
||||
gwguwbgwbuwrbggbururbrbuwugwwguwrurgwgbgbgrbruur
|
||||
ggguwuruwuwgggwwbrbbwuugrwgggbrgwbwwburrbbbuwuwbgwgw
|
||||
gwgubbrrgrrwgurggbwbgbbbrwggwgwruuwbwgggbrwgwwrrurbwgbgg
|
||||
rrgwubrurrrrwuurrrwuubrwrwgbgrwbgwubwwwbbbwgrwwrwb
|
||||
gwguwuuugbgbgugbbwgruruwbugrgwbrwbuwbuuggggwrwrurbbrgrbu
|
||||
gwgurggbwrrgbwwguggwugrurgugrurgwggbuubbwr
|
||||
uwurgugguwbbrugwrguugrwuwwgrgwguuggrbuwrbwgww
|
||||
gbruwggubuwrwrgubugrgbuwgubrgrugwbbwbwbbuwgrgrgwwbrub
|
||||
wbbgubguubwbbguwrwrbruuwbguwbubbruuggrubbwurbrbbguggb
|
||||
guguwbgbbrugbugwbbbuwrrugubwrwwrgguruwrgggrgurrbu
|
||||
uguggugbugwurrrbgurbbugrgwrwbwrrwwbuuggbrubrgbrrr
|
||||
wgurguwrgrrrwgbbgrbgbrbubrwbgbbbgguwrrwgbbrgbw
|
||||
bugbwburwrbuuurgwrubgbwurwrruurbgwgbwgwgwbruuruu
|
||||
gwguruwwwgbwrgrbrgubbrguugrgrgugggrurbbwubrwwuwwguggr
|
||||
ugbwbgbwubrwwgbwrbwrgwrgbwbrrrburgwggggruwb
|
||||
gwgugwgbwrugrugugwwuwwugwrrwbuugbwbbgbbggwuubrgwgw
|
||||
wwwrrbwuuuwurrrrgbgruwgbburgrrrrrbrbrrwrrwbgrgburw
|
||||
bbrgwgruguwgwwbrgruubbrrwbgburrrubgguubrubbwgb
|
||||
wbuuuubwggbbggwuggbwwrbubgrrurrwbugrwgbbubgrbrwbrgwbgwru
|
||||
grbgggbgbubgubggrrubugggrrugrbbubruwgrrbub
|
||||
gwggbubggrwrbgrwbrguugrggguuwggwgrwuubwggrw
|
||||
gwgguruggggwbbbrubgbwwbbgurggrurugrruguuuwuu
|
||||
rbbgwwuurgurwbbbrbbwrwbwwbwbbbrruuwruwwbbwgubgbrrwuugrw
|
||||
gurbwuggwgurbuwwggugwbgbwrrubgbbbrgbwwrbwurwburburruwgb
|
||||
gwgruuwugugwugwbbbgrwwwbrgugbgrwuwggguggugwwgbgrr
|
||||
grbrbbwbwugruugbrubggubguruubuurgwwbwbwrrugbbbguw
|
||||
bggbbuugruggrgwgurugrurugbgubbgrbbugbrwuururwruugwbrrbr
|
||||
gwbgwguugwggbrrbgugbuwwbwbuwururwgurrrgurrug
|
||||
bggrggbguguugbrwuuwuuwburubgwrbbrbbgbbruwww
|
||||
bgwwgbggurbbrbwrbbwuurrurbggubrrwubwbbwgwwrrur
|
||||
burwugwwbwruwrubgbwbuubbbbrbrgwgugruwrubwrur
|
||||
gwgggrrwbrbrbgguugbuwgruwgugwgbruuggggwuuuwwrwgrbggubu
|
||||
brwuguubburburubrubrugbbbgurwubugrugwwgwbrgrg
|
||||
ruugurrbbbbwrbrwurbbbuwwbgrggwuwwwubrgwuggggwbwuwgwrrrbgb
|
||||
wgurggurbububbgrgguwguurruwbbbbgbggwburgbgrgwrwgbrurr
|
||||
bwubrrbuwbrbbwbwgwwgwrrubwwbbwbbwwbwugrgwuwu
|
||||
wbwrbgbwwrwburwgububrwgbbbwwgbwuwbwgbwgbwb
|
||||
wurgrurrwrbgrwbbrrrgbwuwugububugrbugwggbbrguu
|
||||
uurgwrrgrgbrwwbugurubwwwrgbrwrrwuuugrbrbgruguugbgbbbub
|
||||
brrrrrguurrwgbbuwrgbwubwgrgbgrbbwgwbwbruguwu
|
||||
rggubgrgwwgggggwurrbgbrwgbubrwbbrbwubgbuggggrbw
|
||||
ugbbwbrruburbwgubbwbwwwrugbgwugwubrbururgubugrbbrrbggwrb
|
||||
wrgbgugrgburuugugbrbrruurwbbbbwuuguwugrwrubgwbwubwwguguubr
|
||||
wgbuurbwgrgwwuubwbbgggbburbwbrbgrrrwgbwbbwrgu
|
||||
gwguwrwwbbugbbgbbwubuugruurbuuruuwgugwrrguu
|
||||
wwubburgwurbrrbrbwuguugwrrwurrgrrwwuubrwubuuwgbbb
|
||||
guuwrgrwbugbwubrbubrgrrbwuwburbrugrbuggugwwrbgrwwr
|
||||
brrgurrugwbrbruuurwubwbgrbbrbrbwbuwuugwuuwgwurururgu
|
||||
buwgurgbrrrwbgwbbbrrbrurwuwrbbbgrrbbgwwgrrbw
|
||||
bbuwbwgbuurugbbwgurwwbbwguggbrguwrwggbubuwuggwrwugbwburwwu
|
||||
wrrrruwuwrbuugbwgguugbrurgrgwbuwbbbbgggrgwuwgruggwgubgwr
|
||||
brgbguuugwwrwugbwbrbwrurwbuubbrbbgruubgrrgg
|
||||
ubgwgggwbuugrbwgwrgbwwrgbrbrrgbrrgburbbrurrubrugbgwu
|
||||
gbubwgbgbruwrgububrbwbwgggbrwrrbbrgbrggwwuwbbbgww
|
||||
rwwrrubwrrrbgbrbbbgrgbbbuggubbwburugbwbwubbgwggg
|
||||
gwgruuguguggruugwrwbugwbrgrwbwwbubbwuwbgb
|
||||
gwgurrgrwgwgbrgwgrgwgubwbwrwguwbggwgwrwggbwrgwwuuuububgwgb
|
||||
rbrrwwbbuwgrbrgwrwbbgbugbrgggguwrrrrugwbwgurrgu
|
||||
bgbwggwuwrrrubbbgbwrrgrrwrurrgwwwrrrbwrubuubbbrg
|
||||
wggwbugbrrrwggwgbwwugugrwggwwwguugwruggwbwuwggrrrwrwub
|
||||
ubrurgbgwubbrwwruubuuwbwgrruwwwubguwugwwgbgrgubrgw
|
||||
ruggbwbubgubugugwggububuurrwgrwuwbuwwugurbu
|
||||
guburggbwgwuggrbbbguwgurbguwrrrwguwwwgrbwgubrg
|
||||
bbbgbbbrrrrbwrgbuuguwrgrwwbbgrbuububrggguwrgr
|
||||
buwgrrwgubwugrwwrbbgbbwrbwbbrubuwbbbgwbbgbru
|
||||
bbrrbuguwwbbbrgwuugrguuwwwggwrwgbbguurwwbuugurwurgbubgbu
|
||||
gwggguburgrrwrgwbgurbbbrwwuuwbubbguwwuugrugbg
|
||||
bwbwrbuwwrruuuurrubbrubwrggruuugwururwwgbwbuwrbgbwuwwgb
|
||||
gwgugbrurggbbwurwwburgrbuwgbbwugrgwuuwgbrrurgbwrwurgwgbuwwb
|
||||
wgggrgbwgrubguuubrwurrrwwbrugbbbubrgbgrrwgb
|
||||
wbrrgbgrgrugwwgugbrbgbugrwgrwwgguwwgrgwuruwrgu
|
||||
rwugrbrgurbrubburbbgwugwwubguurrruwbuurgrgurgwgrwggub
|
||||
urrwguwrrrbrrrgrrruuwuwubrgbrbbwwburgwrwrbruugggggb
|
||||
ruugbwwbwbgguuuugurwbbrrwruugwgrwwbrgwuugb
|
||||
gwgrbguugwbururbwuwurbuubrurgwrwgurwwugrubbwbuwbgwgubrrrrb
|
||||
wwwwwgbbugurggrubbububwugbwbguwrgbbgrwrrrbbrbrbrruwwrr
|
||||
gwgrgrbrbwrwuuugbuwrwuuwwwrwbubwrbwwgbuwbbrbbrrubugb
|
||||
gwgruggbrrrbgwubwwggbgurgwruuuurrrgrgurrrbrrrgggrr
|
||||
rugggwgrbubgwgrgguugwgbbggugwrbbbwgbgwburrwggbbbbg
|
||||
gggrrugwbbgruubgbwrrwrubwrggwgrrubgwwwuurwubwwrurrw
|
||||
gwgurrrggrggrguguurgubgrgwrbbrbrugggwubgruggburwrb
|
||||
urrugbrgbubrrgbbugggguuwwgbruuwuubgubbrbrwrbbrbwbb
|
||||
gwgugubwrgbrubbbggubbgwrrbwuggwububrurgw
|
||||
rurgwwwrgwruubwurbuggwugburrrgwrburbgbrbubwu
|
||||
gwgrwgruwgrbwwurrwgggruwbbrrurgwgubwburbgrugrwgbwruuwguurugw
|
||||
rwrwuwruguwgbwubwuugwggguwrgruwgrubwwrrwrbbuwrgguubwg
|
||||
buwuwgurwuruubguwgugbwbgggbrurwwggrgubbuwuggrbu
|
||||
rbrbgwrrgbbwwwwrgwbwrurwbrrruwurburgrrwgbwrwwurbrrbbg
|
||||
wwgbwrbggguwwwwwbgwruruubgrwurgbuugurruwbwrrg
|
||||
rrbrwbwrwugubrrgbuwbrggrgrrwrgrrwwbubguggrugggrw
|
||||
gwbuubguwgurwbbwwgbgruwgwwgwwrggbrrbgubrubwgbggu
|
||||
gwguugrbggwuwwgbrwugubbgwrrrgwbwrrruuwrugguubgwbrggwgwb
|
||||
rgwuuubrgurbwbrgwubbuububgurwgubgguruuggbwbg
|
||||
bbguruwrruggwuwuguwrgrbwugguwuwrrrrrwuwgurrwrruwwbrbu
|
||||
ruuuwwwrugbuwuwurbubrwrugwbubbubwruguggrbrrwguwrwugwugbbw
|
||||
wrwgbbwrgwgwrwwbgbruuggugrwgwwrbwgbuguuwbbg
|
||||
wwbwurrgwugrbrbgrgwugbugrbbbubrgugwrggwwug
|
||||
ububggururwrubwrguwruwuwbrwuwurrwrwwgwrguwwgwgur
|
||||
gugwggbwgbgrrwwwrgbggwrwgugbuuwbgrburrgrbgrwwbbrwbrbwurgw
|
||||
gwgurwbgbrguwgbrwrwbwuwgrwrurwguubbrrbwrbwgru
|
||||
wuubbugguugrwwgwrggwbubwugggurwruguwgbrubgwwwbwggubuub
|
||||
grwrwrbugbgbwwbbbuuwrrggwwwubbbgbuguwwbuugrbrwbu
|
||||
ggugbgbwbgbuwbburubrrgbwrwbuugurgwuwbrrubrrrrbbbwruruwwwwr
|
||||
rbgrwbugwurwbgbuwrgggwubuwwrwwwguuggrugwuruwgbg
|
||||
rrwugwbbwbbwubgbubwbgbgbgbbwggwbwgrurrgwggub
|
||||
bgwgrwuruuwbrrrwwwwggguwubwggwrrrwgruwuwuu
|
||||
rwuwwwwwuuwwrggrbrrgugwubuggwwwrbbbubgurbur
|
||||
uubrgurbgbruuguwwbbgwbrrgrrruuwrugrubwwgguwu
|
||||
bguugbbgbguwbggwubggugugrrgrubwrgwwwwurrrw
|
||||
wwwrwrbruburwrrwgugwwrbuubguwuwgubuwwuwrrbgbrbw
|
||||
grgwuubrgbruwuwrrguuuwuwggbwrrrgurgrbgrbww
|
||||
gwgrbuburuurrbuwggrrgrbgurbbwggrwuurwggbggwgwgrgrwugurrwrgu
|
||||
rwwwbbuwwwbrgggguubbwuggwgwubbwwbwwwgbuwrrruwrbrrug
|
||||
gwggugwubbwrgrgwrugbrbbrurubwbbrgrwrbwggbggrgrru
|
||||
grrrwwbggrgwgbgurgwrggwwwrgrggwuuggbbgguugw
|
||||
gwgurbuubwwbbrwbgbggrrwrubwrbgwbbwgruurgguugwggrrrwbburugrbg
|
||||
gwgggggggwbwguuuwgggggwgwbuggwburburrgwrbu
|
||||
ugbruwuwrgurbgbwrrgugwrbbrubggubbwwwbgwgbugurbgbrg
|
||||
rbrgwggbwrugbbrrruggbwuruwgwbgbwruurgwwwgbwg
|
||||
gwgrbbgwubwwgbbuubrwwuwugbggwbbbuubrbggu
|
||||
gwrubwgbgwwububrrgruggbgwbuwgwuwuggwbbrrbgguwrrgrrubuwuu
|
||||
bgububbrgrrurbugbgwggbwrwugurrrbburbbgggbwubwbubgwrwuuuub
|
||||
rguuuggbbrrurrbrgburrggwguuwbrruggrrbggrwgwgrgwgwuw
|
||||
uwrrrgubgbgrubuurbwbruuurrbrwggwwgrwrguubgrww
|
||||
rwwuuuuguwwbuwbgrggubbgwbbguguururrubwwgggruuwgwwgbg
|
||||
rurrbububwwrgurrbgggurggggbbuggbbbrbgruwrbwbubuuwbwg
|
||||
rwugugugugruburbubwrrgrgugbrbgburrrgrbbwgwuwu
|
||||
ubgbwrwbrbwrggrubbbgbbuwrgurwwbrwwgrgwbuwwrgrggggb
|
||||
ubbbbggwgwguruwrbbwrwwrbrubbwgwwbgrgwgwgrubbrurugbwrgrrrww
|
||||
gwgubggbuwbgwrwrrruugbbwrbbbwbruwbwubrgrgwbwu
|
||||
gwgurwrwrruwbwgwrbrrubbgbrwbgugbgugwrrgwrubgwbguuwbw
|
||||
rrbwurbrrwwrurrugwbugwbuuggbwbwugrwguurwrwrurgbgg
|
||||
ubbgwubuurgwwwuuwugrgwwbbwubwbrbbrbrguburgbrbggrg
|
||||
gwgrwrwwggwgggubbuurrugwubbwugrrbrwwrruuwbuubugwrgrg
|
||||
wrbgbgrrbuwrwrwbgurrwuugurgbwubgrgurgwgwgb
|
||||
rbgbgbrwubuwggrwwwbrgubbruwwbbwbrbuwwgrbuwgwwur
|
||||
wubwwguwgrbrwwgrgwwwubgwrgggubwruwgrbgbrrbwbwbbuwuu
|
||||
uubrwbbubwbbguwgbububrgbrbuwrbruruuguuggbwu
|
||||
ruwgbrbbwwbwbuuwwbuwuwugggrbwggwwwbrrrrgubugggurrbwrbbugu
|
||||
gwguuruburgubgggrgrrwururubbwbgbwgrwrwrrggg
|
||||
uuwgrrbrurwrgbwwbbrbbwwrwubgrwwrububgbbuuuruwgrwruur
|
||||
ugggwrubgbubuubwwbbbbuuubbbuuubgurbburuubrrruwrwuw
|
||||
gwggbbuubwbrubwubbwruurrgugbubuurrrrgbgrbguubu
|
||||
burbrwwrrbwrrgruurggbwggrwwbbggwbbuururbrrguwbwbwrbuwbgrrg
|
||||
rurguwggbrgubwbbrruugubgburwbgrwruggurgugguurwrrrwuwguruww
|
||||
ggwgwggwggwwrbuwgrbuurbruggrrrwgubuggbrrrbggwbrggrwbbgrb
|
||||
gwggbuuwwwbgurgbgubgwrrrbrbgwrbbbbgrbruuww
|
||||
gwgurrrrrrwurbgbubgbbrbrwwggbubbbwguwwgguu
|
||||
gwggurrwbbbugguwbrwgwrwgubruruuggwbwggwwrrbuwwurwwbrbu
|
||||
bubuurbgrurwwuwwgubgurwwrgggrgbuurgbwuruwbugbgwbu
|
||||
gwgruwggrgurwrruwburuwgbbgrwbubggrrwrgbwwwgruwr
|
||||
gugwgubbbruggwbrgwurgrgrggrrbwgruwwwuggurbggbbrbburubuububu
|
||||
rrburugbgwgugbgwgbbgwggrggguuwurggubrbggwub
|
||||
bruuuwbrbwbgwugwgurubwgbwbrugrrrbgurggwburwrwurwuwrbbuwr
|
||||
brruuwugrgrgrbwwgugbwruwrwugugugrbuubugburwbwur
|
||||
ubbwbbwbuurbrugubgrwwruwbwurrbbgrgbwrbuuubw
|
||||
rrubbubwrbbbgbrwgbuguwbuwwrbwbbwwugubrugbwwbbrbuwwu
|
||||
gwgggbubrrwwbrwbbuwrguwuwuwrwuwbrrgrwwur
|
||||
gugwbgwguurbbrwwgruuguugbuwrwrwuggwbwuwbbwuuuggrwgurugwuuru
|
||||
gbwuurggurbuuguurwbgbgubugggwubgwgruggubbbwgguurwubbwrg
|
||||
gguwugurgbbuuwrbggwrugugwrguwbugwgurrwrrwrub
|
||||
ubgwrwrgbuwrrrurbrbwrbbgrrwgbwrbgugwwuuwguu
|
||||
bwurburrwrgrgwbbwrrbgggwrurggwgbwrubwbrwbuwgbbubr
|
||||
grggubbwwrwrbbburgwguubrwurgugwurbuurgbugr
|
||||
ruurrguwgbwwuwuurrbrbggbgwgrubugwwbbrgwrwrrw
|
||||
grububbgruwrbgrbrgrbwwbuuuwrbbwruuuggwbbbgwugbwb
|
||||
gwgubbrrubugrgwgbbuwbwwurbuuugubuwgubbubruw
|
||||
gwguwurgbguuruurbugubwrgrrrbuubguwggbruburrwwwbgw
|
||||
bubbrwwburwwwbwbbrurrwugwrugbuuwwwuwbwbgrbggrbwwurgurwww
|
||||
gwggburwgwguuuguugrbgwrrubbwwwwrurwrrgwubrbrwuwububwg
|
||||
gwggbbwbbrwgrugrurrgwggggggrwugguruwbgrwgrwwgbbrburub
|
||||
gwggbwrbwbwuggbbbwrbgubgwwbgubruwrururgbruwrgbuwrubwrwuwwug
|
||||
gwguuwwgrwrwubbgrgrrwuurbgburrururguuwgrwugubggubrbugug
|
||||
uggurbbwwggbgwwrbrwuwwrwwrrwrgrurggubrguuruwuuwrgruubw
|
||||
ugwrbbwgggwuwbgrrwwwggrwbgbgwrwgrbubrwubgburggugw
|
||||
gwgugwgwbbrrwbrubuuuurwuuuuugbbbrgwwgugwruwrrwg
|
||||
gugwgrgbwuurbggwrwurrbrrgrrwrgrrwrruguwuwb
|
||||
wbgrrgwuwrrwbgwbbbwgrwrbrrgugbgbgbugurggrbrrgrwrugbbbr
|
||||
wrbguubwwwrgrgugrrbwbbwwurugrrwurubguurrrgruuwr
|
||||
gugwgurbwrrgrgbrurrurwgrurbbrrgwuguugwrgrgrg
|
||||
gwgruugrrbbrguwubuwuwwgbggubgurbwwbgrbgrrrg
|
||||
ugrugrbrwbgubbwbbguurwwuuwbubgrwggbgrrwwburu
|
||||
ggrggubrrbgruuwurwbbbbrbubrrrgbbgubwbwwgbwuwurbbrruug
|
||||
gwggggrwguuwgwubgrwwurgurgguwwbrrrwwbrgwguwrugwwrugggwrbrw
|
||||
wrwuuburuwwggbrwgubgwgrwrgwgwwrwwruwbuwgrbuurburgubwurbw
|
||||
uugugwbgbuuwubguggwbugbwwguuwggrrggurbwggugbbugggururwgwuu
|
||||
uwrbbugggwgurbugubbggwurwbbbwggbgrrgrgbgrbuwgbruwugubrw
|
||||
gwgggurrurrburgugguuruuuuguuwbuguuuwrbbu
|
||||
brgbwruurrggbrwguwbgrwwurwwrbwbwrrgwrwwwrrguuwubwubr
|
||||
rubugwrurrgwgwbbrrrgguwguuwwgubrubuuuwrggwwwrbbrgrbgu
|
||||
bwruuwwgruubgurbgbrgwrgwbugruwrbbwbrrugrww
|
||||
gwguuubwwurbbrubbbrggwwwruguruurwuurwbgbuwwbwwguwg
|
||||
rrbgrrugbrrwwgbruggbrrrguubbrgwwgguurgrwrrgu
|
||||
wruwwuwrwgruuggwgbbuuwwgbrugbrwwbwbuwuggwwuuuu
|
||||
ubgbwrwgrrrbwrrrwrbuwgruwgbrurrwrrurgbbwwrubg
|
||||
gugwgguwwrrwrbggwrgggbwuwubrbuuggrubuggrwrggbbwbgbgwrbuu
|
||||
ugbwbbrbgbbgburrwrgbwbwugwwbubggruwuwrurwgrbrbbw
|
||||
gwguwrwgrubwgbwbrubguwwurrugrwurrgburrbuguuruuwbbwrwu
|
||||
buugwwwbugwrrrgubwwbwgguwurwuuwwrbwrubggwgrrugw
|
||||
gwgrbgwwgurgurgbgruwuuwwwbrbubburggggwbr
|
||||
gwgrbrrruuugrggwbrbrbburgbugwrrgurbuggbubrrbrrubgwbguug
|
||||
ubuwgwuggbgrrubguwbbwwrwggrbrwrggwwubguuwur
|
||||
gwggwbwrrgrrwgrggurrugwbwbguubwbwgbuwbwurrwur
|
||||
wbrrwubuwbuubgurbuububbbbwwuwwuubuubgwbugubrwbwrrugwgrb
|
||||
gwgrwwgwubggruwrggwbrbwrwbwrbbuwwbuuwgrrguurrwgu
|
||||
bguguwrbuuubwugggrwrwbgrbgbbgbwbrubgwubgwuurwwuugwgggwuu
|
||||
gwuurubuwrgbgrubwwrrwbbwrguubwrrwrwwrbggrguwugg
|
||||
gwgugwrgrgggbruwbrwwguwbwrbbbruwgwbrwubwwwwrrgurbwwwwbbbgrw
|
||||
bguugbwbrbwwwbbuwuwruwgbgbbwrbwwgbrurrurwuwg
|
||||
gwguwbwwgubrrurbubrurgrbbrrggrrgwubruurburwbrwurubbubwbwb
|
||||
rwwwururrbwubgurbgbgbbgrrwgwuuuuugbwbbrubwrrbgwbbu
|
||||
gwgrgrurrrurgbrwubgurgwwbggbwwurwguwggugugg
|
||||
gwguuuwguwwubruwubbugwwuwwrubrururgbrguwgr
|
||||
urrbuwurwbggugrwrwgurbgggwuuwbrrrububguwruuuwrruwrbgbu
|
||||
gwgubgrguubbbbrbrguwgbwrbbubggbwwuubrbugrgbgrbwuwgbuwrgbrgu
|
||||
ggwgwgbgwgrgbbuggrubbbgugbrgrgwrbrgurwurggwu
|
||||
gruuugrbbbwwrrubgguwbwgrrurggrubrbbuwbugbguwrrw
|
||||
gwguwrbbubrrgwggrrbuguwbwrrgbwgggggrgbwwgrgb
|
||||
urrrugrbugwwurwuuwwwgbbbbgrgbuwbgguwugrwrubr
|
||||
gwggwubgrwrrgbwurwrgwwggurrburgwbuurgbruuuubgbuwrugrwruwr
|
||||
brbbrbwwrruguruuwrburrwuubbrbwurwgbggbgbuugwrgbw
|
||||
gwggbwbbugwgwgrwwuggbbugwwgubbuwugbrgbbuurg
|
||||
gwrrguuguuggbbbwuwrrwwwrwuwrwwgbuwbbrbgrwwgurubrubrrbuuw
|
||||
gwgubugrbbrbuwugwwubrrwwbwgugbuwwgguurruurbwbbugr
|
||||
wgbwwgbuwurggurrgbrrurwwbgwbugrgbwubgggbrbbruwg
|
||||
ugwgrrggwbugwbrugrggwubbbggrrruggwuuuggwrwugbuubuubuwrugr
|
||||
rbubguguubuwgwgwgbuwurwburuwwwguwbubbruguwuu
|
||||
gwgurugbrugggrurrburgrgubguwbwwgbrgrbruguguuubwwrgur
|
||||
bwwrrbwrruwgbgwgrubruugwrrwgrrbruwwwuwbuwuuwuwr
|
||||
gwggwwbggruurbuwbbugrrwwgrgrrrububgrbbgr
|
||||
gwggubggbwgwubruubgubugurrrrrurubwrruuuwuurugrubr
|
||||
gwgggurrrggbgruggrbgwuwrguwrgwbbgwrubwuuwrgguurwwwrbbgbgbur
|
||||
bwurgbbbgwguruugwurgrrbwggbwrrwrburugurbur
|
||||
wbggwubggwwwbugwgrggwbuwubwgrwggbbgbuwbbwb
|
||||
grurwgbgruggguguwbrugggwubbugrgbugrbbgbguruwwrbgbgwwggbrbb
|
||||
wrguuggubwwurwuububgruwubggwburbwgwuubbwwgrrgbgrbwubrwgbg
|
||||
uwrrwurrugwbrgwbuwbwwrwggbwwbuguwbwbbwwgrw
|
||||
wbwwurwrgbrugbbwbubuwbwwwgrbbwugbguggwgwggww
|
||||
wbwgbgbgbbbgrbgurwgurwwrggbbwuwbgrwubwbgwgr
|
||||
rurrwuwugbgwbrwwguuuurrwgbuwbbwbubwburgwruwurggwbrr
|
||||
uwubrbgubruuubruurbbwwrwgwuuwrbwguwgubrrrgruubw
|
||||
rwruubbuuwwbbbbbwggwgbwuguuuuwwuuubuubgggbgbbrguwuwg
|
||||
gwguubrwuuuwwgugugbgbuwbuwgwrbrbuuuwgrgbgubbr
|
||||
rwrrugugubwbbgugrbwurgbwguwrbuggrwbubbrugruggrbbbrubrgwgwr
|
||||
gwgurwrwrubuwgrwwugugguwgrwbgggwrubbrbwwgbrgrur
|
||||
wubguuwwgrggbrwwbgrgugugrguwrubggugwwuwrbrggwwww
|
||||
gwgrwwwrbgrrbwgrbgrugbbggbbbgugbbwwwgbuggr
|
||||
gwgrubrrugrwwgurbbububurrbbbwrgwwrguuugbuuwwbuwwbbbgbbwurgrb
|
||||
gwgrbuugugbgwurgwrruwbuguububuwgbbbwrbgrwbbrurwbbrbuwrr
|
||||
gwggwuuuuurrrurwwurugwwwgggwurbgbbrwrgwgwug
|
||||
rwbguuwgggbwwuwwwugurwrwuwbrwwgbgwwwbbuubrw
|
||||
gwgurggurbugrwrwguwugwbwguubggruurwurwurubuurwgwbwuwg
|
||||
grwgwrbwbgwrbrgwuururwurbbubrubrwwwgbrbrbbw
|
||||
gwgrugurwguwwrgurwugwurbruuwbuuuwurbrgwwuuwgbg
|
||||
wrwgwgrwwwwrrggugbbwwbgwwbgbbwgrbgugurbwguw
|
||||
bbubrbrrubwggurruwrggwuurgwgwbwbrbububwbwurrrwbggbur
|
||||
wwrwwbrgrrrgburwuwwgurubrwguwbgurbwrrwbwwgwwrbbwrrwwww
|
||||
uruuurgbgbuwuwgwgbubbrgrwggbbgrbwuwgubrgurgrgburrwrgb
|
||||
gwggrgwbgrrugugwugwgwguuwwuuwwgrgwbuurrgw
|
||||
gwgubgwguwwbugbgwgrurrgurgwwggbggbugrrgwrbwwwwguugbgubrbwgb
|
||||
wggbrubwuurbrggwgwwuurggwbubggrbggrgwwwuug
|
||||
gwggbburgbbrwwbrrbuuuwwbrugbbwwrrwrguwwubuwwuurruru
|
||||
uwgggwgrwruwwgburrwwbggwgbrurrrgubrrwrrwbbuuuwuwugrgg
|
||||
gwrggwwrrbwrrubbwrurbgwrwuwuwggrbbbbgrbubg
|
||||
gwburgrgugwwuurrwuuwuuuuburbbwgrruuubruururgwruubrubrugu
|
||||
wbwwbubwburwgbbgwgbubuubrguwgbwwggbuwbguurgurbbwuwbugrrb
|
||||
gwgurwrurggwwguburuwgbgrrrgruwwggrruruwruuwrggrrbu
|
||||
gugwgrggburwgbwbwbgbuuwwbbwrwgwbwurwgrbbbu
|
||||
gwgrrwgugbubrrrgrwwbrrggwrrrgurgwgrbbuggwru
|
||||
wbruwbbgbuwbrwwwbrrrwuwugwbggrrbuuwgubwrrwuwurggruurrgw
|
||||
gwguubbuuubgrwbuubwbuwgwwgwgubrrrbburggubwwugr
|
||||
ggrrguggbbbrggbgwwuubbwrrrrrbwruguuggrbbggrbgwr
|
||||
rgbubuguwggwrrwgwugrgggwuwwbwbwubbruubrgru
|
||||
ggggrrwgubrbrwuggbrubbrwwuugbuwrwrurgwgwwbbwugbrurbg
|
||||
ggbggbrwrurrurubrruuggurwwguwrguurrbgrrgru
|
||||
gwgrwuugbgwrbwbgrwwrgurrruwgbbrggwrrrruruug
|
||||
gwggrgbbwwrwrrggbbbgggburuubbbbguruurbgwbrbrwgg
|
||||
gwguuwuubuurwuububbgubwugurrgurrwurwubgbrugbwbwrbuwwrwrurg
|
||||
wguwwwrrrwguwrrbuguuubguurggrwbbbwrugggruuggrbu
|
||||
rrwgwgbugbwbrbbgrbbbbrgbbuuugruwbgbwwbrwwrw
|
||||
rwggbggwbrruwruubwrgrwrwuggubuwwbbubrbwbrwbuuurgggggburb
|
||||
gwggugbguwubgrwruwwuuuggbrbbubbububbwrbwbggguruwbru
|
||||
uuuurbuurwbgwuuuuuurwuuugwugrgwwrrbrrwbrrgbgwbuwbggw
|
||||
ugburrwuwbggrwuuruuwbrrrgbrubwguguwbugwbuwbbbgru
|
48
2024/19-Linen_Layout/second.hs
Normal file
48
2024/19-Linen_Layout/second.hs
Normal file
|
@ -0,0 +1,48 @@
|
|||
-- requires cabal install --lib megaparsec parser-combinators heap vector
|
||||
module Main (main) where
|
||||
|
||||
import Control.Monad (void, when)
|
||||
import Data.Functor
|
||||
import qualified Data.List as L
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe
|
||||
import Data.Void (Void)
|
||||
import Text.Megaparsec
|
||||
import Text.Megaparsec.Char
|
||||
|
||||
exampleExpectedOutput = 16
|
||||
|
||||
type Input = ([String], [String]) -- patterns, designs
|
||||
|
||||
type Parser = Parsec Void String
|
||||
|
||||
parseInput' :: Parser Input
|
||||
parseInput' = (,) <$> some (some letterChar <* optional (string ", ")) <* eol <* eol
|
||||
<*> some (some letterChar <* eol) <* eof
|
||||
|
||||
parseInput :: String -> IO Input
|
||||
parseInput filename = do
|
||||
input <- readFile filename
|
||||
case runParser parseInput' filename input of
|
||||
Left bundle -> error $ errorBundlePretty bundle
|
||||
Right input' -> return input'
|
||||
|
||||
type Memo = M.Map String Int
|
||||
|
||||
compute :: Input -> Int
|
||||
compute (stripes, designs) = snd $ L.foldl' compute' (M.empty, 0) designs
|
||||
where
|
||||
compute' :: (Memo, Int) -> String -> (Memo, Int)
|
||||
compute' (memo, c) [] = (memo, c + 1)
|
||||
compute' (memo, c) design = case M.lookup design memo of
|
||||
Just c' -> (memo, c + c')
|
||||
Nothing -> let (memo', c') = L.foldl' compute' (memo, 0) $ catMaybes $ map (\s -> L.stripPrefix s design) stripes
|
||||
in (M.insert design c' memo', c + c')
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
example <- parseInput "example"
|
||||
let exampleOutput = compute example
|
||||
when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput)
|
||||
input <- parseInput "input"
|
||||
print $ compute input
|
Loading…
Add table
Reference in a new issue