Permalink
Browse files

final code

  • Loading branch information...
0 parents commit 3fce0d355cc2123da1c900e7ad53dff66f55f789 @mwotton committed Jun 7, 2011
Showing with 1,127 additions and 0 deletions.
  1. +2 −0 Setup.hs
  2. +2 −0 Tests/test_true.hs
  3. +14 −0 helper.hs
  4. +15 −0 logs.hs
  5. +37 −0 main.hs
  6. +1,000 −0 reference.out
  7. +57 −0 t.cabal
2 Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
2 Tests/test_true.hs
@@ -0,0 +1,2 @@
+module T where
+test_true = True
14 helper.hs
@@ -0,0 +1,14 @@
+import Data.Numbers.Primes
+import Data.Word
+import Data.Binary
+import Data.Vector.Binary
+import qualified Data.Vector.Unboxed as U
+biggest::Integer
+biggest = 10^12
+
+smallprimes :: [Word]
+smallprimes = {-# SCC "smallprimes" #-} takeWhile (<= (ceiling . sqrt $ fromIntegral biggest)) primes
+
+small_vector = U.fromList smallprimes
+
+main = encodeFile "primes.dat" small_vector
15 logs.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE BangPatterns #-}
+module Logs where
+import Data.Word
+import Debug.Trace
+
+
+intlog :: Word -> Word -> Word
+--intlog 1 _ = error "don't be an idiot"
+--intlog _ 1 = 0
+intlog !my_number !my_base = gobble my_number 0
+ where
+ gobble !internal_number !accumulator
+ | internal_number < my_base = accumulator
+ | otherwise = gobble (div internal_number my_base) (succ accumulator)
+
37 main.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE ScopedTypeVariables, BangPatterns #-}
+-- highest is pretty easy to get - we're always going to end up at the LCM of 1..n
+-- if you go in in order, then everyone's unhappy up to n
+-- but then all bets are off. damn.
+
+-- so at that point, we need all the common multiples of all our numbers, sorted and uniqed.
+
+-- can't get to primes > n, because no-one would go there anyway.
+-- so: all products of the power set of primes < n, raised to an arbitrary power.
+import Data.Numbers.Primes
+import Data.List
+import Logs
+import Debug.Trace
+import Data.Array
+import Control.Parallel
+import Control.Parallel.Strategies
+import Data.Word
+import qualified Data.Vector.Unboxed as U
+import Data.Vector.Binary
+import Data.Binary
+
+solve :: U.Vector Word -> Word -> Word
+solve !smallprimes !no = diff small_arr
+ where diff (!x) = {-# SCC "diff" #-} 1 + U.foldl' (\(!acc) (!x) -> acc + (diff_i x)) 0 x
+ small_arr = {-# SCC "arr" #-} U.takeWhile (<= (ceiling . sqrt $ fromIntegral no)) smallprimes
+ diff_i (!x) = {-# SCC "diff_i" #-} (intlog no x ) - 1
+
+-- repa stuff
+-- small_array = fromFunction (Z :. len) (\(Z :. ix) -> arr ! (Z :. ix))
+-- arr_primes = {-# SCC "arr_primes" #-} fromList (Z :. len :: DIM1) smallerprimes
+ -- diff = {-# SCC "diff" #-} (+1) . flip (Repa.!) Z . Repa.fold (\acc -> (+acc) . diff_i) 0
+main = do
+ primes <- {-# SCC "decode" #-} decodeFile "primes.dat" :: IO (U.Vector Word)
+ l <- getContents
+ putStr . unlines . format . parMap rseq (solve primes .read) . tail $ lines l
+
+format n = map (\(num, s) -> "Case #" ++ show num ++ ": " ++ show s ) $ zip [1..] n
1,000 reference.out
@@ -0,0 +1,1000 @@
+Case #1: 60888
+Case #2: 787
+Case #3: 54599
+Case #4: 77347
+Case #5: 54235
+Case #6: 42511
+Case #7: 70
+Case #8: 23
+Case #9: 65342
+Case #10: 50503
+Case #11: 77081
+Case #12: 65322
+Case #13: 42170
+Case #14: 67072
+Case #15: 3837
+Case #16: 32555
+Case #17: 51587
+Case #18: 30168
+Case #19: 23
+Case #20: 60986
+Case #21: 79178
+Case #22: 73048
+Case #23: 46489
+Case #24: 63
+Case #25: 71500
+Case #26: 79615
+Case #27: 15329
+Case #28: 58408
+Case #29: 78622
+Case #30: 74266
+Case #31: 119
+Case #32: 79892
+Case #33: 72239
+Case #34: 28772
+Case #35: 54663
+Case #36: 4
+Case #37: 68686
+Case #38: 62741
+Case #39: 101
+Case #40: 23440
+Case #41: 64968
+Case #42: 78867
+Case #43: 63398
+Case #44: 37617
+Case #45: 32333
+Case #46: 54102
+Case #47: 25883
+Case #48: 25236
+Case #49: 46919
+Case #50: 61419
+Case #51: 17
+Case #52: 68810
+Case #53: 47845
+Case #54: 56542
+Case #55: 48269
+Case #56: 64493
+Case #57: 75735
+Case #58: 10669
+Case #59: 12
+Case #60: 20300
+Case #61: 38813
+Case #62: 25236
+Case #63: 53049
+Case #64: 74372
+Case #65: 57760
+Case #66: 61213
+Case #67: 63034
+Case #68: 71066
+Case #69: 65
+Case #70: 67623
+Case #71: 73608
+Case #72: 47844
+Case #73: 61807
+Case #74: 73658
+Case #75: 61124
+Case #76: 40680
+Case #77: 67384
+Case #78: 66637
+Case #79: 59224
+Case #80: 22
+Case #81: 60383
+Case #82: 7
+Case #83: 40005
+Case #84: 59163
+Case #85: 76187
+Case #86: 27
+Case #87: 52172
+Case #88: 67935
+Case #89: 60580
+Case #90: 18508
+Case #91: 17973
+Case #92: 15394
+Case #93: 16536
+Case #94: 67344
+Case #95: 62680
+Case #96: 61765
+Case #97: 52016
+Case #98: 17
+Case #99: 53793
+Case #100: 67852
+Case #101: 63929
+Case #102: 46380
+Case #103: 129
+Case #104: 23072
+Case #105: 71034
+Case #106: 77469
+Case #107: 80071
+Case #108: 7
+Case #109: 67221
+Case #110: 77164
+Case #111: 55402
+Case #112: 11400
+Case #113: 79077
+Case #114: 19
+Case #115: 71154
+Case #116: 192
+Case #117: 14
+Case #118: 51899
+Case #119: 33
+Case #120: 71604
+Case #121: 53265
+Case #122: 53798
+Case #123: 174
+Case #124: 25236
+Case #125: 78134
+Case #126: 46200
+Case #127: 70770
+Case #128: 76561
+Case #129: 38916
+Case #130: 154
+Case #131: 75530
+Case #132: 72621
+Case #133: 53859
+Case #134: 16535
+Case #135: 19155
+Case #136: 65227
+Case #137: 55355
+Case #138: 71164
+Case #139: 15697
+Case #140: 72952
+Case #141: 75309
+Case #142: 75577
+Case #143: 26286
+Case #144: 78914
+Case #145: 79472
+Case #146: 63551
+Case #147: 64222
+Case #148: 59123
+Case #149: 66149
+Case #150: 48322
+Case #151: 50363
+Case #152: 25237
+Case #153: 153
+Case #154: 76204
+Case #155: 33
+Case #156: 60932
+Case #157: 47398
+Case #158: 30908
+Case #159: 66442
+Case #160: 12833
+Case #161: 42002
+Case #162: 75683
+Case #163: 57452
+Case #164: 60927
+Case #165: 67877
+Case #166: 77345
+Case #167: 67727
+Case #168: 38947
+Case #169: 63
+Case #170: 75195
+Case #171: 42512
+Case #172: 60988
+Case #173: 66875
+Case #174: 65893
+Case #175: 42812
+Case #176: 69116
+Case #177: 24328
+Case #178: 75995
+Case #179: 45275
+Case #180: 2965
+Case #181: 8954
+Case #182: 2965
+Case #183: 2527
+Case #184: 58309
+Case #185: 68207
+Case #186: 25237
+Case #187: 21121
+Case #188: 58408
+Case #189: 72737
+Case #190: 23
+Case #191: 66795
+Case #192: 78554
+Case #193: 63758
+Case #194: 294
+Case #195: 53259
+Case #196: 53329
+Case #197: 47682
+Case #198: 54977
+Case #199: 5411
+Case #200: 55628
+Case #201: 56226
+Case #202: 72861
+Case #203: 58407
+Case #204: 53316
+Case #205: 55088
+Case #206: 72608
+Case #207: 68217
+Case #208: 68223
+Case #209: 62704
+Case #210: 30434
+Case #211: 44538
+Case #212: 50316
+Case #213: 61726
+Case #214: 62030
+Case #215: 118
+Case #216: 45043
+Case #217: 79366
+Case #218: 66269
+Case #219: 15395
+Case #220: 66942
+Case #221: 76173
+Case #222: 62248
+Case #223: 7
+Case #224: 60138
+Case #225: 74357
+Case #226: 1051
+Case #227: 77544
+Case #228: 59782
+Case #229: 79380
+Case #230: 20863
+Case #231: 60000
+Case #232: 52449
+Case #233: 31878
+Case #234: 64322
+Case #235: 77210
+Case #236: 53674
+Case #237: 47340
+Case #238: 70
+Case #239: 69772
+Case #240: 57763
+Case #241: 50344
+Case #242: 78030
+Case #243: 66095
+Case #244: 12832
+Case #245: 168
+Case #246: 57414
+Case #247: 73
+Case #248: 75458
+Case #249: 59082
+Case #250: 40063
+Case #251: 25236
+Case #252: 68328
+Case #253: 129
+Case #254: 72289
+Case #255: 71462
+Case #256: 58920
+Case #257: 77508
+Case #258: 53550
+Case #259: 154
+Case #260: 71443
+Case #261: 49262
+Case #262: 30713
+Case #263: 281
+Case #264: 28862
+Case #265: 53184
+Case #266: 58202
+Case #267: 32556
+Case #268: 74283
+Case #269: 49971
+Case #270: 63873
+Case #271: 65491
+Case #272: 30433
+Case #273: 75662
+Case #274: 154
+Case #275: 59944
+Case #276: 56020
+Case #277: 68594
+Case #278: 58673
+Case #279: 66736
+Case #280: 65890
+Case #281: 40362
+Case #282: 72575
+Case #283: 73
+Case #284: 44588
+Case #285: 6
+Case #286: 56748
+Case #287: 51282
+Case #288: 211
+Case #289: 69241
+Case #290: 14075
+Case #291: 71063
+Case #292: 67120
+Case #293: 25237
+Case #294: 52548
+Case #295: 77864
+Case #296: 60843
+Case #297: 33656
+Case #298: 70277
+Case #299: 59578
+Case #300: 49435
+Case #301: 54009
+Case #302: 47632
+Case #303: 153
+Case #304: 212
+Case #305: 78168
+Case #306: 44594
+Case #307: 63818
+Case #308: 52596
+Case #309: 68531
+Case #310: 59
+Case #311: 76376
+Case #312: 30433
+Case #313: 51615
+Case #314: 4655
+Case #315: 57289
+Case #316: 30434
+Case #317: 68676
+Case #318: 43484
+Case #319: 77024
+Case #320: 78416
+Case #321: 65488
+Case #322: 48
+Case #323: 33
+Case #324: 77325
+Case #325: 70550
+Case #326: 71206
+Case #327: 725
+Case #328: 27885
+Case #329: 32556
+Case #330: 45275
+Case #331: 23326
+Case #332: 39617
+Case #333: 40551
+Case #334: 8109
+Case #335: 78667
+Case #336: 78333
+Case #337: 44385
+Case #338: 77900
+Case #339: 68415
+Case #340: 63202
+Case #341: 69929
+Case #342: 53437
+Case #343: 71155
+Case #344: 69908
+Case #345: 78327
+Case #346: 64886
+Case #347: 50824
+Case #348: 64151
+Case #349: 64974
+Case #350: 72016
+Case #351: 25236
+Case #352: 7
+Case #353: 78758
+Case #354: 70504
+Case #355: 78620
+Case #356: 37
+Case #357: 61019
+Case #358: 76985
+Case #359: 43
+Case #360: 119
+Case #361: 49208
+Case #362: 57538
+Case #363: 47210
+Case #364: 60703
+Case #365: 35336
+Case #366: 13
+Case #367: 72341
+Case #368: 47844
+Case #369: 62100
+Case #370: 64998
+Case #371: 43223
+Case #372: 69022
+Case #373: 63511
+Case #374: 70649
+Case #375: 65967
+Case #376: 72492
+Case #377: 42054
+Case #378: 281
+Case #379: 47598
+Case #380: 48371
+Case #381: 10
+Case #382: 75062
+Case #383: 68871
+Case #384: 62
+Case #385: 75812
+Case #386: 30434
+Case #387: 34154
+Case #388: 28679
+Case #389: 28237
+Case #390: 73456
+Case #391: 15
+Case #392: 45479
+Case #393: 72034
+Case #394: 75449
+Case #395: 56128
+Case #396: 2
+Case #397: 57759
+Case #398: 57291
+Case #399: 66300
+Case #400: 28644
+Case #401: 68118
+Case #402: 26724
+Case #403: 60540
+Case #404: 1650
+Case #405: 52099
+Case #406: 70276
+Case #407: 51924
+Case #408: 58624
+Case #409: 79668
+Case #410: 332
+Case #411: 10292
+Case #412: 66101
+Case #413: 8
+Case #414: 54773
+Case #415: 75388
+Case #416: 21
+Case #417: 68505
+Case #418: 76443
+Case #419: 50930
+Case #420: 669
+Case #421: 62392
+Case #422: 62951
+Case #423: 73255
+Case #424: 65253
+Case #425: 70986
+Case #426: 71128
+Case #427: 70065
+Case #428: 62584
+Case #429: 1050
+Case #430: 53103
+Case #431: 27205
+Case #432: 76777
+Case #433: 63173
+Case #434: 70761
+Case #435: 58072
+Case #436: 60188
+Case #437: 70288
+Case #438: 68956
+Case #439: 52559
+Case #440: 131
+Case #441: 45987
+Case #442: 24700
+Case #443: 63472
+Case #444: 78550
+Case #445: 44724
+Case #446: 59380
+Case #447: 64153
+Case #448: 80013
+Case #449: 34
+Case #450: 10
+Case #451: 10350
+Case #452: 63921
+Case #453: 51768
+Case #454: 3519
+Case #455: 24
+Case #456: 68767
+Case #457: 59757
+Case #458: 43369
+Case #459: 1920
+Case #460: 72913
+Case #461: 58245
+Case #462: 119
+Case #463: 45526
+Case #464: 32698
+Case #465: 43284
+Case #466: 70886
+Case #467: 42868
+Case #468: 35
+Case #469: 35842
+Case #470: 76265
+Case #471: 33
+Case #472: 27811
+Case #473: 54223
+Case #474: 75702
+Case #475: 91
+Case #476: 41262
+Case #477: 787
+Case #478: 742
+Case #479: 58654
+Case #480: 69
+Case #481: 57663
+Case #482: 58407
+Case #483: 62021
+Case #484: 73589
+Case #485: 56011
+Case #486: 60268
+Case #487: 57
+Case #488: 71997
+Case #489: 25237
+Case #490: 212
+Case #491: 28
+Case #492: 42459
+Case #493: 52918
+Case #494: 76625
+Case #495: 64470
+Case #496: 10
+Case #497: 76698
+Case #498: 1160
+Case #499: 67944
+Case #500: 191
+Case #501: 78959
+Case #502: 60986
+Case #503: 71407
+Case #504: 45508
+Case #505: 77886
+Case #506: 79133
+Case #507: 74
+Case #508: 62089
+Case #509: 60979
+Case #510: 9
+Case #511: 46467
+Case #512: 47340
+Case #513: 70
+Case #514: 77268
+Case #515: 63849
+Case #516: 8606
+Case #517: 119
+Case #518: 43816
+Case #519: 52181
+Case #520: 66905
+Case #521: 9
+Case #522: 132
+Case #523: 67542
+Case #524: 63763
+Case #525: 72284
+Case #526: 69871
+Case #527: 51680
+Case #528: 56116
+Case #529: 25236
+Case #530: 76721
+Case #531: 1
+Case #532: 56426
+Case #533: 58791
+Case #534: 48
+Case #535: 75424
+Case #536: 51514
+Case #537: 55434
+Case #538: 14369
+Case #539: 66226
+Case #540: 53702
+Case #541: 79073
+Case #542: 56907
+Case #543: 212
+Case #544: 62278
+Case #545: 47257
+Case #546: 25237
+Case #547: 46492
+Case #548: 69460
+Case #549: 73586
+Case #550: 65368
+Case #551: 49271
+Case #552: 67167
+Case #553: 78613
+Case #554: 49757
+Case #555: 25237
+Case #556: 212
+Case #557: 51542
+Case #558: 68923
+Case #559: 62255
+Case #560: 1161
+Case #561: 101
+Case #562: 72826
+Case #563: 73772
+Case #564: 59924
+Case #565: 35
+Case #566: 62424
+Case #567: 77159
+Case #568: 34373
+Case #569: 73364
+Case #570: 211
+Case #571: 20332
+Case #572: 70589
+Case #573: 71716
+Case #574: 77597
+Case #575: 129
+Case #576: 6502
+Case #577: 5
+Case #578: 65171
+Case #579: 72214
+Case #580: 59
+Case #581: 10
+Case #582: 153
+Case #583: 66691
+Case #584: 74032
+Case #585: 52291
+Case #586: 1051
+Case #587: 78238
+Case #588: 92
+Case #589: 69979
+Case #590: 27
+Case #591: 49135
+Case #592: 52548
+Case #593: 48
+Case #594: 69
+Case #595: 69571
+Case #596: 5155
+Case #597: 72833
+Case #598: 8274
+Case #599: 13
+Case #600: 59
+Case #601: 66872
+Case #602: 70492
+Case #603: 31
+Case #604: 47
+Case #605: 63140
+Case #606: 49234
+Case #607: 63232
+Case #608: 76879
+Case #609: 52703
+Case #610: 59
+Case #611: 72542
+Case #612: 76606
+Case #613: 76942
+Case #614: 69438
+Case #615: 58459
+Case #616: 45716
+Case #617: 70270
+Case #618: 66923
+Case #619: 69
+Case #620: 971
+Case #621: 63975
+Case #622: 63266
+Case #623: 211
+Case #624: 54508
+Case #625: 153
+Case #626: 62674
+Case #627: 66824
+Case #628: 77403
+Case #629: 70604
+Case #630: 59146
+Case #631: 105
+Case #632: 39935
+Case #633: 69461
+Case #634: 75992
+Case #635: 6290
+Case #636: 62178
+Case #637: 63207
+Case #638: 68755
+Case #639: 51837
+Case #640: 51470
+Case #641: 743
+Case #642: 64757
+Case #643: 67093
+Case #644: 46263
+Case #645: 119
+Case #646: 59635
+Case #647: 79725
+Case #648: 153
+Case #649: 64722
+Case #650: 59732
+Case #651: 58407
+Case #652: 743
+Case #653: 46810
+Case #654: 64142
+Case #655: 20
+Case #656: 12
+Case #657: 79525
+Case #658: 47
+Case #659: 40843
+Case #660: 60359
+Case #661: 64220
+Case #662: 56211
+Case #663: 45532
+Case #664: 71226
+Case #665: 77936
+Case #666: 51930
+Case #667: 104
+Case #668: 61524
+Case #669: 421
+Case #670: 63560
+Case #671: 43823
+Case #672: 270
+Case #673: 63237
+Case #674: 54384
+Case #675: 33393
+Case #676: 38
+Case #677: 12278
+Case #678: 43199
+Case #679: 69446
+Case #680: 58407
+Case #681: 32114
+Case #682: 73928
+Case #683: 52487
+Case #684: 6
+Case #685: 60671
+Case #686: 114
+Case #687: 67598
+Case #688: 45275
+Case #689: 65228
+Case #690: 16744
+Case #691: 16
+Case #692: 10351
+Case #693: 26550
+Case #694: 27534
+Case #695: 38
+Case #696: 67931
+Case #697: 66682
+Case #698: 56204
+Case #699: 43732
+Case #700: 332
+Case #701: 27
+Case #702: 70185
+Case #703: 72726
+Case #704: 74865
+Case #705: 37
+Case #706: 471
+Case #707: 53492
+Case #708: 68886
+Case #709: 10645
+Case #710: 212
+Case #711: 74996
+Case #712: 67998
+Case #713: 2
+Case #714: 15833
+Case #715: 74580
+Case #716: 58408
+Case #717: 66554
+Case #718: 68423
+Case #719: 77665
+Case #720: 13
+Case #721: 64073
+Case #722: 76126
+Case #723: 52196
+Case #724: 57651
+Case #725: 78722
+Case #726: 56790
+Case #727: 48
+Case #728: 52177
+Case #729: 25236
+Case #730: 73565
+Case #731: 50187
+Case #732: 77252
+Case #733: 66379
+Case #734: 100
+Case #735: 72897
+Case #736: 47845
+Case #737: 19721
+Case #738: 56448
+Case #739: 54124
+Case #740: 76495
+Case #741: 73637
+Case #742: 42662
+Case #743: 12746
+Case #744: 47047
+Case #745: 2
+Case #746: 51396
+Case #747: 56698
+Case #748: 56820
+Case #749: 65063
+Case #750: 332
+Case #751: 27897
+Case #752: 23718
+Case #753: 63290
+Case #754: 73117
+Case #755: 57977
+Case #756: 54760
+Case #757: 48494
+Case #758: 68802
+Case #759: 70043
+Case #760: 56225
+Case #761: 64653
+Case #762: 18956
+Case #763: 15489
+Case #764: 42969
+Case #765: 67296
+Case #766: 75071
+Case #767: 65446
+Case #768: 23
+Case #769: 62430
+Case #770: 61975
+Case #771: 67169
+Case #772: 55091
+Case #773: 63479
+Case #774: 69821
+Case #775: 10350
+Case #776: 472
+Case #777: 3
+Case #778: 60499
+Case #779: 79539
+Case #780: 65360
+Case #781: 69
+Case #782: 1050
+Case #783: 100
+Case #784: 1919
+Case #785: 59553
+Case #786: 55607
+Case #787: 169
+Case #788: 75255
+Case #789: 76631
+Case #790: 62800
+Case #791: 68658
+Case #792: 78304
+Case #793: 64434
+Case #794: 59173
+Case #795: 66732
+Case #796: 75039
+Case #797: 71281
+Case #798: 73773
+Case #799: 67233
+Case #800: 65517
+Case #801: 70824
+Case #802: 8
+Case #803: 70649
+Case #804: 66860
+Case #805: 66737
+Case #806: 44719
+Case #807: 1033
+Case #808: 67335
+Case #809: 61175
+Case #810: 73054
+Case #811: 65722
+Case #812: 30434
+Case #813: 54121
+Case #814: 67072
+Case #815: 59579
+Case #816: 78134
+Case #817: 60522
+Case #818: 62108
+Case #819: 60420
+Case #820: 73534
+Case #821: 56840
+Case #822: 72128
+Case #823: 42673
+Case #824: 74787
+Case #825: 1651
+Case #826: 65273
+Case #827: 45074
+Case #828: 70397
+Case #829: 71411
+Case #830: 23
+Case #831: 67
+Case #832: 16
+Case #833: 47
+Case #834: 19
+Case #835: 471
+Case #836: 67663
+Case #837: 52071
+Case #838: 48391
+Case #839: 78138
+Case #840: 73555
+Case #841: 50376
+Case #842: 71720
+Case #843: 62604
+Case #844: 68779
+Case #845: 27492
+Case #846: 60
+Case #847: 46718
+Case #848: 59783
+Case #849: 61555
+Case #850: 52471
+Case #851: 68169
+Case #852: 30139
+Case #853: 36368
+Case #854: 69703
+Case #855: 295
+Case #856: 16
+Case #857: 47845
+Case #858: 32408
+Case #859: 59
+Case #860: 55537
+Case #861: 62996
+Case #862: 105
+Case #863: 66121
+Case #864: 77635
+Case #865: 39244
+Case #866: 52082
+Case #867: 73612
+Case #868: 58408
+Case #869: 31432
+Case #870: 60107
+Case #871: 69841
+Case #872: 61612
+Case #873: 47844
+Case #874: 77536
+Case #875: 42
+Case #876: 68797
+Case #877: 52452
+Case #878: 34101
+Case #879: 56318
+Case #880: 7
+Case #881: 80039
+Case #882: 47844
+Case #883: 61824
+Case #884: 50746
+Case #885: 25237
+Case #886: 34
+Case #887: 61340
+Case #888: 78559
+Case #889: 91
+Case #890: 44603
+Case #891: 423
+Case #892: 51448
+Case #893: 71212
+Case #894: 28909
+Case #895: 62247
+Case #896: 35144
+Case #897: 76320
+Case #898: 58567
+Case #899: 104
+Case #900: 72232
+Case #901: 1920
+Case #902: 76572
+Case #903: 25236
+Case #904: 29919
+Case #905: 74827
+Case #906: 70023
+Case #907: 76418
+Case #908: 61570
+Case #909: 67483
+Case #910: 30445
+Case #911: 76116
+Case #912: 24943
+Case #913: 23657
+Case #914: 60768
+Case #915: 58520
+Case #916: 62121
+Case #917: 32060
+Case #918: 41265
+Case #919: 67203
+Case #920: 60559
+Case #921: 45275
+Case #922: 62232
+Case #923: 70942
+Case #924: 742
+Case #925: 52241
+Case #926: 422
+Case #927: 55327
+Case #928: 73689
+Case #929: 38259
+Case #930: 55805
+Case #931: 422
+Case #932: 46449
+Case #933: 60124
+Case #934: 63135
+Case #935: 43390
+Case #936: 63267
+Case #937: 59937
+Case #938: 2074
+Case #939: 66367
+Case #940: 20843
+Case #941: 48534
+Case #942: 168
+Case #943: 19
+Case #944: 3520
+Case #945: 2965
+Case #946: 25854
+Case #947: 45275
+Case #948: 57080
+Case #949: 69212
+Case #950: 10
+Case #951: 32
+Case #952: 49237
+Case #953: 63034
+Case #954: 62927
+Case #955: 8606
+Case #956: 29407
+Case #957: 55199
+Case #958: 51530
+Case #959: 70487
+Case #960: 114
+Case #961: 73079
+Case #962: 1558
+Case #963: 71721
+Case #964: 51167
+Case #965: 68505
+Case #966: 71538
+Case #967: 37990
+Case #968: 79787
+Case #969: 47844
+Case #970: 75697
+Case #971: 68668
+Case #972: 69978
+Case #973: 23380
+Case #974: 42859
+Case #975: 77688
+Case #976: 46380
+Case #977: 30499
+Case #978: 60328
+Case #979: 15
+Case #980: 70575
+Case #981: 66837
+Case #982: 725
+Case #983: 2
+Case #984: 1160
+Case #985: 77748
+Case #986: 46142
+Case #987: 113
+Case #988: 26177
+Case #989: 63408
+Case #990: 44050
+Case #991: 211
+Case #992: 61786
+Case #993: 79168
+Case #994: 5
+Case #995: 7
+Case #996: 23077
+Case #997: 787
+Case #998: 55801
+Case #999: 43526
+Case #1000: 34198
57 t.cabal
@@ -0,0 +1,57 @@
+-- t.cabal auto-generated by cabal init. For additional options, see
+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
+-- The name of the package.
+Name: t
+
+-- The package version. See the Haskell package versioning policy
+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
+-- standards guiding when and how versions should be incremented.
+Version: 0.1
+
+-- A short (one-line) description of the package.
+-- Synopsis:
+
+-- A longer description of the package.
+-- Description:
+
+-- The license under which the package is released.
+License: BSD3
+
+-- The file containing the license text.
+License-file: LICENSE
+
+-- The package author(s).
+Author: Mark Wotton
+
+-- An email address to which users can send suggestions, bug reports,
+-- and patches.
+Maintainer: mwotton@gmail.com
+
+-- A copyright notice.
+-- Copyright:
+
+Category: Development
+
+Build-type: Simple
+
+-- Extra files to be distributed with the package, such as examples or
+-- a README.
+-- Extra-source-files:
+
+-- Constraint on the version of Cabal needed to build this package.
+Cabal-version: >=1.2
+
+
+Executable t
+ -- .hs or .lhs file containing the Main module.
+ Main-is: main.hs
+
+ -- Packages needed in order to build this package.
+ Build-depends: base, bytestring, primes
+
+ -- Modules not exported by this package.
+ -- Other-modules:
+
+ -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
+ -- Build-tools:
+

0 comments on commit 3fce0d3

Please sign in to comment.