"Fossies" - the Fresh Open Source Software Archive

Member "julia-1.1.1/share/julia/test/euler.jl" (16 May 2019, 17257 Bytes) of package /linux/misc/julia-1.1.1-linux-i686.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Julia source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 # This file is a part of Julia. License is MIT: https://julialang.org/license
    2 
    3 ## Project Euler
    4 #
    5 #  problems: http://projecteuler.net/problems
    6 #  solutions: https://code.google.com/p/projecteuler-solutions/wiki/ProjectEulerSolutions
    7 
    8 #1: 233168
    9 @test sum(filter(n->(n%3==0)|(n%5==0),1:999)) == 233168
   10 
   11 #2: 4613732
   12 function euler2(n)
   13     t, i, j = 0, 1, 2
   14     while j <= n
   15           t += j
   16           i, j = j, i+j
   17           i, j = j, i+j
   18           i, j = j, i+j
   19     end
   20     return t
   21 end
   22 @test euler2(4000000) == 4613732
   23 
   24 #4: 906609
   25 function euler4(n)
   26     m = 1
   27     for a = 10^n-1:-1:10^(n-1)
   28         for b = 10^n-1:-1:max(a,-fld(-m,a))
   29             p = a*b
   30             d = digits(p)
   31             if d == reverse(d) && p > m
   32                 m = p
   33                 b < -fld(-m,a) && break
   34             end
   35         end
   36     end
   37     return m
   38 end
   39 @test euler4(3) == 906609
   40 
   41 #5: 232792560
   42 @test lcm(1:20) == 232792560
   43 
   44 #6: 25164150
   45 @test sum(1:100)^2 - sum((1:100).^2) == 25164150
   46 
   47 #8: 40824
   48 function euler8(n,m)
   49     d = digits(n)
   50     maximum([prod(d[k:k+m-1]) for k=1:length(d)-m+1])
   51 end
   52 let n = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
   53     @test euler8(n,5) == 40824
   54 end
   55 
   56 #9: 31875000
   57 function euler9(n)
   58     for a = 1:n, b = 1:n-a, c = n-a-b
   59         a^2 + b^2 == c^2 && return a*b*c
   60     end
   61 end
   62 @test euler9(1000) == 31875000
   63 
   64 
   65 #11: 70600674
   66 function euler11(grid,n)
   67     m = typemin(eltype(grid))
   68     tolinear = LinearIndices(size(grid))
   69     for i = n:size(grid,1)-n+1,
   70         j = n:size(grid,2)-n+1,
   71         di = -1:1, dj = -1:1
   72         di == dj == 0 && continue
   73         i_idxs = di==0 ? fill(i,n) : range(i, step=di, length=n)
   74         j_idxs = dj==0 ? fill(j,n) : range(j, step=dj, length=n)
   75         idx = tolinear[CartesianIndex.(i_idxs, j_idxs)]
   76         m = max(m,prod(grid[idx]))
   77     end
   78     return m
   79 end
   80 let grid = [
   81     08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
   82     49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
   83     81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
   84     52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
   85     22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
   86     24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
   87     32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
   88     67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
   89     24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
   90     21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
   91     78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
   92     16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
   93     86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
   94     19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
   95     04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
   96     88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
   97     04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
   98     20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
   99     20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
  100     01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
  101 ]
  102     @test euler11(grid,4) == 70600674
  103 end
  104 
  105 #12: 76576500
  106 
  107 #13: 5537376230
  108 let nums = [
  109     37107287533902102798797998220837590246510135740250
  110     46376937677490009712648124896970078050417018260538
  111     74324986199524741059474233309513058123726617309629
  112     91942213363574161572522430563301811072406154908250
  113     23067588207539346171171980310421047513778063246676
  114     89261670696623633820136378418383684178734361726757
  115     28112879812849979408065481931592621691275889832738
  116     44274228917432520321923589422876796487670272189318
  117     47451445736001306439091167216856844588711603153276
  118     70386486105843025439939619828917593665686757934951
  119     62176457141856560629502157223196586755079324193331
  120     64906352462741904929101432445813822663347944758178
  121     92575867718337217661963751590579239728245598838407
  122     58203565325359399008402633568948830189458628227828
  123     80181199384826282014278194139940567587151170094390
  124     35398664372827112653829987240784473053190104293586
  125     86515506006295864861532075273371959191420517255829
  126     71693888707715466499115593487603532921714970056938
  127     54370070576826684624621495650076471787294438377604
  128     53282654108756828443191190634694037855217779295145
  129     36123272525000296071075082563815656710885258350721
  130     45876576172410976447339110607218265236877223636045
  131     17423706905851860660448207621209813287860733969412
  132     81142660418086830619328460811191061556940512689692
  133     51934325451728388641918047049293215058642563049483
  134     62467221648435076201727918039944693004732956340691
  135     15732444386908125794514089057706229429197107928209
  136     55037687525678773091862540744969844508330393682126
  137     18336384825330154686196124348767681297534375946515
  138     80386287592878490201521685554828717201219257766954
  139     78182833757993103614740356856449095527097864797581
  140     16726320100436897842553539920931837441497806860984
  141     48403098129077791799088218795327364475675590848030
  142     87086987551392711854517078544161852424320693150332
  143     59959406895756536782107074926966537676326235447210
  144     69793950679652694742597709739166693763042633987085
  145     41052684708299085211399427365734116182760315001271
  146     65378607361501080857009149939512557028198746004375
  147     35829035317434717326932123578154982629742552737307
  148     94953759765105305946966067683156574377167401875275
  149     88902802571733229619176668713819931811048770190271
  150     25267680276078003013678680992525463401061632866526
  151     36270218540497705585629946580636237993140746255962
  152     24074486908231174977792365466257246923322810917141
  153     91430288197103288597806669760892938638285025333403
  154     34413065578016127815921815005561868836468420090470
  155     23053081172816430487623791969842487255036638784583
  156     11487696932154902810424020138335124462181441773470
  157     63783299490636259666498587618221225225512486764533
  158     67720186971698544312419572409913959008952310058822
  159     95548255300263520781532296796249481641953868218774
  160     76085327132285723110424803456124867697064507995236
  161     37774242535411291684276865538926205024910326572967
  162     23701913275725675285653248258265463092207058596522
  163     29798860272258331913126375147341994889534765745501
  164     18495701454879288984856827726077713721403798879715
  165     38298203783031473527721580348144513491373226651381
  166     34829543829199918180278916522431027392251122869539
  167     40957953066405232632538044100059654939159879593635
  168     29746152185502371307642255121183693803580388584903
  169     41698116222072977186158236678424689157993532961922
  170     62467957194401269043877107275048102390895523597457
  171     23189706772547915061505504953922979530901129967519
  172     86188088225875314529584099251203829009407770775672
  173     11306739708304724483816533873502340845647058077308
  174     82959174767140363198008187129011875491310547126581
  175     97623331044818386269515456334926366572897563400500
  176     42846280183517070527831839425882145521227251250327
  177     55121603546981200581762165212827652751691296897789
  178     32238195734329339946437501907836945765883352399886
  179     75506164965184775180738168837861091527357929701337
  180     62177842752192623401942399639168044983993173312731
  181     32924185707147349566916674687634660915035914677504
  182     99518671430235219628894890102423325116913619626622
  183     73267460800591547471830798392868535206946944540724
  184     76841822524674417161514036427982273348055556214818
  185     97142617910342598647204516893989422179826088076852
  186     87783646182799346313767754307809363333018982642090
  187     10848802521674670883215120185883543223812876952786
  188     71329612474782464538636993009049310363619763878039
  189     62184073572399794223406235393808339651327408011116
  190     66627891981488087797941876876144230030984490851411
  191     60661826293682836764744779239180335110989069790714
  192     85786944089552990653640447425576083659976645795096
  193     66024396409905389607120198219976047599490197230297
  194     64913982680032973156037120041377903785566085089252
  195     16730939319872750275468906903707539413042652315011
  196     94809377245048795150954100921645863754710598436791
  197     78639167021187492431995700641917969777599028300699
  198     15368713711936614952811305876380278410754449733078
  199     40789923115535562561142322423255033685442488917353
  200     44889911501440648020369068063960672322193204149535
  201     41503128880339536053299340368006977710650566631954
  202     81234880673210146739058568557934581403627822703280
  203     82616570773948327592232845941706525094512325230608
  204     22918802058777319719839450180888072429661980811197
  205     77158542502016545090413245809786882778948721859617
  206     72107838435069186155435662884062257473692284509516
  207     20849603980134001723930671666823555245252804609722
  208     53503534226472524250874054075591789781264330331690
  209 ]
  210     @test sum(digits(sum(nums))[end-9:end].*Int64(10).^(0:9)) == 5537376230
  211 end
  212 
  213 #14: 837799
  214 function euler14(m)
  215     c = zeros(Int,m)
  216     c[1] = 1
  217     for n::Int64 = 2:m
  218 , d = n, 0
  219         while> length(c) || c[] == 0
  220 = iseven() ?>>1 : 3+1
  221             d += 1
  222         end
  223         d += c[]
  224         while n > length(c) || c[n] == 0
  225             n <= length(c) && (c[n] = d)
  226             n = iseven(n) ? n>>1 : 3n+1
  227             d -= 1
  228         end
  229     end
  230     argmax(c)
  231 end
  232 @test euler14(999999) == 837799
  233 
  234 #15: 137846528820
  235 
  236 #16: 1366
  237 @test sum(digits(big(2)^1000)) == 1366
  238 
  239 #17: 21124
  240 #18: 1074
  241 #19: 171
  242 
  243 #20: 648
  244 @test sum(digits(factorial(big(100)))) == 648
  245 
  246 #21: 31626
  247 #22: 871198282
  248 #23: 4179871
  249 #24: 2783915460
  250 #25: 4782
  251 #26: 983
  252 #27: -59231
  253 #28: 669171001
  254 #29: 9183
  255 #30: 443839
  256 #31: 73682
  257 #32: 45228
  258 #33: 100
  259 #34: 40730
  260 #35: 55
  261 #36: 872187
  262 #37: 748317
  263 #38: 932718654
  264 #39: 840
  265 #40: 210
  266 #41: 7652413
  267 #42: 162
  268 #43: 16695334890
  269 #44: 5482660
  270 #45: 1533776805
  271 #46: 5777
  272 #47: 134043
  273 #48: 9110846700
  274 #49: 296962999629
  275 #50: 997651
  276 #51: 121313
  277 #52: 142857
  278 #53: 4075
  279 #54: 376
  280 #55: 249
  281 #56: 972
  282 #57: 153
  283 #58: 26241
  284 #59: 107359
  285 #60: 26033
  286 #61: 28684
  287 #62: 127035954683
  288 #63: 49
  289 #64: 1322
  290 #65: 272
  291 #66: 661
  292 #67: 7273
  293 #68: 6531031914842725
  294 #69: 510510
  295 #70: 8319823
  296 #71: 428570
  297 #72: 303963552391
  298 #73: 7295372
  299 #74: 402
  300 #75: 161667
  301 #76: 190569291
  302 #77: 71
  303 #78: 55374
  304 #79: 73162890
  305 #80: 40886
  306 #81: 427337
  307 #82: 260324
  308 #83: 425185
  309 #84: 101524
  310 #85: 2772
  311 #86: 1818
  312 #87: 1097343
  313 #88: 7587457
  314 #89: 743
  315 #90: 1217
  316 #91: 14234
  317 #92: 8581146
  318 #93: 1258
  319 #94: 518408346
  320 #95: 14316
  321 #96: 24702
  322 #97: 8739992577
  323 #98: 18769
  324 #99: 709
  325 #100: 756872327473
  326 #101: 37076114526
  327 #102: 228
  328 #103: 20313839404245
  329 #104: 329468
  330 #105: 73702
  331 #106: 21384
  332 #107: 259679
  333 #108: 180180
  334 #109: 38182
  335 #110: 9350130049860600
  336 #111: 612407567715
  337 #112: 1587000
  338 #113: 51161058134250
  339 #114: 16475640049
  340 #115: 168
  341 #116: 20492570929
  342 #117: 100808458960497
  343 #118: 44680
  344 #119: 248155780267521
  345 #120: 333082500
  346 #121: 2269
  347 #122: 1582
  348 #123: 21035
  349 #124: 21417
  350 #125: 2906969179
  351 #126: 18522
  352 #127: 18407904
  353 #128: 14516824220
  354 #129: 1000023
  355 #130: 149253
  356 #131: 173
  357 #132: 843296
  358 #133: 453647705
  359 #134: 18613426663617118
  360 #135: 4989
  361 #136: 2544559
  362 #137: 1120149658760
  363 #138: 1118049290473932
  364 #139: 10057761
  365 #140: 5673835352990
  366 #141: 878454337159
  367 #142: 1006193
  368 #143: 30758397
  369 #144: 354
  370 #145: 608720
  371 #146: 676333270
  372 #147: 846910284
  373 #148: 2129970655314432
  374 #149: 52852124
  375 #150: -271248680
  376 #151: 0.464399
  377 #152: 301
  378 #153: 17971254122360635
  379 #154: 479742450
  380 #155: 3857447
  381 #156: 21295121502550
  382 #157: 53490
  383 #158: 409511334375
  384 #159: 14489159
  385 #160: 16576
  386 #161: 20574308184277971
  387 #162: 3D58725572C62302
  388 #163: 343047
  389 #164: 378158756814587
  390 #165: 2868868
  391 #166: 7130034
  392 #167: 3916160068885
  393 #168: 59206
  394 #169: 178653872807
  395 #170: 9857164023
  396 #171: 142989277
  397 #172: 227485267000992000
  398 #173: 1572729
  399 #174: 209566
  400 #175: 1,13717420,8
  401 #176: 96818198400000
  402 #177: 129325
  403 #178: 126461847755
  404 #179: 986262
  405 #180: 285196020571078987
  406 #181: 83735848679360680
  407 #182: 399788195976
  408 #183: 48861552
  409 #184: 1725323624056
  410 #185: 4640261571849533
  411 #186: 2325629
  412 #187: 17427258
  413 #188: 95962097
  414 #189: 10834893628237824
  415 #190: 371048281
  416 #191: 1918080160
  417 #192: 57060635927998347
  418 #193: 684465067343069
  419 #194: 61190912
  420 #195: 75085391
  421 #196: 322303240771079935
  422 #197: 1.710637717
  423 #198: 52374425
  424 #199: 0.00396087
  425 #200: 229161792008
  426 #201: 115039000
  427 #202: 1209002624
  428 #203: 34029210557338
  429 #204: 2944730
  430 #205: 0.5731441
  431 #206: 1389019170
  432 #207: 44043947822
  433 #208: 331951449665644800
  434 #209: 15964587728784
  435 #210: 1598174770174689458
  436 #211: 1922364685
  437 #212: 328968937309
  438 #213: 330.721154
  439 #214: 1677366278943
  440 #215: 806844323190414
  441 #216: 5437849
  442 #217: 6273134
  443 #218: 0
  444 #219: 64564225042
  445 #220: 139776,963904
  446 #221: 1884161251122450
  447 #222: 1590933
  448 #223: 61614848
  449 #224: 4137330
  450 #225: 2009
  451 #226: 0.11316017
  452 #227: 3780.618622
  453 #228: 86226
  454 #229: 11325263
  455 #230: 850481152593119296
  456 #231: 7526965179680
  457 #232: 0.83648556
  458 #233: 271204031455541309
  459 #234: 1259187438574927161
  460 #235: 1.002322108633
  461 #236: 123/59
  462 #237: 15836928
  463 #238: 9922545104535661
  464 #239: 0.001887854841
  465 #240: 7448717393364181966
  466 #241: 482316491800641154
  467 #242: 997104142249036713
  468 #243: 892371480
  469 #244: 96356848
  470 #245: 288084712410001
  471 #246: 810834388
  472 #247: 782252
  473 #248: 23507044290
  474 #249: 9275262564250418
  475 #250: 1425480602091519
  476 #251: 18946051
  477 #252: 104924.0
  478 #253: 11.492847
  479 #254: 8184523820510
  480 #255: 4.4474011180
  481 #256: 85765680
  482 #257: 139012411
  483 #258: 12747994
  484 #259: 20101196798
  485 #260: 167542057
  486 #261: 238890850232021
  487 #262: 2531.205
  488 #263: 2039506520
  489 #264: 2816417.1055
  490 #265: 209110240768
  491 #266: 1096883702440585
  492 #267: 0.999992836187
  493 #268: 785478606870985
  494 #269: 1311109198529286
  495 #270: 82282080
  496 #271: 4617456485273129588
  497 #272: 8495585919506151122
  498 #273: 2032447591196869022
  499 #274: 1601912348822
  500 #275: 15030564
  501 #276: 5777137137739632912
  502 #277: 1125977393124310
  503 #278: 1228215747273908452
  504 #279: 416577688
  505 #280: 430.088247
  506 #281: 1485776387445623
  507 #282: 1098988351
  508 #283: 28038042525570324
  509 #284: 5a411d7b
  510 #285: 157055.80999
  511 #286: 52.6494571953
  512 #287: 313135496
  513 #288: 605857431263981935
  514 #289: 6567944538
  515 #290: 20444710234716473
  516 #291: 4037526
  517 #292: 3600060866
  518 #293: 2209
  519 #294: 789184709
  520 #295: 4884650818
  521 #296: 1137208419
  522 #297: 2252639041804718029
  523 #298: 1.76882294
  524 #299: 549936643
  525 #300: 8.0540771484375
  526 #301: 2178309
  527 #302: 1170060
  528 #303: 1111981904675169
  529 #304: 283988410192
  530 #305: 18174995535140
  531 #306: 852938
  532 #307: 0.7311720251
  533 #308: 1539669807660924
  534 #309: 210139
  535 #310: 2586528661783
  536 #311: 2466018557
  537 #312: 324681947
  538 #313: 2057774861813004
  539 #314: 132.52756426
  540 #315: 13625242
  541 #316: 542934735751917735
  542 #317: 1856532.8455
  543 #318: 709313889
  544 #319: 268457129
  545 #320: 278157919195482643
  546 #321: 2470433131948040
  547 #322: 999998760323313995
  548 #323: 6.3551758451
  549 #324: 96972774
  550 #325: 54672965
  551 #326: 1966666166408794329
  552 #327: 34315549139516
  553 #328: 260511850222
  554 #329: 199740353/29386561536000
  555 #330: 15955822
  556 #331: 467178235146843549
  557 #332: 2717.751525
  558 #333: 3053105
  559 #334: 150320021261690835
  560 #335: 5032316
  561 #336: CAGBIHEFJDK
  562 #337: 85068035
  563 #338: 15614292
  564 #339: 19823.542204
  565 #340: 291504964
  566 #341: 56098610614277014
  567 #342: 5943040885644
  568 #343: 269533451410884183
  569 #344: 65579304332
  570 #345: 13938
  571 #346: 336108797689259276
  572 #347: 11109800204052
  573 #348: 1004195061
  574 #349: 115384615384614952
  575 #350: 84664213
  576 #351: 11762187201804552
  577 #352: 378563.260589
  578 #353: 1.2759860331
  579 #354: 58065134
  580 #355: 1726545007
  581 #356: 28010159
  582 #357: 1739023853137
  583 #358: 3284144505
  584 #359: 40632119
  585 #360: 878825614395267072
  586 #361: 178476944
  587 #362: 457895958010
  588 #363: 0.0000372091
  589 #364: 44855254
  590 #365: 162619462356610313
  591 #366: 88351299
  592 #367: 48271207
  593 #368: 253.6135092068
  594 #369: 862400558448
  595 #370: 41791929448408
  596 #371: 40.66368097
  597 #372: 301450082318807027
  598 #373: 727227472448913
  599 #374: 334420941
  600 #375: 7435327983715286168
  601 #376: 973059630185670
  602 #377: 732385277
  603 #378: 147534623725724718
  604 #379: 132314136838185
  605 #380: 6.3202e25093
  606 #381: 139602943319822
  607 #382: 697003956
  608 #383: 22173624649806
  609 #384: 3354706415856332783
  610 #385: 3776957309612153700
  611 #386: 528755790
  612 #387: 696067597313468
  613 #388: 831907372805129931
  614 #389: 2406376.3623
  615 #390: 2919133642971
  616 #391: 61029882288
  617 #392: 3.1486734435
  618 #393: 112398351350823112
  619 #394: 3.2370342194
  620 #395: 28.2453753155
  621 #396: 173214653
  622 #397: 141630459461893728
  623 #398: 2010.59096
  624 #399: 1508395636674243,6.5e27330467
  625 #400: 438505383468410633
  626 #401: 281632621
  627 #402: 356019862
  628 #403: 18224771
  629 #404: 1199215615081353
  630 #405: 237696125
  631 #406: 36813.12757207
  632 #407: 39782849136421
  633 #408: 299742733
  634 #409: 253223948
  635 #410:
  636 #411: 9936352
  637 #412: 38788800
  638 #413: 3079418648040719
  639 #414:
  640 #415:
  641 #416:
  642 #417: 446572970925740
  643 #418: 1177163565297340320
  644 #419: 998567458,1046245404,43363922
  645 #420: 145159332
  646 #421:
  647 #422:
  648 #423:
  649 #424:
  650 #425: 46479497324
  651 #426:
  652 #427:
  653 #428:
  654 #429: 98792821
  655 #430: 5000624921.38