euler-manager 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/Rakefile +3 -0
- data/bin/euler +28 -9
- data/config/config.rb +1 -0
- data/data/answers.yml +430 -456
- data/data/images/blackdot.gif +0 -0
- data/data/images/bracket_left.gif +0 -0
- data/data/images/bracket_right.gif +0 -0
- data/data/images/p295_lenticular.gif +0 -0
- data/data/images/p296_bisector.gif +0 -0
- data/data/images/p303_formula100.gif +0 -0
- data/data/images/p303_formula10000.gif +0 -0
- data/data/images/p392_gridlines.png +0 -0
- data/data/images/p400_winning.png +0 -0
- data/data/images/p411_longpath.png +0 -0
- data/data/images/p412_table53.png +0 -0
- data/data/images/p412_tablenums.png +0 -0
- data/data/images/p422_hyperbola.gif +0 -0
- data/data/images/p428_necklace.png +0 -0
- data/data/images/p_015.gif +0 -0
- data/data/images/p_068_1.gif +0 -0
- data/data/images/p_068_2.gif +0 -0
- data/data/images/p_085.gif +0 -0
- data/data/images/p_086.gif +0 -0
- data/data/images/p_090.gif +0 -0
- data/data/images/p_091_1.gif +0 -0
- data/data/images/p_091_2.gif +0 -0
- data/data/images/p_107_1.gif +0 -0
- data/data/images/p_107_2.gif +0 -0
- data/data/images/p_109.gif +0 -0
- data/data/images/p_126.gif +0 -0
- data/data/images/p_128.gif +0 -0
- data/data/images/p_138.gif +0 -0
- data/data/images/p_139.gif +0 -0
- data/data/images/p_143_torricelli.gif +0 -0
- data/data/images/p_144_1.gif +0 -0
- data/data/images/p_144_2.gif +0 -0
- data/data/images/p_147.gif +0 -0
- data/data/images/p_150.gif +0 -0
- data/data/images/p_151.gif +0 -0
- data/data/images/p_152_sum.gif +0 -0
- data/data/images/p_153_formule1.gif +0 -0
- data/data/images/p_153_formule2.gif +0 -0
- data/data/images/p_153_formule5.gif +0 -0
- data/data/images/p_153_formule6.gif +0 -0
- data/data/images/p_154_pyramid.gif +0 -0
- data/data/images/p_155_capacitors1.gif +0 -0
- data/data/images/p_155_capsform.gif +0 -0
- data/data/images/p_155_capsmu.gif +0 -0
- data/data/images/p_161_k9.gif +0 -0
- data/data/images/p_161_trio1.gif +0 -0
- data/data/images/p_161_trio3.gif +0 -0
- data/data/images/p_163.gif +0 -0
- data/data/images/p_173_square_laminas.gif +0 -0
- data/data/images/p_177_quad.gif +0 -0
- data/data/images/p_184.gif +0 -0
- data/data/images/p_189_colours.gif +0 -0
- data/data/images/p_189_grid.gif +0 -0
- data/data/images/p_194_Fig.png +0 -0
- data/data/images/p_194_GraphA.png +0 -0
- data/data/images/p_194_GraphB.png +0 -0
- data/data/images/p_199_circles_in_circles.gif +0 -0
- data/data/images/p_201_laserbeam.gif +0 -0
- data/data/images/p_208_robotwalk.gif +0 -0
- data/data/images/p_215_crackfree.gif +0 -0
- data/data/images/p_220.gif +0 -0
- data/data/images/p_226_formula.gif +0 -0
- data/data/images/p_226_scoop2.gif +0 -0
- data/data/images/p_228.png +0 -0
- data/data/images/p_237.gif +0 -0
- data/data/images/p_244_example.gif +0 -0
- data/data/images/p_244_start.gif +0 -0
- data/data/images/p_244_target.gif +0 -0
- data/data/images/p_246_anim.gif +0 -0
- data/data/images/p_246_ellipse.gif +0 -0
- data/data/images/p_247_hypersquares.gif +0 -0
- data/data/images/p_251_cardano.gif +0 -0
- data/data/images/p_252_convexhole.gif +0 -0
- data/data/images/p_255_Example.gif +0 -0
- data/data/images/p_255_Heron.gif +0 -0
- data/data/images/p_256_tatami3.gif +0 -0
- data/data/images/p_257_bisector.gif +0 -0
- data/data/images/p_262_formula1.gif +0 -0
- data/data/images/p_264_TriangleCentres.gif +0 -0
- data/data/images/p_265_BinaryCircles.gif +0 -0
- data/data/images/p_270_CutSquare.gif +0 -0
- data/data/images/p_275_sculptures2.gif +0 -0
- data/data/images/p_281_pizza.gif +0 -0
- data/data/images/p_282_formula.gif +0 -0
- data/data/images/p_282formula3.gif +0 -0
- data/data/images/p_287_quadtree.gif +0 -0
- data/data/images/p_289_euler.gif +0 -0
- data/data/images/p_291_formula.gif +0 -0
- data/data/images/p_299_ThreeSimTri.gif +0 -0
- data/data/images/p_300_protein.gif +0 -0
- data/data/images/p_306_pstrip.gif +0 -0
- data/data/images/p_309_ladders.gif +0 -0
- data/data/images/p_311_biclinic.gif +0 -0
- data/data/images/p_312_sierpinsky8t.gif +0 -0
- data/data/images/p_312_sierpinskyAt.gif +0 -0
- data/data/images/p_313_sliding_game_1.gif +0 -0
- data/data/images/p_313_sliding_game_2.gif +0 -0
- data/data/images/p_314_landgrab.gif +0 -0
- data/data/images/p_315_clocks.gif +0 -0
- data/data/images/p_316_decexp1.gif +0 -0
- data/data/images/p_316_decexp2.gif +0 -0
- data/data/images/p_316_decexp3.gif +0 -0
- data/data/images/p_321_swapping_counters_1.gif +0 -0
- data/data/images/p_321_swapping_counters_2.gif +0 -0
- data/data/images/p_326_formula1.gif +0 -0
- data/data/images/p_326_formula2.gif +0 -0
- data/data/images/p_327_rooms_of_doom.gif +0 -0
- data/data/images/p_328_sum1.gif +0 -0
- data/data/images/p_328_sum2.gif +0 -0
- data/data/images/p_330_formula.gif +0 -0
- data/data/images/p_331_crossflips1.gif +0 -0
- data/data/images/p_331_crossflips2.gif +0 -0
- data/data/images/p_331_crossflips3.gif +0 -0
- data/data/images/p_332_spherical.jpg +0 -0
- data/data/images/p_332_sum.gif +0 -0
- data/data/images/p_334_beans.gif +0 -0
- data/data/images/p_334_cases.gif +0 -0
- data/data/images/p_334_lfloor.gif +0 -0
- data/data/images/p_334_oplus.gif +0 -0
- data/data/images/p_334_rfloor.gif +0 -0
- data/data/images/p_335_mancala.gif +0 -0
- data/data/images/p_335_sum.gif +0 -0
- data/data/images/p_336_maximix.gif +0 -0
- data/data/images/p_338_gridpaper.gif +0 -0
- data/data/images/p_340_formula.gif +0 -0
- data/data/images/p_344_silverdollar.gif +0 -0
- data/data/images/p_351_hexorchard.png +0 -0
- data/data/images/p_354_bee_honeycomb.png +0 -0
- data/data/images/p_356_cubicpoly1.gif +0 -0
- data/data/images/p_356_cubicpoly2.gif +0 -0
- data/data/images/p_361_Thue-Morse1.gif +0 -0
- data/data/images/p_364_comf_dist.gif +0 -0
- data/data/images/p_372_pencilray1.jpg +0 -0
- data/data/images/p_372_pencilray2.gif +0 -0
- data/data/images/p_380_mazes.gif +0 -0
- data/data/images/p_384_formula.gif +0 -0
- data/data/images/p_385_ellipsetriangle.png +0 -0
- data/data/images/p_394_eatpie.gif +0 -0
- data/data/images/p_395_pythagorean.gif +0 -0
- data/data/images/p_404_c_ellipse.gif +0 -0
- data/data/images/p_405_tile1.png +0 -0
- data/data/images/p_405_tile2.gif +0 -0
- data/data/images/p_420_matrix.gif +0 -0
- data/data/images/p_424_kakuro1.gif +0 -0
- data/data/images/p_426_baxball1.gif +0 -0
- data/data/images/p_426_baxball2.gif +0 -0
- data/data/images/p_430_flips.gif +0 -0
- data/data/images/sod_13.gif +115 -0
- data/data/images/spacer.gif +0 -0
- data/data/images/symbol_asymp.gif +0 -0
- data/data/images/symbol_cong.gif +0 -0
- data/data/images/symbol_ge.gif +0 -0
- data/data/images/symbol_gt.gif +0 -0
- data/data/images/symbol_implies.gif +0 -0
- data/data/images/symbol_lceil.gif +0 -0
- data/data/images/symbol_le.gif +0 -0
- data/data/images/symbol_lfloor.gif +0 -0
- data/data/images/symbol_lt.gif +0 -0
- data/data/images/symbol_maps.gif +0 -0
- data/data/images/symbol_minus.gif +0 -0
- data/data/images/symbol_ne.gif +0 -0
- data/data/images/symbol_plusmn.gif +0 -0
- data/data/images/symbol_radic.gif +0 -0
- data/data/images/symbol_rceil.gif +0 -0
- data/data/images/symbol_rfloor.gif +0 -0
- data/data/images/symbol_sum.gif +0 -0
- data/data/images/symbol_times.gif +0 -0
- data/data/problems/1.yml +5 -3
- data/data/problems/10.yml +3 -4
- data/data/problems/100.yml +7 -9
- data/data/problems/101.yml +32 -45
- data/data/problems/102.yml +11 -12
- data/data/problems/103.yml +18 -22
- data/data/problems/104.yml +9 -11
- data/data/problems/105.yml +12 -17
- data/data/problems/106.yml +14 -15
- data/data/problems/107.yml +16 -16
- data/data/problems/108.yml +17 -28
- data/data/problems/109.yml +27 -29
- data/data/problems/11.yml +24 -29
- data/data/problems/110.yml +11 -15
- data/data/problems/111.yml +27 -17
- data/data/problems/112.yml +13 -11
- data/data/problems/113.yml +11 -9
- data/data/problems/114.yml +46 -100
- data/data/problems/115.yml +15 -12
- data/data/problems/116.yml +33 -72
- data/data/problems/117.yml +36 -78
- data/data/problems/118.yml +5 -5
- data/data/problems/119.yml +9 -7
- data/data/problems/12.yml +8 -9
- data/data/problems/120.yml +7 -13
- data/data/problems/121.yml +9 -11
- data/data/problems/122.yml +21 -38
- data/data/problems/123.yml +9 -9
- data/data/problems/124.yml +24 -54
- data/data/problems/125.yml +7 -8
- data/data/problems/126.yml +12 -13
- data/data/problems/127.yml +21 -27
- data/data/problems/128.yml +19 -14
- data/data/problems/129.yml +9 -8
- data/data/problems/13.yml +52 -2
- data/data/problems/130.yml +12 -15
- data/data/problems/131.yml +9 -8
- data/data/problems/132.yml +7 -8
- data/data/problems/133.yml +9 -9
- data/data/problems/134.yml +7 -15
- data/data/problems/135.yml +9 -16
- data/data/problems/136.yml +9 -13
- data/data/problems/137.yml +22 -32
- data/data/problems/138.yml +11 -16
- data/data/problems/139.yml +11 -11
- data/data/problems/14.yml +14 -24
- data/data/problems/140.yml +18 -25
- data/data/problems/141.yml +10 -11
- data/data/problems/142.yml +3 -10
- data/data/problems/143.yml +13 -16
- data/data/problems/144.yml +23 -26
- data/data/problems/145.yml +7 -7
- data/data/problems/146.yml +6 -6
- data/data/problems/147.yml +7 -8
- data/data/problems/148.yml +15 -7
- data/data/problems/149.yml +26 -35
- data/data/problems/15.yml +7 -7
- data/data/problems/150.yml +18 -29
- data/data/problems/151.yml +17 -15
- data/data/problems/152.yml +11 -8
- data/data/problems/153.yml +38 -53
- data/data/problems/154.yml +10 -12
- data/data/problems/155.yml +12 -15
- data/data/problems/156.yml +20 -22
- data/data/problems/157.yml +26 -28
- data/data/problems/158.yml +13 -14
- data/data/problems/159.yml +15 -25
- data/data/problems/16.yml +5 -2
- data/data/problems/160.yml +3 -4
- data/data/problems/161.yml +6 -10
- data/data/problems/162.yml +10 -11
- data/data/problems/163.yml +13 -15
- data/data/problems/164.yml +3 -3
- data/data/problems/165.yml +25 -28
- data/data/problems/166.yml +7 -11
- data/data/problems/167.yml +10 -12
- data/data/problems/168.yml +7 -9
- data/data/problems/169.yml +4 -5
- data/data/problems/17.yml +7 -7
- data/data/problems/170.yml +7 -10
- data/data/problems/171.yml +7 -9
- data/data/problems/172.yml +3 -2
- data/data/problems/173.yml +9 -7
- data/data/problems/174.yml +13 -15
- data/data/problems/175.yml +13 -15
- data/data/problems/176.yml +5 -5
- data/data/problems/177.yml +13 -12
- data/data/problems/178.yml +5 -5
- data/data/problems/179.yml +3 -6
- data/data/problems/18.yml +13 -17
- data/data/problems/180.yml +20 -25
- data/data/problems/181.yml +7 -3
- data/data/problems/182.yml +22 -27
- data/data/problems/183.yml +17 -23
- data/data/problems/184.yml +11 -14
- data/data/problems/185.yml +17 -18
- data/data/problems/186.yml +16 -24
- data/data/problems/187.yml +9 -12
- data/data/problems/188.yml +5 -6
- data/data/problems/189.yml +5 -7
- data/data/problems/19.yml +7 -8
- data/data/problems/190.yml +7 -9
- data/data/problems/191.yml +9 -10
- data/data/problems/192.yml +14 -22
- data/data/problems/193.yml +5 -3
- data/data/problems/194.yml +11 -14
- data/data/problems/195.yml +7 -9
- data/data/problems/196.yml +13 -21
- data/data/problems/197.yml +7 -11
- data/data/problems/198.yml +13 -16
- data/data/problems/199.yml +10 -10
- data/data/problems/2.yml +6 -6
- data/data/problems/20.yml +10 -18
- data/data/problems/200.yml +8 -8
- data/data/problems/201.yml +14 -16
- data/data/problems/202.yml +11 -10
- data/data/problems/203.yml +11 -16
- data/data/problems/204.yml +7 -7
- data/data/problems/205.yml +6 -6
- data/data/problems/206.yml +2 -2
- data/data/problems/207.yml +13 -16
- data/data/problems/208.yml +8 -8
- data/data/problems/209.yml +11 -23
- data/data/problems/21.yml +8 -9
- data/data/problems/210.yml +6 -6
- data/data/problems/211.yml +7 -7
- data/data/problems/212.yml +26 -36
- data/data/problems/213.yml +6 -7
- data/data/problems/214.yml +10 -11
- data/data/problems/215.yml +11 -14
- data/data/problems/216.yml +7 -10
- data/data/problems/217.yml +14 -23
- data/data/problems/218.yml +9 -10
- data/data/problems/219.yml +10 -15
- data/data/problems/22.yml +7 -9
- data/data/problems/220.yml +15 -20
- data/data/problems/221.yml +10 -16
- data/data/problems/222.yml +5 -3
- data/data/problems/223.yml +6 -8
- data/data/problems/224.yml +6 -8
- data/data/problems/225.yml +6 -7
- data/data/problems/226.yml +9 -12
- data/data/problems/227.yml +9 -9
- data/data/problems/228.yml +14 -17
- data/data/problems/229.yml +17 -25
- data/data/problems/23.yml +11 -15
- data/data/problems/230.yml +15 -19
- data/data/problems/231.yml +8 -12
- data/data/problems/232.yml +9 -10
- data/data/problems/233.yml +7 -6
- data/data/problems/234.yml +14 -19
- data/data/problems/235.yml +4 -5
- data/data/problems/236.yml +20 -22
- data/data/problems/237.yml +14 -9
- data/data/problems/238.yml +21 -33
- data/data/problems/239.yml +5 -5
- data/data/problems/24.yml +7 -6
- data/data/problems/240.yml +7 -7
- data/data/problems/241.yml +9 -12
- data/data/problems/242.yml +7 -9
- data/data/problems/243.yml +14 -15
- data/data/problems/244.yml +19 -28
- data/data/problems/245.yml +22 -30
- data/data/problems/246.yml +10 -13
- data/data/problems/247.yml +14 -17
- data/data/problems/248.yml +5 -2
- data/data/problems/249.yml +3 -3
- data/data/problems/25.yml +12 -11
- data/data/problems/250.yml +3 -3
- data/data/problems/251.yml +11 -9
- data/data/problems/252.yml +24 -25
- data/data/problems/253.yml +19 -32
- data/data/problems/254.yml +13 -17
- data/data/problems/255.yml +40 -50
- data/data/problems/256.yml +31 -39
- data/data/problems/257.yml +10 -14
- data/data/problems/258.yml +7 -9
- data/data/problems/259.yml +14 -12
- data/data/problems/26.yml +17 -7
- data/data/problems/260.yml +21 -25
- data/data/problems/261.yml +13 -15
- data/data/problems/262.yml +15 -16
- data/data/problems/263.yml +13 -15
- data/data/problems/264.yml +15 -16
- data/data/problems/265.yml +10 -12
- data/data/problems/266.yml +6 -6
- data/data/problems/267.yml +13 -10
- data/data/problems/268.yml +5 -4
- data/data/problems/269.yml +10 -11
- data/data/problems/27.yml +15 -21
- data/data/problems/270.yml +13 -13
- data/data/problems/271.yml +7 -9
- data/data/problems/272.yml +8 -11
- data/data/problems/273.yml +13 -17
- data/data/problems/274.yml +16 -19
- data/data/problems/275.yml +13 -15
- data/data/problems/276.yml +5 -7
- data/data/problems/277.yml +17 -20
- data/data/problems/278.yml +20 -28
- data/data/problems/279.yml +4 -3
- data/data/problems/28.yml +6 -13
- data/data/problems/280.yml +9 -9
- data/data/problems/281.yml +10 -13
- data/data/problems/282.yml +9 -6
- data/data/problems/283.yml +8 -8
- data/data/problems/284.yml +15 -18
- data/data/problems/285.yml +11 -11
- data/data/problems/286.yml +7 -8
- data/data/problems/287.yml +22 -32
- data/data/problems/288.yml +10 -11
- data/data/problems/289.yml +14 -15
- data/data/problems/29.yml +13 -20
- data/data/problems/290.yml +3 -4
- data/data/problems/291.yml +3 -6
- data/data/problems/292.yml +8 -9
- data/data/problems/293.yml +9 -10
- data/data/problems/294.yml +6 -6
- data/data/problems/295.yml +16 -21
- data/data/problems/296.yml +9 -11
- data/data/problems/297.yml +12 -15
- data/data/problems/298.yml +29 -29
- data/data/problems/299.yml +15 -21
- data/data/problems/3.yml +3 -3
- data/data/problems/30.yml +7 -8
- data/data/problems/300.yml +15 -16
- data/data/problems/301.yml +15 -17
- data/data/problems/302.yml +13 -14
- data/data/problems/303.yml +9 -7
- data/data/problems/304.yml +10 -15
- data/data/problems/305.yml +6 -10
- data/data/problems/306.yml +20 -24
- data/data/problems/307.yml +7 -8
- data/data/problems/308.yml +19 -30
- data/data/problems/309.yml +11 -12
- data/data/problems/31.yml +11 -14
- data/data/problems/310.yml +10 -15
- data/data/problems/311.yml +11 -17
- data/data/problems/312.yml +10 -11
- data/data/problems/313.yml +13 -13
- data/data/problems/314.yml +23 -25
- data/data/problems/315.yml +39 -45
- data/data/problems/316.yml +13 -13
- data/data/problems/317.yml +6 -7
- data/data/problems/318.yml +35 -57
- data/data/problems/319.yml +15 -19
- data/data/problems/32.yml +9 -10
- data/data/problems/320.yml +9 -8
- data/data/problems/321.yml +8 -9
- data/data/problems/322.yml +6 -8
- data/data/problems/323.yml +12 -15
- data/data/problems/324.yml +10 -13
- data/data/problems/325.yml +15 -21
- data/data/problems/326.yml +15 -8
- data/data/problems/327.yml +19 -23
- data/data/problems/328.yml +28 -31
- data/data/problems/329.yml +12 -13
- data/data/problems/33.yml +9 -9
- data/data/problems/330.yml +17 -36
- data/data/problems/331.yml +16 -22
- data/data/problems/332.yml +9 -11
- data/data/problems/333.yml +17 -20
- data/data/problems/334.yml +22 -34
- data/data/problems/335.yml +11 -12
- data/data/problems/336.yml +18 -20
- data/data/problems/337.yml +9 -11
- data/data/problems/338.yml +27 -37
- data/data/problems/339.yml +9 -9
- data/data/problems/34.yml +7 -3
- data/data/problems/340.yml +8 -10
- data/data/problems/341.yml +12 -14
- data/data/problems/342.yml +9 -13
- data/data/problems/343.yml +18 -25
- data/data/problems/344.yml +16 -17
- data/data/problems/345.yml +17 -22
- data/data/problems/346.yml +7 -7
- data/data/problems/347.yml +9 -12
- data/data/problems/348.yml +7 -8
- data/data/problems/349.yml +8 -9
- data/data/problems/35.yml +7 -4
- data/data/problems/350.yml +12 -14
- data/data/problems/351.yml +8 -9
- data/data/problems/352.yml +38 -42
- data/data/problems/353.yml +17 -21
- data/data/problems/354.yml +11 -13
- data/data/problems/355.yml +4 -4
- data/data/problems/356.yml +6 -6
- data/data/problems/357.yml +5 -5
- data/data/problems/358.yml +16 -25
- data/data/problems/359.yml +19 -22
- data/data/problems/36.yml +7 -4
- data/data/problems/360.yml +8 -8
- data/data/problems/361.yml +14 -15
- data/data/problems/362.yml +16 -28
- data/data/problems/363.yml +22 -23
- data/data/problems/364.yml +9 -11
- data/data/problems/365.yml +7 -13
- data/data/problems/366.yml +19 -22
- data/data/problems/367.yml +14 -15
- data/data/problems/368.yml +18 -35
- data/data/problems/369.yml +7 -11
- data/data/problems/37.yml +7 -6
- data/data/problems/370.yml +10 -13
- data/data/problems/371.yml +8 -9
- data/data/problems/372.yml +9 -12
- data/data/problems/373.yml +5 -6
- data/data/problems/374.yml +17 -21
- data/data/problems/375.yml +13 -17
- data/data/problems/376.yml +19 -21
- data/data/problems/377.yml +6 -7
- data/data/problems/378.yml +8 -11
- data/data/problems/379.yml +9 -11
- data/data/problems/38.yml +9 -13
- data/data/problems/380.yml +14 -17
- data/data/problems/381.yml +12 -18
- data/data/problems/382.yml +16 -19
- data/data/problems/383.yml +7 -9
- data/data/problems/384.yml +20 -24
- data/data/problems/385.yml +12 -16
- data/data/problems/386.yml +9 -11
- data/data/problems/387.yml +14 -15
- data/data/problems/388.yml +6 -8
- data/data/problems/389.yml +8 -8
- data/data/problems/39.yml +7 -6
- data/data/problems/390.yml +9 -14
- data/data/problems/391.yml +21 -25
- data/data/problems/392.yml +16 -17
- data/data/problems/393.yml +5 -6
- data/data/problems/394.yml +15 -18
- data/data/problems/395.yml +12 -13
- data/data/problems/396.yml +17 -22
- data/data/problems/397.yml +13 -16
- data/data/problems/398.yml +8 -9
- data/data/problems/399.yml +18 -18
- data/data/problems/4.yml +5 -4
- data/data/problems/40.yml +11 -14
- data/data/problems/400.yml +10 -11
- data/data/problems/401.yml +6 -7
- data/data/problems/402.yml +16 -21
- data/data/problems/403.yml +12 -14
- data/data/problems/404.yml +14 -16
- data/data/problems/405.yml +10 -11
- data/data/problems/406.yml +35 -41
- data/data/problems/407.yml +9 -16
- data/data/problems/408.yml +9 -9
- data/data/problems/409.yml +5 -7
- data/data/problems/41.yml +5 -4
- data/data/problems/410.yml +10 -13
- data/data/problems/411.yml +15 -19
- data/data/problems/412.yml +11 -15
- data/data/problems/413.yml +8 -8
- data/data/problems/414.yml +29 -34
- data/data/problems/415.yml +12 -15
- data/data/problems/416.yml +7 -7
- data/data/problems/417.yml +16 -17
- data/data/problems/418.yml +9 -12
- data/data/problems/419.yml +13 -18
- data/data/problems/42.yml +9 -10
- data/data/problems/420.yml +5 -6
- data/data/problems/421.yml +14 -25
- data/data/problems/422.yml +16 -18
- data/data/problems/423.yml +16 -18
- data/data/problems/424.yml +18 -19
- data/data/problems/425.yml +11 -12
- data/data/problems/426.yml +20 -21
- data/data/problems/427.yml +11 -13
- data/data/problems/428.yml +21 -25
- data/data/problems/429.yml +6 -6
- data/data/problems/43.yml +15 -13
- data/data/problems/430.yml +14 -16
- data/data/problems/44.yml +9 -12
- data/data/problems/45.yml +11 -11
- data/data/problems/46.yml +9 -14
- data/data/problems/47.yml +11 -16
- data/data/problems/48.yml +5 -3
- data/data/problems/49.yml +7 -6
- data/data/problems/5.yml +5 -4
- data/data/problems/50.yml +11 -6
- data/data/problems/51.yml +9 -11
- data/data/problems/52.yml +5 -4
- data/data/problems/53.yml +15 -24
- data/data/problems/54.yml +29 -39
- data/data/problems/55.yml +16 -17
- data/data/problems/56.yml +5 -7
- data/data/problems/57.yml +10 -11
- data/data/problems/58.yml +11 -18
- data/data/problems/59.yml +11 -19
- data/data/problems/6.yml +13 -9
- data/data/problems/60.yml +5 -6
- data/data/problems/61.yml +18 -26
- data/data/problems/62.yml +5 -5
- data/data/problems/63.yml +5 -3
- data/data/problems/64.yml +52 -126
- data/data/problems/65.yml +21 -47
- data/data/problems/66.yml +13 -23
- data/data/problems/67.yml +10 -13
- data/data/problems/68.yml +15 -19
- data/data/problems/69.yml +18 -10
- data/data/problems/7.yml +5 -2
- data/data/problems/70.yml +10 -12
- data/data/problems/71.yml +11 -13
- data/data/problems/72.yml +11 -12
- data/data/problems/73.yml +11 -12
- data/data/problems/74.yml +25 -37
- data/data/problems/75.yml +10 -12
- data/data/problems/76.yml +4 -4
- data/data/problems/77.yml +4 -4
- data/data/problems/78.yml +13 -8
- data/data/problems/79.yml +7 -7
- data/data/problems/8.yml +14 -8
- data/data/problems/80.yml +7 -7
- data/data/problems/81.yml +9 -15
- data/data/problems/82.yml +10 -15
- data/data/problems/83.yml +10 -19
- data/data/problems/84.yml +36 -59
- data/data/problems/85.yml +7 -5
- data/data/problems/86.yml +11 -11
- data/data/problems/87.yml +7 -8
- data/data/problems/88.yml +30 -49
- data/data/problems/89.yml +13 -14
- data/data/problems/9.yml +6 -9
- data/data/problems/90.yml +16 -18
- data/data/problems/91.yml +10 -15
- data/data/problems/92.yml +14 -25
- data/data/problems/93.yml +13 -17
- data/data/problems/94.yml +7 -7
- data/data/problems/95.yml +13 -19
- data/data/problems/96.yml +24 -40
- data/data/problems/97.yml +7 -10
- data/data/problems/98.yml +9 -12
- data/data/problems/99.yml +9 -12
- data/euler-manager.gemspec +1 -0
- data/example/1/README.md +4 -4
- data/example/15/README.md +8 -0
- data/example/15/python/15.py +5 -0
- data/example/15/python/euler.py +0 -0
- data/example/2/README.md +7 -5
- data/example/Eulerfile.rb +1 -0
- data/lib/euler/problem.rb +6 -1
- data/lib/euler/solution.rb +4 -2
- data/lib/euler/version.rb +1 -1
- data/rake/clean.rake +16 -0
- data/rake/update.rake +88 -0
- data/spec/euler/solution_spec.rb +2 -1
- data/templates/Eulerfile.rb +12 -0
- metadata +189 -29
- data/data/problems/431.yml +0 -33
- data/data/problems/432.yml +0 -13
- data/data/problems/433.yml +0 -18
- data/data/problems/434.yml +0 -32
- data/data/problems/435.yml +0 -21
- data/data/problems/436.yml +0 -21
- data/data/problems/437.yml +0 -22
- data/data/problems/438.yml +0 -29
- data/data/problems/439.yml +0 -17
- data/data/problems/440.yml +0 -21
- data/data/problems/441.yml +0 -23
- data/data/problems/442.yml +0 -9
- data/data/problems/443.yml +0 -13
- data/data/problems/444.yml +0 -28
- data/data/problems/445.yml +0 -37
- data/data/problems/446.yml +0 -29
- data/data/problems/447.yml +0 -31
- data/data/problems/448.yml +0 -14
- data/data/problems/449.yml +0 -17
- data/data/problems/450.yml +0 -26
- data/data/problems/451.yml +0 -15
- data/data/problems/452.yml +0 -8
- data/data/problems/453.yml +0 -16
- data/data/problems/454.yml +0 -17
- data/data/problems/455.yml +0 -16
- data/data/problems/456.yml +0 -15
- data/scripts/update_problems +0 -68
data/example/2/README.md
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# [Even Fibonacci numbers](http://projecteuler.net/problem=2)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
|
|
4
|
+
|
|
5
|
+
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
|
|
6
|
+
|
|
7
|
+
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
|
|
8
|
+
|
|
7
9
|
<!--
|
|
8
10
|
Note: This problem has been changed recently, please check that you are using the right parameters.
|
|
9
|
-
-->
|
|
11
|
+
-->
|
data/example/Eulerfile.rb
CHANGED
|
@@ -11,6 +11,7 @@ Euler.config do |config|
|
|
|
11
11
|
|
|
12
12
|
config.answers_file "#{data_dir}/answers.yml"
|
|
13
13
|
config.problems_dir "#{data_dir}/problems"
|
|
14
|
+
config.images_dir "https://raw.githubusercontent.com/yaworsw/euler-manager/develop/data/images"
|
|
14
15
|
|
|
15
16
|
# The +directory_strategy+ is a Proc which returns the directory assigned to a
|
|
16
17
|
# a given solution.
|
data/lib/euler/problem.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Euler
|
|
|
13
13
|
Problem.new problem_spec
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
attr_reader :id, :name, :url
|
|
16
|
+
attr_reader :id, :name, :url
|
|
17
17
|
|
|
18
18
|
# Given a hash with symbol keys initialize the problem using the +:id+,
|
|
19
19
|
# +:name+, +url+, and +:content+ keys.
|
|
@@ -24,6 +24,11 @@ module Euler
|
|
|
24
24
|
@content = options[:content]
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
# Passing content though an ultra simple template engine before returning it
|
|
28
|
+
def content
|
|
29
|
+
@content.gsub(/\{\{\s?images_dir\s?\}\}/, Euler.images_dir)
|
|
30
|
+
end
|
|
31
|
+
|
|
27
32
|
# Returns true if this problem has an answer.
|
|
28
33
|
def has_answer?
|
|
29
34
|
not answer.empty?
|
data/lib/euler/solution.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'digest/sha1'
|
|
2
|
+
|
|
1
3
|
module Euler
|
|
2
4
|
|
|
3
5
|
# This class represents a user created solution to a project Euler problem.
|
|
@@ -15,7 +17,7 @@ module Euler
|
|
|
15
17
|
# initialize the instance.
|
|
16
18
|
def initialize problem, language
|
|
17
19
|
if problem.is_a?(Problem)
|
|
18
|
-
@problem
|
|
20
|
+
@problem = problem
|
|
19
21
|
else
|
|
20
22
|
@problem_id = problem
|
|
21
23
|
end
|
|
@@ -65,7 +67,7 @@ module Euler
|
|
|
65
67
|
def test
|
|
66
68
|
expected = answer
|
|
67
69
|
result = run
|
|
68
|
-
expected == result
|
|
70
|
+
expected == Digest::SHA1.hexdigest(result)
|
|
69
71
|
end
|
|
70
72
|
|
|
71
73
|
# Alias for +test+.
|
data/lib/euler/version.rb
CHANGED
data/rake/clean.rake
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Delete all of the problem's .yaml files and the images from the data directory
|
|
2
|
+
|
|
3
|
+
desc "Deletes all of the data that has been downloaded for Project Euler problems"
|
|
4
|
+
task :clean do
|
|
5
|
+
|
|
6
|
+
data_dir = "#{__dir__}/../data"
|
|
7
|
+
answers_file = "#{data_dir}/answers.yml"
|
|
8
|
+
problems_dir = "#{data_dir}/problems"
|
|
9
|
+
images_dir = "#{data_dir}/images"
|
|
10
|
+
|
|
11
|
+
FileUtils.rm_rf(images_dir)
|
|
12
|
+
FileUtils.rm_rf(problems_dir)
|
|
13
|
+
|
|
14
|
+
FileUtils.mkdir(images_dir)
|
|
15
|
+
FileUtils.mkdir(problems_dir)
|
|
16
|
+
end
|
data/rake/update.rake
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Gets all of the problems from projecteuler.net and serializes them as yaml
|
|
2
|
+
# into the data/problems directory. This way http requests do not need to be
|
|
3
|
+
# each time the manager is asked to describe a problem.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
|
6
|
+
|
|
7
|
+
require 'colorize'
|
|
8
|
+
require 'nokogiri'
|
|
9
|
+
require 'open-uri'
|
|
10
|
+
require 'reverse_markdown'
|
|
11
|
+
require 'yaml'
|
|
12
|
+
|
|
13
|
+
require 'euler'
|
|
14
|
+
|
|
15
|
+
desc "Scrape the Project Euler website and download problem descriptions and images"
|
|
16
|
+
task :update do
|
|
17
|
+
|
|
18
|
+
# Number of seconds to wait in the beginning of each iteration of the http request loop
|
|
19
|
+
sleep_time = 0.5
|
|
20
|
+
|
|
21
|
+
puts
|
|
22
|
+
puts 'Updating project Euler problem specs.'
|
|
23
|
+
puts
|
|
24
|
+
|
|
25
|
+
data_dir = "#{__dir__}/../data"
|
|
26
|
+
answers_file = "#{data_dir}/answers.yml"
|
|
27
|
+
problems_dir = "#{data_dir}/problems"
|
|
28
|
+
images_dir = "#{data_dir}/images"
|
|
29
|
+
|
|
30
|
+
puts 'Data directory: '.light_black + data_dir.underline
|
|
31
|
+
puts 'Answers File: '.light_black + answers_file.underline
|
|
32
|
+
puts 'Problems Directory: '.light_black + problems_dir.underline
|
|
33
|
+
puts
|
|
34
|
+
|
|
35
|
+
problem_ids = YAML.load_file(answers_file).keys
|
|
36
|
+
problems_count = problem_ids.count
|
|
37
|
+
problems_count_digits = problems_count.to_s.size
|
|
38
|
+
|
|
39
|
+
puts problems_count.to_s.underline + ' Problems will be updated.'
|
|
40
|
+
puts
|
|
41
|
+
|
|
42
|
+
# Fetch problems from projecteuler.net
|
|
43
|
+
problems = problem_ids.map.with_index do |problem_id, index|
|
|
44
|
+
zero_padded_index = (index + 1).to_s.rjust(problems_count_digits, '0')
|
|
45
|
+
zero_padded_problem_id = problem_id.to_s.rjust(problems_count_digits, '0')
|
|
46
|
+
|
|
47
|
+
print "(#{zero_padded_index} / #{problems_count}) ##{zero_padded_index} "
|
|
48
|
+
|
|
49
|
+
sleep(sleep_time)
|
|
50
|
+
|
|
51
|
+
url = "http://projecteuler.net/problem=#{problem_id}"
|
|
52
|
+
|
|
53
|
+
doc = Nokogiri::HTML(open(url))
|
|
54
|
+
|
|
55
|
+
problem_name = ReverseMarkdown.convert(doc.css('h2').first.inner_html).strip
|
|
56
|
+
|
|
57
|
+
print ": #{problem_name.strip.bold.underline} "
|
|
58
|
+
|
|
59
|
+
# download images
|
|
60
|
+
doc.css('.problem_content img').each do |img|
|
|
61
|
+
image_url = "http://projecteuler.net/#{img['src']}"
|
|
62
|
+
file_name = File.basename(image_url)
|
|
63
|
+
file_path = "#{images_dir}/#{file_name}"
|
|
64
|
+
open(image_url) do |i|
|
|
65
|
+
File.open(file_path, 'wb') do |f|
|
|
66
|
+
f.puts(i.read)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
img['src'] = "\{\{\ images_dir\ \}\}/#{file_name}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
problem = Euler::Problem.new({
|
|
73
|
+
id: problem_id,
|
|
74
|
+
name: problem_name,
|
|
75
|
+
url: url,
|
|
76
|
+
content: ReverseMarkdown.convert(doc.css('.problem_content').first.to_xml)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
File.open("#{problems_dir}/#{problem.id}.yml", 'w') do |f|
|
|
80
|
+
f.write(problem.to_yaml)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
print "\u2713".encode('utf-8').green.bold
|
|
84
|
+
puts
|
|
85
|
+
|
|
86
|
+
problem
|
|
87
|
+
end
|
|
88
|
+
end
|
data/spec/euler/solution_spec.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
|
+
require 'digest/sha1'
|
|
2
3
|
|
|
3
4
|
class EulerLang
|
|
4
5
|
def run solution
|
|
@@ -59,7 +60,7 @@ describe Euler::Solution do
|
|
|
59
60
|
|
|
60
61
|
solution = Euler::Solution.new(1, 'euler-lang')
|
|
61
62
|
problem = solution.problem
|
|
62
|
-
allow(problem).to receive(:answer).and_return('42', '9001')
|
|
63
|
+
allow(problem).to receive(:answer).and_return(Digest::SHA1.hexdigest('42'), Digest::SHA1.hexdigest('9001'))
|
|
63
64
|
|
|
64
65
|
solution.correct?.should be_truthy
|
|
65
66
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Euler.config do |config|
|
|
2
|
+
|
|
3
|
+
# Images included in problem prompts are typically loaded from your local
|
|
4
|
+
# file system. You can opt into loading the images from this gem's github
|
|
5
|
+
# repo by uncommenting the following line.
|
|
6
|
+
# config.images_dir "https://raw.githubusercontent.com/yaworsw/euler-manager/develop/data/images"
|
|
7
|
+
|
|
8
|
+
# Also you can have the images included in your kata repo by running the
|
|
9
|
+
# command euler include_images and uncommenting the following line.
|
|
10
|
+
# config.images_dir "#{File.dirname(__FILE__)}/.data/images"
|
|
11
|
+
|
|
12
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: euler-manager
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- William Yaworsky
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-07-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: commander
|
|
@@ -122,6 +122,20 @@ dependencies:
|
|
|
122
122
|
- - '>='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: reverse_markdown
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - '>='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - '>='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
125
139
|
description:
|
|
126
140
|
email:
|
|
127
141
|
- wj.px01@gmail.com
|
|
@@ -139,6 +153,173 @@ files:
|
|
|
139
153
|
- bin/euler
|
|
140
154
|
- config/config.rb
|
|
141
155
|
- data/answers.yml
|
|
156
|
+
- data/images/blackdot.gif
|
|
157
|
+
- data/images/bracket_left.gif
|
|
158
|
+
- data/images/bracket_right.gif
|
|
159
|
+
- data/images/p295_lenticular.gif
|
|
160
|
+
- data/images/p296_bisector.gif
|
|
161
|
+
- data/images/p303_formula100.gif
|
|
162
|
+
- data/images/p303_formula10000.gif
|
|
163
|
+
- data/images/p392_gridlines.png
|
|
164
|
+
- data/images/p400_winning.png
|
|
165
|
+
- data/images/p411_longpath.png
|
|
166
|
+
- data/images/p412_table53.png
|
|
167
|
+
- data/images/p412_tablenums.png
|
|
168
|
+
- data/images/p422_hyperbola.gif
|
|
169
|
+
- data/images/p428_necklace.png
|
|
170
|
+
- data/images/p_015.gif
|
|
171
|
+
- data/images/p_068_1.gif
|
|
172
|
+
- data/images/p_068_2.gif
|
|
173
|
+
- data/images/p_085.gif
|
|
174
|
+
- data/images/p_086.gif
|
|
175
|
+
- data/images/p_090.gif
|
|
176
|
+
- data/images/p_091_1.gif
|
|
177
|
+
- data/images/p_091_2.gif
|
|
178
|
+
- data/images/p_107_1.gif
|
|
179
|
+
- data/images/p_107_2.gif
|
|
180
|
+
- data/images/p_109.gif
|
|
181
|
+
- data/images/p_126.gif
|
|
182
|
+
- data/images/p_128.gif
|
|
183
|
+
- data/images/p_138.gif
|
|
184
|
+
- data/images/p_139.gif
|
|
185
|
+
- data/images/p_143_torricelli.gif
|
|
186
|
+
- data/images/p_144_1.gif
|
|
187
|
+
- data/images/p_144_2.gif
|
|
188
|
+
- data/images/p_147.gif
|
|
189
|
+
- data/images/p_150.gif
|
|
190
|
+
- data/images/p_151.gif
|
|
191
|
+
- data/images/p_152_sum.gif
|
|
192
|
+
- data/images/p_153_formule1.gif
|
|
193
|
+
- data/images/p_153_formule2.gif
|
|
194
|
+
- data/images/p_153_formule5.gif
|
|
195
|
+
- data/images/p_153_formule6.gif
|
|
196
|
+
- data/images/p_154_pyramid.gif
|
|
197
|
+
- data/images/p_155_capacitors1.gif
|
|
198
|
+
- data/images/p_155_capsform.gif
|
|
199
|
+
- data/images/p_155_capsmu.gif
|
|
200
|
+
- data/images/p_161_k9.gif
|
|
201
|
+
- data/images/p_161_trio1.gif
|
|
202
|
+
- data/images/p_161_trio3.gif
|
|
203
|
+
- data/images/p_163.gif
|
|
204
|
+
- data/images/p_173_square_laminas.gif
|
|
205
|
+
- data/images/p_177_quad.gif
|
|
206
|
+
- data/images/p_184.gif
|
|
207
|
+
- data/images/p_189_colours.gif
|
|
208
|
+
- data/images/p_189_grid.gif
|
|
209
|
+
- data/images/p_194_Fig.png
|
|
210
|
+
- data/images/p_194_GraphA.png
|
|
211
|
+
- data/images/p_194_GraphB.png
|
|
212
|
+
- data/images/p_199_circles_in_circles.gif
|
|
213
|
+
- data/images/p_201_laserbeam.gif
|
|
214
|
+
- data/images/p_208_robotwalk.gif
|
|
215
|
+
- data/images/p_215_crackfree.gif
|
|
216
|
+
- data/images/p_220.gif
|
|
217
|
+
- data/images/p_226_formula.gif
|
|
218
|
+
- data/images/p_226_scoop2.gif
|
|
219
|
+
- data/images/p_228.png
|
|
220
|
+
- data/images/p_237.gif
|
|
221
|
+
- data/images/p_244_example.gif
|
|
222
|
+
- data/images/p_244_start.gif
|
|
223
|
+
- data/images/p_244_target.gif
|
|
224
|
+
- data/images/p_246_anim.gif
|
|
225
|
+
- data/images/p_246_ellipse.gif
|
|
226
|
+
- data/images/p_247_hypersquares.gif
|
|
227
|
+
- data/images/p_251_cardano.gif
|
|
228
|
+
- data/images/p_252_convexhole.gif
|
|
229
|
+
- data/images/p_255_Example.gif
|
|
230
|
+
- data/images/p_255_Heron.gif
|
|
231
|
+
- data/images/p_256_tatami3.gif
|
|
232
|
+
- data/images/p_257_bisector.gif
|
|
233
|
+
- data/images/p_262_formula1.gif
|
|
234
|
+
- data/images/p_264_TriangleCentres.gif
|
|
235
|
+
- data/images/p_265_BinaryCircles.gif
|
|
236
|
+
- data/images/p_270_CutSquare.gif
|
|
237
|
+
- data/images/p_275_sculptures2.gif
|
|
238
|
+
- data/images/p_281_pizza.gif
|
|
239
|
+
- data/images/p_282_formula.gif
|
|
240
|
+
- data/images/p_282formula3.gif
|
|
241
|
+
- data/images/p_287_quadtree.gif
|
|
242
|
+
- data/images/p_289_euler.gif
|
|
243
|
+
- data/images/p_291_formula.gif
|
|
244
|
+
- data/images/p_299_ThreeSimTri.gif
|
|
245
|
+
- data/images/p_300_protein.gif
|
|
246
|
+
- data/images/p_306_pstrip.gif
|
|
247
|
+
- data/images/p_309_ladders.gif
|
|
248
|
+
- data/images/p_311_biclinic.gif
|
|
249
|
+
- data/images/p_312_sierpinsky8t.gif
|
|
250
|
+
- data/images/p_312_sierpinskyAt.gif
|
|
251
|
+
- data/images/p_313_sliding_game_1.gif
|
|
252
|
+
- data/images/p_313_sliding_game_2.gif
|
|
253
|
+
- data/images/p_314_landgrab.gif
|
|
254
|
+
- data/images/p_315_clocks.gif
|
|
255
|
+
- data/images/p_316_decexp1.gif
|
|
256
|
+
- data/images/p_316_decexp2.gif
|
|
257
|
+
- data/images/p_316_decexp3.gif
|
|
258
|
+
- data/images/p_321_swapping_counters_1.gif
|
|
259
|
+
- data/images/p_321_swapping_counters_2.gif
|
|
260
|
+
- data/images/p_326_formula1.gif
|
|
261
|
+
- data/images/p_326_formula2.gif
|
|
262
|
+
- data/images/p_327_rooms_of_doom.gif
|
|
263
|
+
- data/images/p_328_sum1.gif
|
|
264
|
+
- data/images/p_328_sum2.gif
|
|
265
|
+
- data/images/p_330_formula.gif
|
|
266
|
+
- data/images/p_331_crossflips1.gif
|
|
267
|
+
- data/images/p_331_crossflips2.gif
|
|
268
|
+
- data/images/p_331_crossflips3.gif
|
|
269
|
+
- data/images/p_332_spherical.jpg
|
|
270
|
+
- data/images/p_332_sum.gif
|
|
271
|
+
- data/images/p_334_beans.gif
|
|
272
|
+
- data/images/p_334_cases.gif
|
|
273
|
+
- data/images/p_334_lfloor.gif
|
|
274
|
+
- data/images/p_334_oplus.gif
|
|
275
|
+
- data/images/p_334_rfloor.gif
|
|
276
|
+
- data/images/p_335_mancala.gif
|
|
277
|
+
- data/images/p_335_sum.gif
|
|
278
|
+
- data/images/p_336_maximix.gif
|
|
279
|
+
- data/images/p_338_gridpaper.gif
|
|
280
|
+
- data/images/p_340_formula.gif
|
|
281
|
+
- data/images/p_344_silverdollar.gif
|
|
282
|
+
- data/images/p_351_hexorchard.png
|
|
283
|
+
- data/images/p_354_bee_honeycomb.png
|
|
284
|
+
- data/images/p_356_cubicpoly1.gif
|
|
285
|
+
- data/images/p_356_cubicpoly2.gif
|
|
286
|
+
- data/images/p_361_Thue-Morse1.gif
|
|
287
|
+
- data/images/p_364_comf_dist.gif
|
|
288
|
+
- data/images/p_372_pencilray1.jpg
|
|
289
|
+
- data/images/p_372_pencilray2.gif
|
|
290
|
+
- data/images/p_380_mazes.gif
|
|
291
|
+
- data/images/p_384_formula.gif
|
|
292
|
+
- data/images/p_385_ellipsetriangle.png
|
|
293
|
+
- data/images/p_394_eatpie.gif
|
|
294
|
+
- data/images/p_395_pythagorean.gif
|
|
295
|
+
- data/images/p_404_c_ellipse.gif
|
|
296
|
+
- data/images/p_405_tile1.png
|
|
297
|
+
- data/images/p_405_tile2.gif
|
|
298
|
+
- data/images/p_420_matrix.gif
|
|
299
|
+
- data/images/p_424_kakuro1.gif
|
|
300
|
+
- data/images/p_426_baxball1.gif
|
|
301
|
+
- data/images/p_426_baxball2.gif
|
|
302
|
+
- data/images/p_430_flips.gif
|
|
303
|
+
- data/images/sod_13.gif
|
|
304
|
+
- data/images/spacer.gif
|
|
305
|
+
- data/images/symbol_asymp.gif
|
|
306
|
+
- data/images/symbol_cong.gif
|
|
307
|
+
- data/images/symbol_ge.gif
|
|
308
|
+
- data/images/symbol_gt.gif
|
|
309
|
+
- data/images/symbol_implies.gif
|
|
310
|
+
- data/images/symbol_lceil.gif
|
|
311
|
+
- data/images/symbol_le.gif
|
|
312
|
+
- data/images/symbol_lfloor.gif
|
|
313
|
+
- data/images/symbol_lt.gif
|
|
314
|
+
- data/images/symbol_maps.gif
|
|
315
|
+
- data/images/symbol_minus.gif
|
|
316
|
+
- data/images/symbol_ne.gif
|
|
317
|
+
- data/images/symbol_plusmn.gif
|
|
318
|
+
- data/images/symbol_radic.gif
|
|
319
|
+
- data/images/symbol_rceil.gif
|
|
320
|
+
- data/images/symbol_rfloor.gif
|
|
321
|
+
- data/images/symbol_sum.gif
|
|
322
|
+
- data/images/symbol_times.gif
|
|
142
323
|
- data/problems/1.yml
|
|
143
324
|
- data/problems/10.yml
|
|
144
325
|
- data/problems/100.yml
|
|
@@ -508,34 +689,8 @@ files:
|
|
|
508
689
|
- data/problems/429.yml
|
|
509
690
|
- data/problems/43.yml
|
|
510
691
|
- data/problems/430.yml
|
|
511
|
-
- data/problems/431.yml
|
|
512
|
-
- data/problems/432.yml
|
|
513
|
-
- data/problems/433.yml
|
|
514
|
-
- data/problems/434.yml
|
|
515
|
-
- data/problems/435.yml
|
|
516
|
-
- data/problems/436.yml
|
|
517
|
-
- data/problems/437.yml
|
|
518
|
-
- data/problems/438.yml
|
|
519
|
-
- data/problems/439.yml
|
|
520
692
|
- data/problems/44.yml
|
|
521
|
-
- data/problems/440.yml
|
|
522
|
-
- data/problems/441.yml
|
|
523
|
-
- data/problems/442.yml
|
|
524
|
-
- data/problems/443.yml
|
|
525
|
-
- data/problems/444.yml
|
|
526
|
-
- data/problems/445.yml
|
|
527
|
-
- data/problems/446.yml
|
|
528
|
-
- data/problems/447.yml
|
|
529
|
-
- data/problems/448.yml
|
|
530
|
-
- data/problems/449.yml
|
|
531
693
|
- data/problems/45.yml
|
|
532
|
-
- data/problems/450.yml
|
|
533
|
-
- data/problems/451.yml
|
|
534
|
-
- data/problems/452.yml
|
|
535
|
-
- data/problems/453.yml
|
|
536
|
-
- data/problems/454.yml
|
|
537
|
-
- data/problems/455.yml
|
|
538
|
-
- data/problems/456.yml
|
|
539
694
|
- data/problems/46.yml
|
|
540
695
|
- data/problems/47.yml
|
|
541
696
|
- data/problems/48.yml
|
|
@@ -600,6 +755,9 @@ files:
|
|
|
600
755
|
- example/1/README.md
|
|
601
756
|
- example/1/ruby/1.rb
|
|
602
757
|
- example/1/scala/1.scala
|
|
758
|
+
- example/15/README.md
|
|
759
|
+
- example/15/python/15.py
|
|
760
|
+
- example/15/python/euler.py
|
|
603
761
|
- example/2/README.md
|
|
604
762
|
- example/2/python/2.py
|
|
605
763
|
- example/2/python/euler.py
|
|
@@ -619,11 +777,13 @@ files:
|
|
|
619
777
|
- lib/euler/problem.rb
|
|
620
778
|
- lib/euler/solution.rb
|
|
621
779
|
- lib/euler/version.rb
|
|
622
|
-
-
|
|
780
|
+
- rake/clean.rake
|
|
781
|
+
- rake/update.rake
|
|
623
782
|
- spec/euler/problem_spec.rb
|
|
624
783
|
- spec/euler/solution_spec.rb
|
|
625
784
|
- spec/euler_spec.rb
|
|
626
785
|
- spec/spec_helper.rb
|
|
786
|
+
- templates/Eulerfile.rb
|
|
627
787
|
- templates/coffeescript.coffee
|
|
628
788
|
- templates/java.java
|
|
629
789
|
- templates/javascript.js
|
data/data/problems/431.yml
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 431
|
|
3
|
-
:name: Square Space Silo
|
|
4
|
-
:url: http://projecteuler.net/problem=431
|
|
5
|
-
:content: "\r\n<p>Fred the farmer arranges to have a new storage silo installed on
|
|
6
|
-
his farm and having an obsession for all things square he is absolutely devastated
|
|
7
|
-
when he discovers that it is circular. Quentin, the representative from the company
|
|
8
|
-
that installed the silo, explains that they only manufacture cylindrical silos,
|
|
9
|
-
but he points out that it is resting on a square base. Fred is not amused and insists
|
|
10
|
-
that it is removed from his property.</p>\r\n\r\n<p>Quick thinking Quentin explains
|
|
11
|
-
that when granular materials are delivered from above a conical slope is formed
|
|
12
|
-
and the natural angle made with the horizontal is called the angle of repose. For
|
|
13
|
-
example if the angle of repose, $\\alpha = 30$ degrees, and grain is delivered at
|
|
14
|
-
the centre of the silo then a perfect cone will form towards the top of the cylinder.
|
|
15
|
-
In the case of this silo, which has a diameter of 6m, the amount of space wasted
|
|
16
|
-
would be approximately 32.648388556 m<sup>3</sup>. However, if grain is delivered
|
|
17
|
-
at a point on the top which has a horizontal distance of $x$ metres from the centre
|
|
18
|
-
then a cone with a strangely curved and sloping base is formed. He shows Fred a
|
|
19
|
-
picture.</p>\r\n\r\n<div style=\"text-align:center;\">\r\n <img src=\"project/images/p_431_grain_silo.png\">\n</div>\r\n\r\n<p>We
|
|
20
|
-
shall let the amount of space wasted in cubic metres be given by $V(x)$. If $x =
|
|
21
|
-
1.114785284$, which happens to have three squared decimal places, then the amount
|
|
22
|
-
of space wasted, $V(1.114785284) \\approx 36$. Given the range of possible solutions
|
|
23
|
-
to this problem there is exactly one other option: $V(2.511167869) \\approx 49$.
|
|
24
|
-
It would be like knowing that the square is king of the silo, sitting in splendid
|
|
25
|
-
glory on top of your grain.</p>\r\n\r\n<p>Fred's eyes light up with delight at this
|
|
26
|
-
elegant resolution, but on closer inspection of Quentin's drawings and calculations
|
|
27
|
-
his happiness turns to despondency once more. Fred points out to Quentin that it's
|
|
28
|
-
the radius of the silo that is 6 metres, not the diameter, and the angle of repose
|
|
29
|
-
for his grain is 40 degrees. However, if Quentin can find a set of solutions for
|
|
30
|
-
this particular silo then he will be more than happy to keep it.</p>\r\n\r\n<p>If
|
|
31
|
-
Quick thinking Quentin is to satisfy frustratingly fussy Fred the farmer's appetite
|
|
32
|
-
for all things square then determine the values of $x$ for all possible square space
|
|
33
|
-
wastage options and calculate $\\sum x$ correct to 9 decimal places.</p>\r\n"
|
data/data/problems/432.yml
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 432
|
|
3
|
-
:name: Totient sum
|
|
4
|
-
:url: http://projecteuler.net/problem=432
|
|
5
|
-
:content: "\r\n<p>\r\nLet S(<var>n,m</var>) = <img src=\"images/symbol_sum.gif\" width=\"11\"
|
|
6
|
-
height=\"14\" alt=\"∑\" border=\"0\" style=\"vertical-align:middle;\">φ(<var>n <img
|
|
7
|
-
src=\"images/symbol_times.gif\" width=\"9\" height=\"9\" alt=\"×\" border=\"0\"
|
|
8
|
-
style=\"vertical-align:middle;\"> i</var>) for 1 <img src=\"images/symbol_le.gif\"
|
|
9
|
-
width=\"10\" height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\"><var>i
|
|
10
|
-
<img src=\"images/symbol_le.gif\" width=\"10\" height=\"12\" alt=\"≤\" border=\"0\"
|
|
11
|
-
style=\"vertical-align:middle;\"> m</var>. (φ is Euler's totient function)<br>\r\nYou
|
|
12
|
-
are given that S(510510,10<sup>6</sup> )= 45480596821125120. \r\n</p>\r\n<p>\r\nFind
|
|
13
|
-
S(510510,10<sup>11</sup>).<br>\r\nGive the last 9 digits of your answer.\r\n</p>\r\n\r\n"
|
data/data/problems/433.yml
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 433
|
|
3
|
-
:name: Steps in Euclid's algorithm
|
|
4
|
-
:url: http://projecteuler.net/problem=433
|
|
5
|
-
:content: "\r\n<p>\r\nLet E(<var>x</var><sub>0</sub>, <var>y</var><sub>0</sub>) be
|
|
6
|
-
the number of steps it takes to determine the greatest common divisor of <var>x</var><sub>0</sub>
|
|
7
|
-
and <var>y</var><sub>0</sub> with <b>Euclid's algorithm</b>. More formally:<br><var>x</var><sub>1</sub>
|
|
8
|
-
= <var>y</var><sub>0</sub>, <var>y</var><sub>1</sub> = <var>x</var><sub>0</sub>
|
|
9
|
-
mod <var>y</var><sub>0</sub><br><var>x<sub>n</sub></var> = <var>y</var><sub><var>n</var>-1</sub>,
|
|
10
|
-
<var>y</var><sub><var>n</var></sub> = <var>x</var><sub><var>n</var>-1</sub> mod
|
|
11
|
-
<var>y</var><sub><var>n</var>-1</sub><br>\r\nE(<var>x</var><sub>0</sub>, <var>y</var><sub>0</sub>)
|
|
12
|
-
is the smallest <var>n</var> such that <var>y</var><sub><var>n</var></sub> = 0.\r\n</p>\r\n<p>\r\nWe
|
|
13
|
-
have E(1,1) = 1, E(10,6) = 3 and E(6,10) = 4.\r\n</p>\r\n<p>\r\nDefine S(N) as the
|
|
14
|
-
sum of E(<var>x,y</var>) for 1 <img src=\"images/symbol_le.gif\" width=\"10\" height=\"12\"
|
|
15
|
-
alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\"><var>x,y</var> <img src=\"images/symbol_le.gif\"
|
|
16
|
-
width=\"10\" height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\">
|
|
17
|
-
N.<br>\r\nWe have S(1) = 1, S(10) = 221 and S(100) = 39826.\r\n</p>\r\n<p>\r\nFind
|
|
18
|
-
S(5·10<sup>6</sup>).\r\n</p>\r\n\r\n\r\n"
|
data/data/problems/434.yml
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 434
|
|
3
|
-
:name: Rigid graphs
|
|
4
|
-
:url: http://projecteuler.net/problem=434
|
|
5
|
-
:content: "\r\n<p>Recall that a graph is a collection of vertices and edges connecting
|
|
6
|
-
the vertices, and that two vertices connected by an edge are called adjacent.<br>\r\nGraphs
|
|
7
|
-
can be embedded in Euclidean space by associating each vertex with a point in the
|
|
8
|
-
Euclidean space.<br>\r\nA <strong>flexible</strong> graph is an embedding of a graph
|
|
9
|
-
where it is possible to move one or more vertices continuously so that the distance
|
|
10
|
-
between at least two nonadjacent vertices is altered while the distances between
|
|
11
|
-
each pair of adjacent vertices is kept constant.<br>\r\nA <strong>rigid</strong>
|
|
12
|
-
graph is an embedding of a graph which is not flexible.<br>\r\nInformally, a graph
|
|
13
|
-
is rigid if by replacing the vertices with fully rotating hinges and the edges with
|
|
14
|
-
rods that are unbending and inelastic, no parts of the graph can be moved independently
|
|
15
|
-
from the rest of the graph.\r\n</p>\r\n<p>The <strong>grid graphs</strong> embedded
|
|
16
|
-
in the Euclidean plane are not rigid, as the following animation demonstrates:<br><img
|
|
17
|
-
src=\"project/images/p434_rigid.gif\"></p>\r\n<p>However, one can make them rigid
|
|
18
|
-
by adding diagonal edges to the cells. For example, for the 2x3 grid graph, there
|
|
19
|
-
are 19 ways to make the graph rigid:<br><img src=\"project/images/p434_rigid23.png\"></p>\r\n<p>Note
|
|
20
|
-
that for the purposes of this problem, we do not consider changing the orientation
|
|
21
|
-
of a diagonal edge or adding both diagonal edges to a cell as a different way of
|
|
22
|
-
making a grid graph rigid.\r\n</p>\r\n<p>Let <var>R</var>(<var>m</var>,<var>n</var>)
|
|
23
|
-
be the number of ways to make the <var>m</var> <img src=\"images/symbol_times.gif\"
|
|
24
|
-
width=\"9\" height=\"9\" alt=\"×\" border=\"0\" style=\"vertical-align:middle;\"><var>n</var>
|
|
25
|
-
grid graph rigid. <br>\r\nE.g. <var>R</var>(2,3) = 19 and <var>R</var>(5,5) = 23679901\r\n</p>\r\n<p>Define
|
|
26
|
-
<var>S</var>(<var>N</var>) as <img src=\"images/symbol_sum.gif\" width=\"11\" height=\"14\"
|
|
27
|
-
alt=\"∑\" border=\"0\" style=\"vertical-align:middle;\"><var>R</var>(<var>i</var>,<var>j</var>)
|
|
28
|
-
for 1 <img src=\"images/symbol_le.gif\" width=\"10\" height=\"12\" alt=\"≤\" border=\"0\"
|
|
29
|
-
style=\"vertical-align:middle;\"><var>i</var>, <var>j</var> <img src=\"images/symbol_le.gif\"
|
|
30
|
-
width=\"10\" height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\"><var>N</var>.<br>\r\nE.g.
|
|
31
|
-
<var>S</var>(5) = 25021721.<br>\r\nFind <var>S</var>(100), give your answer modulo
|
|
32
|
-
1000000033\r\n</p>\r\n"
|
data/data/problems/435.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 435
|
|
3
|
-
:name: Polynomials of Fibonacci numbers
|
|
4
|
-
:url: http://projecteuler.net/problem=435
|
|
5
|
-
:content: "\r\n<p>The <strong>Fibonacci numbers</strong> {f<sub>n</sub>, n <img src=\"images/symbol_ge.gif\"
|
|
6
|
-
width=\"10\" height=\"12\" alt=\"≥\" border=\"0\" style=\"vertical-align:middle;\">
|
|
7
|
-
0} are defined recursively as f<sub>n</sub> = f<sub>n-1</sub> + f<sub>n-2</sub>
|
|
8
|
-
with base cases f<sub>0</sub> = 0 and f<sub>1</sub> = 1.</p>\r\n<p>Define the polynomials
|
|
9
|
-
{F<sub>n</sub>, n <img src=\"images/symbol_ge.gif\" width=\"10\" height=\"12\" alt=\"≥\"
|
|
10
|
-
border=\"0\" style=\"vertical-align:middle;\"> 0} as F<sub>n</sub>(x) = <img src=\"images/symbol_sum.gif\"
|
|
11
|
-
width=\"11\" height=\"14\" alt=\"∑\" border=\"0\" style=\"vertical-align:middle;\">f<sub>i</sub>x<sup>i</sup>
|
|
12
|
-
for 0 <img src=\"images/symbol_le.gif\" width=\"10\" height=\"12\" alt=\"≤\" border=\"0\"
|
|
13
|
-
style=\"vertical-align:middle;\"> i <img src=\"images/symbol_le.gif\" width=\"10\"
|
|
14
|
-
height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\"> n.</p>\r\n<p>For
|
|
15
|
-
example, F<sub>7</sub>(x) = x + x<sup>2</sup> + 2x<sup>3</sup> + 3x<sup>4</sup>
|
|
16
|
-
+ 5x<sup>5</sup> + 8x<sup>6</sup> + 13x<sup>7</sup>, and F<sub>7</sub>(11) = 268357683.</p>\r\n<p>Let
|
|
17
|
-
n = 10<sup>15</sup>. Find the sum [<img src=\"images/symbol_sum.gif\" width=\"11\"
|
|
18
|
-
height=\"14\" alt=\"∑\" border=\"0\" style=\"vertical-align:middle;\"><sub>0<img
|
|
19
|
-
src=\"images/symbol_le.gif\" width=\"10\" height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\">x<img
|
|
20
|
-
src=\"images/symbol_le.gif\" width=\"10\" height=\"12\" alt=\"≤\" border=\"0\" style=\"vertical-align:middle;\">100</sub>
|
|
21
|
-
F<sub>n</sub>(x)] mod 1307674368000 (= 15!).</p>\r\n"
|
data/data/problems/436.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 436
|
|
3
|
-
:name: Unfair wager
|
|
4
|
-
:url: http://projecteuler.net/problem=436
|
|
5
|
-
:content: "\r\n<p>Julie proposes the following wager to her sister Louise.<br>\r\nShe
|
|
6
|
-
suggests they play a game of chance to determine who will wash the dishes.<br>\r\nFor
|
|
7
|
-
this game, they shall use a generator of independent random numbers uniformly distributed
|
|
8
|
-
between 0 and 1.<br>\r\nThe game starts with <var>S</var> = 0.<br>\r\nThe first
|
|
9
|
-
player, Louise, adds to <var>S</var> different random numbers from the generator
|
|
10
|
-
until <var>S</var> > 1 and records her last random number '<var>x</var>'.<br>\r\nThe
|
|
11
|
-
second player, Julie, continues adding to <var>S</var> different random numbers
|
|
12
|
-
from the generator until <var>S</var> > 2 and records her last random number
|
|
13
|
-
'<var>y</var>'.<br>\r\nThe player with the highest number wins and the loser washes
|
|
14
|
-
the dishes, i.e. if <var>y</var> > <var>x</var> the second player wins.</p>\r\n\r\n<p>For
|
|
15
|
-
e<var>x</var>ample, if the first player draws 0.62 and 0.44, the first player turn
|
|
16
|
-
ends since 0.62+0.44 > 1 and <var>x</var> = 0.44.<br>\r\nIf the second players
|
|
17
|
-
draws 0.1, 0.27 and 0.91, the second player turn ends since 0.62+0.44+0.1+0.27+0.91
|
|
18
|
-
> 2 and <var>y</var> = 0.91.\r\nSince <var>y</var> > <var>x</var>, the second
|
|
19
|
-
player wins.</p>\r\n\r\n<p>Louise thinks about it for a second, and objects: \"That's
|
|
20
|
-
not fair\".<br>\r\nWhat is the probability that the second player wins?<br>\r\nGive
|
|
21
|
-
your answer rounded to 10 places behind the decimal point in the form 0.abcdefghij</p>\r\n\r\n"
|
data/data/problems/437.yml
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:id: 437
|
|
3
|
-
:name: Fibonacci primitive roots
|
|
4
|
-
:url: http://projecteuler.net/problem=437
|
|
5
|
-
:content: "\r\n<p>\r\nWhen we calculate 8<sup>n</sup> modulo 11 for n=0 to 9 we get:
|
|
6
|
-
1, 8, 9, 6, 4, 10, 3, 2, 5, 7.<br>\r\nAs we see all possible values from 1 to 10
|
|
7
|
-
occur. So 8 is a <b>primitive root</b> of 11.<br>\r\nBut there is more:<br>\r\nIf
|
|
8
|
-
we take a closer look we see:<br>\r\n1+8=9<br>\r\n8+9=17<img src=\"images/symbol_cong.gif\"
|
|
9
|
-
width=\"9\" height=\"11\" alt=\"≡\" border=\"0\" style=\"vertical-align:middle;\">6
|
|
10
|
-
mod 11<br>\r\n9+6=15<img src=\"images/symbol_cong.gif\" width=\"9\" height=\"11\"
|
|
11
|
-
alt=\"≡\" border=\"0\" style=\"vertical-align:middle;\">4 mod 11<br>\r\n6+4=10<br>\r\n4+10=14<img
|
|
12
|
-
src=\"images/symbol_cong.gif\" width=\"9\" height=\"11\" alt=\"≡\" border=\"0\"
|
|
13
|
-
style=\"vertical-align:middle;\">3 mod 11<br>\r\n10+3=13<img src=\"images/symbol_cong.gif\"
|
|
14
|
-
width=\"9\" height=\"11\" alt=\"≡\" border=\"0\" style=\"vertical-align:middle;\">2
|
|
15
|
-
mod 11<br>\r\n3+2=5<br>\r\n2+5=7<br>\r\n5+7=12<img src=\"images/symbol_cong.gif\"
|
|
16
|
-
width=\"9\" height=\"11\" alt=\"≡\" border=\"0\" style=\"vertical-align:middle;\">1
|
|
17
|
-
mod 11.\r\n</p>\r\nSo the powers of 8 mod 11 are cyclic with period 10, and 8<sup>n</sup>
|
|
18
|
-
+ 8<sup>n+1</sup> ≡ 8<sup>n+2</sup> (mod 11).<br>\r\n8 is called a <b>Fibonacci
|
|
19
|
-
primitive root</b> of 11.<br>\r\nNot every prime has a Fibonacci primitive root.<br>\r\nThere
|
|
20
|
-
are 323 primes less than 10000 with one or more Fibonacci primitive roots and the
|
|
21
|
-
sum of these primes is 1480491.<br>\r\nFind the sum of the primes less than 100,000,000
|
|
22
|
-
with at least one Fibonacci primitive root.\r\n\r\n\r\n"
|