## "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
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         nʹ, d = n, 0
219         while nʹ > length(c) || c[nʹ] == 0
220             nʹ = iseven(nʹ) ? nʹ>>1 : 3nʹ+1
221             d += 1
222         end
223         d += c[nʹ]
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
```