heh
2017/2: 14:16
bendn 6 months ago
parent c130f8c · commit 736afcb
-rw-r--r--src/inp.txt17
-rw-r--r--src/solve.hs (renamed from solve.hs)16
2 files changed, 25 insertions, 8 deletions
diff --git a/src/inp.txt b/src/inp.txt
index 547f1fe..8cca307 100644
--- a/src/inp.txt
+++ b/src/inp.txt
@@ -1 +1,16 @@
-36743676522426214741687639282183216978128565594112364817283598621384839756628424146779311928318383597235968644687665159591573413233616717112157752469191845757712928347624726438516211153946892241449523148419426259291788938621886334734497823163281389389853675932246734153563861233894952657625868415432316155487242813798425779743561987563734944962846865263722712768674838244444385768568489842989878163655771847362656153372265945464128668412439248966939398765446171855144544285463517258749813731314365947372548811434646381595273172982466142248474238762554858654679415418693478512641864168398722199638775667744977941183772494538685398862344164521446115925528534491788728448668455349588972443295391385389551783289417349823383324748411689198219329996666752251815562522759374542652969147696419669914534586732436912798519697722586795746371697338416716842214313393228587413399534716394984183943123375517819622837972796431166264646432893478557659387795573234889141897313158457637142238315327877493994933514112645586351127139429281675912366669475931711974332271368287413985682374943195886455927839573986464555141679291998645936683639162588375974549467767623463935561847869527383395278248952314792112113126231246742753119748113828843917812547224498319849947517745625844819175973986843636628414965664466582172419197227695368492433353199233558872319529626825788288176275546566474824257336863977574347328469153319428883748696399544974133392589823343773897313173336568883385364166336362398636684459886283964242249228938383219255513996468586953519638111599935229115228837559242752925943653623682985576323929415445443378189472782454958232341986626791182861644112974418239286486722654442144851173538756859647218768134572858331849543266169672745221391659363674921469481143686952478771714585793322926824623482923579986434741714167134346384551362664177865452895348948953472328966995731169672573555621939584872187999325322327893336736611929752613241935211664248961527687778371971259654541239471766714469122213793348414477789271187324629397292446879752673 \ No newline at end of file
+104 240 147 246 123 175 372 71 116 230 260 118 202 270 277 292
+740 755 135 205 429 822 844 90 828 115 440 805 526 91 519 373
+1630 991 1471 1294 52 1566 50 1508 1367 1489 55 547 342 512 323 51
+1356 178 1705 119 1609 1409 245 292 1434 694 405 1692 247 193 1482 1407
+2235 3321 3647 212 1402 3711 3641 1287 2725 692 1235 3100 123 144 104 101
+1306 1224 1238 186 751 734 1204 1275 366 149 1114 166 1118 239 153 943
+132 1547 1564 512 2643 2376 2324 2159 1658 107 1604 145 2407 131 2073 1878
+1845 91 1662 108 92 1706 1815 1797 1728 1150 1576 83 97 547 1267 261
+78 558 419 435 565 107 638 173 93 580 338 52 633 256 377 73
+1143 3516 4205 3523 148 401 3996 3588 300 1117 2915 1649 135 134 182 267
+156 2760 1816 2442 2985 990 2598 1273 167 821 138 141 2761 2399 1330 1276
+3746 3979 2989 161 4554 156 3359 173 3319 192 3707 264 762 2672 4423 2924
+3098 4309 4971 5439 131 171 5544 595 154 571 4399 4294 160 6201 4329 5244
+728 249 1728 305 2407 239 691 2241 2545 1543 55 2303 1020 753 193 1638
+260 352 190 877 118 77 1065 1105 1085 1032 71 87 851 56 1161 667
+1763 464 182 1932 1209 640 545 931 1979 197 1774 174 2074 1800 939 161 \ No newline at end of file
diff --git a/solve.hs b/src/solve.hs
index 2e20017..3f6534b 100644
--- a/solve.hs
+++ b/src/solve.hs
@@ -1,10 +1,11 @@
import Control.Exception
import Data.Char
+import Data.Either (fromLeft)
import Data.Foldable
import Data.Function
import Data.Functor
import Data.List
-import Data.List.Split
+import Data.List.Split (chunksOf, splitOn)
import Data.Maybe
import Data.Void (Void)
import Debug.Trace
@@ -44,12 +45,9 @@ s = L.lexeme skipSpace
main :: IO ()
main = do
contents :: String <- readFile "src/inp.txt"
- let nums = map digitToInt contents
- print (length nums)
- let w = take (length nums) (windows (nums ++ nums) ((length nums `div` 2) + 1)) -- or 2
- let e = [head x | x <- w, head x == last x]
-
- print (sum e)
+ let x = either (error "fail") id . runParser (many integer) "inp" <$> splitOn "\n" contents
+ print (sum $ (\x -> abs $ minimum x - maximum x) <$> x)
+ print (sum $ (\x -> sum [x `div` y | (x, y) <- combinations2 x, x `mod` y == 0]) <$> x)
swapTwo f s xs =
zipWith
@@ -64,6 +62,10 @@ swapTwo f s xs =
[0 ..]
xs
+combinations' x n = filter (\x -> length x == n) (subsequences x)
+
+combinations2 l = concat [[(x, y) | y <- l, x /= y] | x <- l]
+
windows c n = (\x -> take n (drop x c)) <$> [n .. length c - n]
rotateL n xs