euler-manager 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +2 -1
- data/README.md +27 -21
- data/Rakefile +3 -2
- data/config/config.rb +6 -2
- data/data/answers.yml +431 -430
- data/data/images/{p_015.gif → p015.gif} +0 -0
- data/data/images/{p_068_1.gif → p068_1.gif} +0 -0
- data/data/images/{p_068_2.gif → p068_2.gif} +0 -0
- data/data/images/{p_085.gif → p085.gif} +0 -0
- data/data/images/{p_086.gif → p086.gif} +0 -0
- data/data/images/{p_090.gif → p090.gif} +0 -0
- data/data/images/{p_091_1.gif → p091_1.gif} +0 -0
- data/data/images/{p_091_2.gif → p091_2.gif} +0 -0
- data/data/images/{p_107_1.gif → p107_1.gif} +0 -0
- data/data/images/{p_107_2.gif → p107_2.gif} +0 -0
- data/data/images/{p_109.gif → p109.gif} +0 -0
- data/data/images/{p_126.gif → p126.gif} +0 -0
- data/data/images/{p_128.gif → p128.gif} +0 -0
- data/data/images/{p_138.gif → p138.gif} +0 -0
- data/data/images/{p_139.gif → p139.gif} +0 -0
- data/data/images/{p_143_torricelli.gif → p143_torricelli.gif} +0 -0
- data/data/images/{p_144_1.gif → p144_1.gif} +0 -0
- data/data/images/{p_144_2.gif → p144_2.gif} +0 -0
- data/data/images/{p_147.gif → p147.gif} +0 -0
- data/data/images/{p_150.gif → p150.gif} +0 -0
- data/data/images/{p_151.gif → p151.gif} +0 -0
- data/data/images/{p_152_sum.gif → p152_sum.gif} +0 -0
- data/data/images/{p_153_formule1.gif → p153_formule1.gif} +0 -0
- data/data/images/{p_153_formule2.gif → p153_formule2.gif} +0 -0
- data/data/images/{p_153_formule5.gif → p153_formule5.gif} +0 -0
- data/data/images/{p_153_formule6.gif → p153_formule6.gif} +0 -0
- data/data/images/{p_154_pyramid.gif → p154_pyramid.gif} +0 -0
- data/data/images/{p_155_capacitors1.gif → p155_capacitors1.gif} +0 -0
- data/data/images/{p_155_capsform.gif → p155_capsform.gif} +0 -0
- data/data/images/{p_155_capsmu.gif → p155_capsmu.gif} +0 -0
- data/data/images/{p_161_k9.gif → p161_k9.gif} +0 -0
- data/data/images/{p_161_trio1.gif → p161_trio1.gif} +0 -0
- data/data/images/{p_161_trio3.gif → p161_trio3.gif} +0 -0
- data/data/images/{p_163.gif → p163.gif} +0 -0
- data/data/images/{p_173_square_laminas.gif → p173_square_laminas.gif} +0 -0
- data/data/images/{p_177_quad.gif → p177_quad.gif} +0 -0
- data/data/images/{p_184.gif → p184.gif} +0 -0
- data/data/images/{p_189_colours.gif → p189_colours.gif} +0 -0
- data/data/images/{p_189_grid.gif → p189_grid.gif} +0 -0
- data/data/images/{p_194_Fig.png → p194_Fig.png} +0 -0
- data/data/images/{p_194_GraphA.png → p194_GraphA.png} +0 -0
- data/data/images/{p_194_GraphB.png → p194_GraphB.png} +0 -0
- data/data/images/{p_199_circles_in_circles.gif → p199_circles_in_circles.gif} +0 -0
- data/data/images/{p_201_laserbeam.gif → p201_laserbeam.gif} +0 -0
- data/data/images/{p_208_robotwalk.gif → p208_robotwalk.gif} +0 -0
- data/data/images/{p_215_crackfree.gif → p215_crackfree.gif} +0 -0
- data/data/images/{p_220.gif → p220.gif} +0 -0
- data/data/images/{p_226_formula.gif → p226_formula.gif} +0 -0
- data/data/images/{p_226_scoop2.gif → p226_scoop2.gif} +0 -0
- data/data/images/{p_228.png → p228.png} +0 -0
- data/data/images/{p_237.gif → p237.gif} +0 -0
- data/data/images/{p_244_example.gif → p244_example.gif} +0 -0
- data/data/images/{p_244_start.gif → p244_start.gif} +0 -0
- data/data/images/{p_244_target.gif → p244_target.gif} +0 -0
- data/data/images/{p_246_anim.gif → p246_anim.gif} +0 -0
- data/data/images/{p_246_ellipse.gif → p246_ellipse.gif} +0 -0
- data/data/images/{p_247_hypersquares.gif → p247_hypersquares.gif} +0 -0
- data/data/images/{p_251_cardano.gif → p251_cardano.gif} +0 -0
- data/data/images/{p_252_convexhole.gif → p252_convexhole.gif} +0 -0
- data/data/images/{p_255_Example.gif → p255_Example.gif} +0 -0
- data/data/images/{p_255_Heron.gif → p255_Heron.gif} +0 -0
- data/data/images/{p_256_tatami3.gif → p256_tatami3.gif} +0 -0
- data/data/images/{p_257_bisector.gif → p257_bisector.gif} +0 -0
- data/data/images/{p_262_formula1.gif → p262_formula1.gif} +0 -0
- data/data/images/{p_264_TriangleCentres.gif → p264_TriangleCentres.gif} +0 -0
- data/data/images/{p_265_BinaryCircles.gif → p265_BinaryCircles.gif} +0 -0
- data/data/images/{p_270_CutSquare.gif → p270_CutSquare.gif} +0 -0
- data/data/images/{p_275_sculptures2.gif → p275_sculptures2.gif} +0 -0
- data/data/images/{p_281_pizza.gif → p281_pizza.gif} +0 -0
- data/data/images/{p_282_formula.gif → p282_formula.gif} +0 -0
- data/data/images/{p_282formula3.gif → p282formula3.gif} +0 -0
- data/data/images/{p_287_quadtree.gif → p287_quadtree.gif} +0 -0
- data/data/images/{p_289_euler.gif → p289_euler.gif} +0 -0
- data/data/images/{p_291_formula.gif → p291_formula.gif} +0 -0
- data/data/images/{p_299_ThreeSimTri.gif → p299_ThreeSimTri.gif} +0 -0
- data/data/images/{p_300_protein.gif → p300_protein.gif} +0 -0
- data/data/images/{p_306_pstrip.gif → p306_pstrip.gif} +0 -0
- data/data/images/{p_309_ladders.gif → p309_ladders.gif} +0 -0
- data/data/images/{p_311_biclinic.gif → p311_biclinic.gif} +0 -0
- data/data/images/{p_312_sierpinsky8t.gif → p312_sierpinsky8t.gif} +0 -0
- data/data/images/{p_312_sierpinskyAt.gif → p312_sierpinskyAt.gif} +0 -0
- data/data/images/{p_313_sliding_game_1.gif → p313_sliding_game_1.gif} +0 -0
- data/data/images/{p_313_sliding_game_2.gif → p313_sliding_game_2.gif} +0 -0
- data/data/images/{p_314_landgrab.gif → p314_landgrab.gif} +0 -0
- data/data/images/{p_315_clocks.gif → p315_clocks.gif} +0 -0
- data/data/images/{p_316_decexp1.gif → p316_decexp1.gif} +0 -0
- data/data/images/{p_316_decexp2.gif → p316_decexp2.gif} +0 -0
- data/data/images/{p_316_decexp3.gif → p316_decexp3.gif} +0 -0
- data/data/images/{p_321_swapping_counters_1.gif → p321_swapping_counters_1.gif} +0 -0
- data/data/images/{p_321_swapping_counters_2.gif → p321_swapping_counters_2.gif} +0 -0
- data/data/images/{p_326_formula1.gif → p326_formula1.gif} +0 -0
- data/data/images/{p_326_formula2.gif → p326_formula2.gif} +0 -0
- data/data/images/{p_327_rooms_of_doom.gif → p327_rooms_of_doom.gif} +0 -0
- data/data/images/{p_328_sum1.gif → p328_sum1.gif} +0 -0
- data/data/images/{p_328_sum2.gif → p328_sum2.gif} +0 -0
- data/data/images/{p_330_formula.gif → p330_formula.gif} +0 -0
- data/data/images/{p_331_crossflips1.gif → p331_crossflips1.gif} +0 -0
- data/data/images/{p_331_crossflips2.gif → p331_crossflips2.gif} +0 -0
- data/data/images/{p_331_crossflips3.gif → p331_crossflips3.gif} +0 -0
- data/data/images/{p_332_spherical.jpg → p332_spherical.jpg} +0 -0
- data/data/images/{p_332_sum.gif → p332_sum.gif} +0 -0
- data/data/images/{p_334_beans.gif → p334_beans.gif} +0 -0
- data/data/images/{p_334_cases.gif → p334_cases.gif} +0 -0
- data/data/images/{p_334_lfloor.gif → p334_lfloor.gif} +0 -0
- data/data/images/{p_334_oplus.gif → p334_oplus.gif} +0 -0
- data/data/images/{p_334_rfloor.gif → p334_rfloor.gif} +0 -0
- data/data/images/{p_335_mancala.gif → p335_mancala.gif} +0 -0
- data/data/images/{p_335_sum.gif → p335_sum.gif} +0 -0
- data/data/images/{p_336_maximix.gif → p336_maximix.gif} +0 -0
- data/data/images/{p_338_gridpaper.gif → p338_gridpaper.gif} +0 -0
- data/data/images/{p_340_formula.gif → p340_formula.gif} +0 -0
- data/data/images/{p_344_silverdollar.gif → p344_silverdollar.gif} +0 -0
- data/data/images/{p_351_hexorchard.png → p351_hexorchard.png} +0 -0
- data/data/images/{p_354_bee_honeycomb.png → p354_bee_honeycomb.png} +0 -0
- data/data/images/{p_356_cubicpoly1.gif → p356_cubicpoly1.gif} +0 -0
- data/data/images/{p_356_cubicpoly2.gif → p356_cubicpoly2.gif} +0 -0
- data/data/images/{p_361_Thue-Morse1.gif → p361_Thue-Morse1.gif} +0 -0
- data/data/images/p363_bezier.png +0 -0
- data/data/images/{p_364_comf_dist.gif → p364_comf_dist.gif} +0 -0
- data/data/images/{p_372_pencilray1.jpg → p372_pencilray1.jpg} +0 -0
- data/data/images/{p_372_pencilray2.gif → p372_pencilray2.gif} +0 -0
- data/data/images/{p_380_mazes.gif → p380_mazes.gif} +0 -0
- data/data/images/{p_384_formula.gif → p384_formula.gif} +0 -0
- data/data/images/{p_385_ellipsetriangle.png → p385_ellipsetriangle.png} +0 -0
- data/data/images/{p_394_eatpie.gif → p394_eatpie.gif} +0 -0
- data/data/images/{p_395_pythagorean.gif → p395_pythagorean.gif} +0 -0
- data/data/images/{p_404_c_ellipse.gif → p404_c_ellipse.gif} +0 -0
- data/data/images/{p_405_tile1.png → p405_tile1.png} +0 -0
- data/data/images/{p_405_tile2.gif → p405_tile2.gif} +0 -0
- data/data/images/{p_420_matrix.gif → p420_matrix.gif} +0 -0
- data/data/images/{p_424_kakuro1.gif → p424_kakuro1.gif} +0 -0
- data/data/images/{p_426_baxball1.gif → p426_baxball1.gif} +0 -0
- data/data/images/{p_426_baxball2.gif → p426_baxball2.gif} +0 -0
- data/data/images/{p_430_flips.gif → p430_flips.gif} +0 -0
- data/data/problems/1.yml +1 -1
- data/data/problems/10.yml +6 -4
- data/data/problems/100.yml +2 -2
- data/data/problems/101.yml +15 -19
- data/data/problems/102.yml +9 -10
- data/data/problems/103.yml +7 -8
- data/data/problems/104.yml +2 -2
- data/data/problems/105.yml +4 -4
- data/data/problems/106.yml +3 -3
- data/data/problems/107.yml +12 -12
- data/data/problems/108.yml +8 -14
- data/data/problems/109.yml +12 -11
- data/data/problems/11.yml +21 -24
- data/data/problems/110.yml +9 -10
- data/data/problems/111.yml +1 -1
- data/data/problems/112.yml +1 -1
- data/data/problems/113.yml +1 -1
- data/data/problems/114.yml +2 -2
- data/data/problems/115.yml +1 -1
- data/data/problems/116.yml +11 -11
- data/data/problems/117.yml +3 -3
- data/data/problems/118.yml +1 -1
- data/data/problems/119.yml +1 -1
- data/data/problems/12.yml +6 -6
- data/data/problems/120.yml +4 -4
- data/data/problems/121.yml +1 -1
- data/data/problems/122.yml +10 -18
- data/data/problems/123.yml +3 -3
- data/data/problems/124.yml +17 -19
- data/data/problems/125.yml +1 -1
- data/data/problems/126.yml +12 -11
- data/data/problems/127.yml +8 -8
- data/data/problems/128.yml +3 -3
- data/data/problems/129.yml +1 -1
- data/data/problems/13.yml +1 -1
- data/data/problems/130.yml +6 -7
- data/data/problems/131.yml +2 -2
- data/data/problems/132.yml +2 -2
- data/data/problems/133.yml +2 -2
- data/data/problems/134.yml +3 -3
- data/data/problems/135.yml +3 -3
- data/data/problems/136.yml +3 -3
- data/data/problems/137.yml +9 -9
- data/data/problems/138.yml +5 -5
- data/data/problems/139.yml +2 -2
- data/data/problems/14.yml +8 -13
- data/data/problems/140.yml +5 -5
- data/data/problems/141.yml +2 -2
- data/data/problems/142.yml +3 -4
- data/data/problems/143.yml +3 -3
- data/data/problems/144.yml +4 -4
- data/data/problems/145.yml +1 -1
- data/data/problems/146.yml +1 -1
- data/data/problems/147.yml +6 -6
- data/data/problems/148.yml +8 -8
- data/data/problems/149.yml +12 -25
- data/data/problems/15.yml +4 -4
- data/data/problems/150.yml +16 -17
- data/data/problems/151.yml +3 -3
- data/data/problems/152.yml +2 -2
- data/data/problems/153.yml +30 -35
- data/data/problems/154.yml +16 -12
- data/data/problems/155.yml +7 -6
- data/data/problems/156.yml +8 -9
- data/data/problems/157.yml +4 -6
- data/data/problems/158.yml +12 -12
- data/data/problems/159.yml +14 -16
- data/data/problems/16.yml +1 -1
- data/data/problems/160.yml +3 -3
- data/data/problems/161.yml +6 -6
- data/data/problems/162.yml +3 -3
- data/data/problems/163.yml +3 -3
- data/data/problems/164.yml +3 -4
- data/data/problems/165.yml +12 -12
- data/data/problems/166.yml +6 -8
- data/data/problems/167.yml +6 -7
- data/data/problems/168.yml +5 -7
- data/data/problems/169.yml +2 -2
- data/data/problems/17.yml +5 -5
- data/data/problems/170.yml +9 -10
- data/data/problems/171.yml +4 -5
- data/data/problems/172.yml +3 -4
- data/data/problems/173.yml +2 -2
- data/data/problems/174.yml +4 -4
- data/data/problems/175.yml +12 -13
- data/data/problems/176.yml +1 -1
- data/data/problems/177.yml +2 -2
- data/data/problems/178.yml +6 -6
- data/data/problems/179.yml +4 -4
- data/data/problems/18.yml +11 -12
- data/data/problems/180.yml +9 -12
- data/data/problems/181.yml +1 -1
- data/data/problems/182.yml +14 -16
- data/data/problems/183.yml +12 -15
- data/data/problems/184.yml +3 -3
- data/data/problems/185.yml +11 -11
- data/data/problems/186.yml +10 -11
- data/data/problems/187.yml +8 -8
- data/data/problems/188.yml +4 -4
- data/data/problems/189.yml +4 -4
- data/data/problems/19.yml +1 -1
- data/data/problems/190.yml +2 -2
- data/data/problems/191.yml +5 -5
- data/data/problems/192.yml +10 -14
- data/data/problems/193.yml +1 -1
- data/data/problems/194.yml +10 -10
- data/data/problems/195.yml +5 -6
- data/data/problems/196.yml +15 -14
- data/data/problems/197.yml +7 -8
- data/data/problems/198.yml +8 -14
- data/data/problems/199.yml +3 -3
- data/data/problems/2.yml +8 -7
- data/data/problems/20.yml +4 -9
- data/data/problems/200.yml +7 -8
- data/data/problems/201.yml +14 -14
- data/data/problems/202.yml +2 -2
- data/data/problems/203.yml +21 -13
- data/data/problems/204.yml +7 -7
- data/data/problems/205.yml +6 -6
- data/data/problems/206.yml +1 -1
- data/data/problems/207.yml +10 -10
- data/data/problems/208.yml +4 -5
- data/data/problems/209.yml +6 -6
- data/data/problems/21.yml +7 -7
- data/data/problems/210.yml +6 -6
- data/data/problems/211.yml +2 -2
- data/data/problems/212.yml +16 -20
- data/data/problems/213.yml +6 -6
- data/data/problems/214.yml +9 -10
- data/data/problems/215.yml +5 -5
- data/data/problems/216.yml +5 -6
- data/data/problems/217.yml +7 -12
- data/data/problems/218.yml +9 -10
- data/data/problems/219.yml +5 -5
- data/data/problems/22.yml +3 -3
- data/data/problems/220.yml +15 -16
- data/data/problems/221.yml +8 -8
- data/data/problems/222.yml +1 -1
- data/data/problems/223.yml +5 -6
- data/data/problems/224.yml +5 -6
- data/data/problems/225.yml +2 -2
- data/data/problems/226.yml +8 -9
- data/data/problems/227.yml +3 -3
- data/data/problems/228.yml +17 -16
- data/data/problems/229.yml +16 -19
- data/data/problems/23.yml +1 -3
- data/data/problems/230.yml +9 -11
- data/data/problems/231.yml +5 -8
- data/data/problems/232.yml +1 -1
- data/data/problems/233.yml +2 -2
- data/data/problems/234.yml +11 -13
- data/data/problems/235.yml +2 -2
- data/data/problems/236.yml +13 -19
- data/data/problems/237.yml +4 -4
- data/data/problems/238.yml +16 -19
- data/data/problems/239.yml +2 -2
- data/data/problems/24.yml +2 -2
- data/data/problems/240.yml +7 -7
- data/data/problems/241.yml +4 -7
- data/data/problems/242.yml +5 -6
- data/data/problems/243.yml +13 -13
- data/data/problems/244.yml +15 -15
- data/data/problems/245.yml +8 -20
- data/data/problems/246.yml +11 -12
- data/data/problems/247.yml +11 -12
- data/data/problems/248.yml +1 -1
- data/data/problems/249.yml +2 -2
- data/data/problems/25.yml +8 -12
- data/data/problems/250.yml +4 -4
- data/data/problems/251.yml +4 -4
- data/data/problems/252.yml +13 -20
- data/data/problems/253.yml +9 -8
- data/data/problems/254.yml +3 -3
- data/data/problems/255.yml +15 -37
- data/data/problems/256.yml +19 -24
- data/data/problems/257.yml +8 -10
- data/data/problems/258.yml +9 -7
- data/data/problems/259.yml +1 -1
- data/data/problems/26.yml +11 -11
- data/data/problems/260.yml +15 -18
- data/data/problems/261.yml +15 -13
- data/data/problems/262.yml +15 -14
- data/data/problems/263.yml +13 -13
- data/data/problems/264.yml +10 -11
- data/data/problems/265.yml +2 -2
- data/data/problems/266.yml +7 -7
- data/data/problems/267.yml +1 -1
- data/data/problems/268.yml +1 -1
- data/data/problems/269.yml +3 -3
- data/data/problems/27.yml +12 -15
- data/data/problems/270.yml +4 -4
- data/data/problems/271.yml +5 -6
- data/data/problems/272.yml +5 -7
- data/data/problems/273.yml +4 -4
- data/data/problems/274.yml +4 -5
- data/data/problems/275.yml +4 -4
- data/data/problems/276.yml +5 -6
- data/data/problems/277.yml +7 -8
- data/data/problems/278.yml +16 -19
- data/data/problems/279.yml +3 -4
- data/data/problems/28.yml +6 -6
- data/data/problems/280.yml +2 -2
- data/data/problems/281.yml +4 -6
- data/data/problems/282.yml +3 -3
- data/data/problems/283.yml +6 -7
- data/data/problems/284.yml +7 -8
- data/data/problems/285.yml +4 -4
- data/data/problems/286.yml +2 -2
- data/data/problems/287.yml +19 -24
- data/data/problems/288.yml +7 -8
- data/data/problems/289.yml +11 -11
- data/data/problems/29.yml +10 -13
- data/data/problems/290.yml +3 -4
- data/data/problems/291.yml +4 -4
- data/data/problems/292.yml +5 -6
- data/data/problems/293.yml +9 -10
- data/data/problems/294.yml +12 -7
- data/data/problems/295.yml +11 -13
- data/data/problems/296.yml +9 -9
- data/data/problems/297.yml +7 -9
- data/data/problems/298.yml +32 -40
- data/data/problems/299.yml +17 -19
- data/data/problems/3.yml +6 -4
- data/data/problems/30.yml +1 -1
- data/data/problems/300.yml +14 -14
- data/data/problems/301.yml +9 -10
- data/data/problems/302.yml +5 -5
- data/data/problems/303.yml +4 -4
- data/data/problems/304.yml +7 -9
- data/data/problems/305.yml +4 -5
- data/data/problems/306.yml +10 -12
- data/data/problems/307.yml +4 -4
- data/data/problems/308.yml +4 -4
- data/data/problems/309.yml +11 -9
- data/data/problems/31.yml +2 -2
- data/data/problems/310.yml +6 -9
- data/data/problems/311.yml +10 -12
- data/data/problems/312.yml +10 -9
- data/data/problems/313.yml +5 -5
- data/data/problems/314.yml +8 -9
- data/data/problems/315.yml +35 -38
- data/data/problems/316.yml +17 -16
- data/data/problems/317.yml +8 -7
- data/data/problems/318.yml +14 -29
- data/data/problems/319.yml +10 -12
- data/data/problems/32.yml +2 -2
- data/data/problems/320.yml +2 -2
- data/data/problems/321.yml +12 -11
- data/data/problems/322.yml +4 -5
- data/data/problems/323.yml +7 -9
- data/data/problems/324.yml +7 -9
- data/data/problems/325.yml +2 -2
- data/data/problems/326.yml +3 -3
- data/data/problems/327.yml +19 -22
- data/data/problems/328.yml +23 -23
- data/data/problems/329.yml +6 -6
- data/data/problems/33.yml +2 -2
- data/data/problems/330.yml +12 -16
- data/data/problems/331.yml +16 -18
- data/data/problems/332.yml +10 -10
- data/data/problems/333.yml +15 -16
- data/data/problems/334.yml +17 -19
- data/data/problems/335.yml +3 -3
- data/data/problems/336.yml +5 -5
- data/data/problems/337.yml +7 -8
- data/data/problems/338.yml +18 -24
- data/data/problems/339.yml +3 -3
- data/data/problems/34.yml +1 -1
- data/data/problems/340.yml +7 -7
- data/data/problems/341.yml +4 -5
- data/data/problems/342.yml +6 -9
- data/data/problems/343.yml +8 -13
- data/data/problems/344.yml +8 -8
- data/data/problems/345.yml +17 -16
- data/data/problems/346.yml +6 -6
- data/data/problems/347.yml +8 -10
- data/data/problems/348.yml +5 -5
- data/data/problems/349.yml +4 -4
- data/data/problems/35.yml +1 -1
- data/data/problems/350.yml +5 -6
- data/data/problems/351.yml +7 -7
- data/data/problems/352.yml +13 -14
- data/data/problems/353.yml +2 -2
- data/data/problems/354.yml +6 -8
- data/data/problems/355.yml +4 -4
- data/data/problems/356.yml +5 -4
- data/data/problems/357.yml +3 -3
- data/data/problems/358.yml +11 -16
- data/data/problems/359.yml +12 -12
- data/data/problems/36.yml +1 -1
- data/data/problems/360.yml +4 -4
- data/data/problems/361.yml +9 -9
- data/data/problems/362.yml +8 -15
- data/data/problems/363.yml +29 -29
- data/data/problems/364.yml +4 -4
- data/data/problems/365.yml +3 -3
- data/data/problems/366.yml +16 -19
- data/data/problems/367.yml +11 -11
- data/data/problems/368.yml +14 -18
- data/data/problems/369.yml +2 -2
- data/data/problems/37.yml +1 -1
- data/data/problems/370.yml +4 -4
- data/data/problems/371.yml +5 -5
- data/data/problems/372.yml +6 -7
- data/data/problems/373.yml +10 -6
- data/data/problems/374.yml +11 -13
- data/data/problems/375.yml +11 -14
- data/data/problems/376.yml +19 -19
- data/data/problems/377.yml +5 -5
- data/data/problems/378.yml +8 -9
- data/data/problems/379.yml +10 -9
- data/data/problems/38.yml +9 -11
- data/data/problems/380.yml +8 -10
- data/data/problems/381.yml +6 -10
- data/data/problems/382.yml +12 -13
- data/data/problems/383.yml +5 -6
- data/data/problems/384.yml +14 -18
- data/data/problems/385.yml +12 -14
- data/data/problems/386.yml +4 -5
- data/data/problems/387.yml +13 -14
- data/data/problems/388.yml +6 -6
- data/data/problems/389.yml +3 -3
- data/data/problems/39.yml +2 -2
- data/data/problems/390.yml +12 -8
- data/data/problems/391.yml +18 -20
- data/data/problems/392.yml +9 -9
- data/data/problems/393.yml +8 -8
- data/data/problems/394.yml +14 -15
- data/data/problems/395.yml +16 -15
- data/data/problems/396.yml +13 -16
- data/data/problems/397.yml +4 -6
- data/data/problems/398.yml +8 -9
- data/data/problems/399.yml +18 -19
- data/data/problems/4.yml +2 -2
- data/data/problems/40.yml +2 -2
- data/data/problems/400.yml +10 -9
- data/data/problems/401.yml +6 -7
- data/data/problems/402.yml +7 -9
- data/data/problems/403.yml +9 -10
- data/data/problems/404.yml +8 -10
- data/data/problems/405.yml +10 -10
- data/data/problems/406.yml +24 -30
- data/data/problems/407.yml +6 -10
- data/data/problems/408.yml +10 -10
- data/data/problems/409.yml +12 -7
- data/data/problems/41.yml +1 -1
- data/data/problems/410.yml +5 -6
- data/data/problems/411.yml +10 -13
- data/data/problems/412.yml +10 -10
- data/data/problems/413.yml +6 -7
- data/data/problems/414.yml +26 -28
- data/data/problems/415.yml +12 -13
- data/data/problems/416.yml +4 -4
- data/data/problems/417.yml +12 -14
- data/data/problems/418.yml +13 -10
- data/data/problems/419.yml +11 -13
- data/data/problems/42.yml +2 -2
- data/data/problems/420.yml +8 -8
- data/data/problems/421.yml +8 -13
- data/data/problems/422.yml +8 -8
- data/data/problems/423.yml +11 -12
- data/data/problems/424.yml +10 -10
- data/data/problems/425.yml +7 -7
- data/data/problems/426.yml +9 -9
- data/data/problems/427.yml +12 -13
- data/data/problems/428.yml +17 -20
- data/data/problems/429.yml +5 -5
- data/data/problems/43.yml +1 -1
- data/data/problems/430.yml +6 -7
- data/data/problems/44.yml +4 -4
- data/data/problems/45.yml +4 -4
- data/data/problems/46.yml +6 -9
- data/data/problems/47.yml +5 -8
- data/data/problems/48.yml +1 -1
- data/data/problems/49.yml +1 -1
- data/data/problems/5.yml +1 -1
- data/data/problems/50.yml +1 -1
- data/data/problems/51.yml +1 -3
- data/data/problems/52.yml +1 -1
- data/data/problems/53.yml +6 -12
- data/data/problems/54.yml +17 -16
- data/data/problems/55.yml +3 -3
- data/data/problems/56.yml +2 -2
- data/data/problems/57.yml +9 -10
- data/data/problems/58.yml +11 -11
- data/data/problems/59.yml +2 -2
- data/data/problems/6.yml +2 -2
- data/data/problems/60.yml +1 -1
- data/data/problems/61.yml +7 -7
- data/data/problems/62.yml +1 -1
- data/data/problems/63.yml +1 -1
- data/data/problems/64.yml +30 -44
- data/data/problems/65.yml +19 -19
- data/data/problems/66.yml +9 -12
- data/data/problems/67.yml +9 -9
- data/data/problems/68.yml +3 -3
- data/data/problems/69.yml +3 -3
- data/data/problems/7.yml +1 -1
- data/data/problems/70.yml +4 -4
- data/data/problems/71.yml +4 -4
- data/data/problems/72.yml +4 -4
- data/data/problems/73.yml +4 -4
- data/data/problems/74.yml +9 -16
- data/data/problems/75.yml +3 -3
- data/data/problems/76.yml +1 -1
- data/data/problems/77.yml +1 -1
- data/data/problems/78.yml +8 -8
- data/data/problems/79.yml +2 -2
- data/data/problems/8.yml +12 -13
- data/data/problems/80.yml +1 -1
- data/data/problems/81.yml +8 -10
- data/data/problems/82.yml +10 -11
- data/data/problems/83.yml +10 -11
- data/data/problems/84.yml +45 -37
- data/data/problems/85.yml +2 -2
- data/data/problems/86.yml +8 -8
- data/data/problems/87.yml +1 -1
- data/data/problems/88.yml +11 -22
- data/data/problems/89.yml +14 -14
- data/data/problems/9.yml +6 -7
- data/data/problems/90.yml +7 -7
- data/data/problems/91.yml +6 -8
- data/data/problems/92.yml +6 -11
- data/data/problems/93.yml +11 -12
- data/data/problems/94.yml +1 -1
- data/data/problems/95.yml +2 -2
- data/data/problems/96.yml +7 -9
- data/data/problems/97.yml +3 -3
- data/data/problems/98.yml +2 -2
- data/data/problems/99.yml +4 -4
- data/euler-manager.gemspec +2 -2
- data/example/1/README.md +1 -1
- data/example/1/ruby/1.rb +7 -1
- data/example/1/scala/1.scala +1 -1
- data/example/15/README.md +4 -4
- data/example/2/README.md +1 -4
- data/languages/c.rb +22 -0
- data/languages/elixir.rb +25 -0
- data/languages/java.rb +3 -2
- data/languages/perl.rb +25 -0
- data/languages/php.rb +25 -0
- data/lib/euler/version.rb +1 -1
- data/rake/clean.rake +0 -2
- data/rake/sha_answers.rake +20 -0
- data/rake/update.rake +5 -2
- data/spec/euler_spec.rb +5 -0
- data/templates/c.c +11 -0
- data/templates/elixir.ex +1 -0
- data/templates/perl.pl +3 -0
- data/templates/php.php +5 -0
- metadata +148 -164
- 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/sod_13.gif +0 -119
- 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/example/1/haskell/1.hs +0 -3
- data/example/12/README.md +0 -20
- data/example/12/haskell/12.hs +0 -3
- data/example/lib/Euler.hs +0 -1
data/data/problems/90.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
---
|
2
2
|
:id: 90
|
3
3
|
:name: Cube digit pairs
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=90
|
5
5
|
:content: "Each of the six faces on a cube has a different digit (0 to 9) written
|
6
6
|
on it; the same is done to a second cube. By placing the two cubes side-by-side
|
7
7
|
in different positions we can form a variety of 2-digit numbers.\n\nFor example,
|
8
|
-
the square number 64 could be formed:\n\n ![]({{ images_dir }}/
|
8
|
+
the square number 64 could be formed:\n\n ![]({{ images_dir }}/p090.gif) \n\nIn
|
9
9
|
fact, by carefully choosing the digits on both cubes it is possible to display all
|
10
10
|
of the square numbers below one-hundred: 01, 04, 09, 16, 25, 36, 49, 64, and 81.\n\nFor
|
11
11
|
example, one way this can be achieved is by placing {0, 5, 6, 7, 8, 9} on one cube
|
@@ -14,8 +14,8 @@
|
|
14
14
|
7, 8, 9} and {1, 2, 3, 4, 6, 7} allows for all nine square numbers to be displayed;
|
15
15
|
otherwise it would be impossible to obtain 09.\n\nIn determining a distinct arrangement
|
16
16
|
we are interested in the digits on each cube, not the order.\n\n{1, 2, 3, 4, 5,
|
17
|
-
6} is equivalent to {3, 6, 4, 1, 2, 5} \n
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
6} is equivalent to {3, 6, 4, 1, 2, 5} \n{1, 2, 3, 4, 5, 6} is distinct from {1,
|
18
|
+
2, 3, 4, 5, 9}\n\nBut because we are allowing 6 and 9 to be reversed, the two distinct
|
19
|
+
sets in the last example both represent the extended set {1, 2, 3, 4, 5, 6, 9} for
|
20
|
+
the purpose of forming 2-digit numbers.\n\nHow many distinct arrangements of the
|
21
|
+
two cubes allow for all of the square numbers to be displayed?\n\n"
|
data/data/problems/91.yml
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
---
|
2
2
|
:id: 91
|
3
3
|
:name: Right triangles with integer coordinates
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=91
|
5
5
|
:content: "The points P (_x_<sub>1</sub>, _y_<sub>1</sub>) and Q (_x_<sub>2</sub>,
|
6
6
|
_y_<sub>2</sub>) are plotted at integer co-ordinates and are joined to the origin,
|
7
|
-
O(0,0), to form ΔOPQ.\n\n ![]({{ images_dir }}/
|
7
|
+
O(0,0), to form ΔOPQ.\n\n ![]({{ images_dir }}/p091_1.gif) \n\nThere are exactly
|
8
8
|
fourteen triangles containing a right angle that can be formed when each co-ordinate
|
9
|
-
lies between 0 and 2 inclusive; that is, \n0
|
10
|
-
_x_<sub>
|
11
|
-
|
12
|
-
|
13
|
-
_y_<sub>2</sub> ![≤]({{ images_dir }}/symbol_le.gif) 50, how many right triangles
|
14
|
-
can be formed?\n\n"
|
9
|
+
lies between 0 and 2 inclusive; that is, \n0 ≤ _x_<sub>1</sub>, _y_<sub>1</sub>,
|
10
|
+
_x_<sub>2</sub>, _y_<sub>2</sub> ≤ 2.\n\n ![]({{ images_dir }}/p091_2.gif) \n\nGiven
|
11
|
+
that 0 ≤ _x_<sub>1</sub>, _y_<sub>1</sub>, _x_<sub>2</sub>, _y_<sub>2</sub> ≤ 50,
|
12
|
+
how many right triangles can be formed?\n\n"
|
data/data/problems/92.yml
CHANGED
@@ -1,16 +1,11 @@
|
|
1
1
|
---
|
2
2
|
:id: 92
|
3
3
|
:name: Square digit chains
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=92
|
5
5
|
:content: "A number chain is created by continuously adding the square of the digits
|
6
6
|
in a number to form a new number until it has been seen before.\n\nFor example,\n\n44
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
4 ![→]({{ images_dir }}/symbol_maps.gif) 16 ![→]({{ images_dir }}/symbol_maps.gif)
|
13
|
-
37 ![→]({{ images_dir }}/symbol_maps.gif) 58 ![→]({{ images_dir }}/symbol_maps.gif)
|
14
|
-
**89**\n\nTherefore any chain that arrives at 1 or 89 will become stuck in an endless
|
15
|
-
loop. What is most amazing is that EVERY starting number will eventually arrive
|
16
|
-
at 1 or 89.\n\nHow many starting numbers below ten million will arrive at 89?\n\n"
|
7
|
+
→ 32 → 13 → 10 → **1** → **1** \n85 → **89** → 145 → 42 → 20 → 4 → 16 → 37 → 58
|
8
|
+
→ **89**\n\nTherefore any chain that arrives at 1 or 89 will become stuck in an
|
9
|
+
endless loop. What is most amazing is that EVERY starting number will eventually
|
10
|
+
arrive at 1 or 89.\n\nHow many starting numbers below ten million will arrive at
|
11
|
+
89?\n\n"
|
data/data/problems/93.yml
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
---
|
2
2
|
:id: 93
|
3
3
|
:name: Arithmetic expressions
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=93
|
5
5
|
:content: "By using each of the digits from the set, {1, 2, 3, 4}, exactly once, and
|
6
|
-
making use of the four arithmetic operations (+,
|
7
|
-
|
8
|
-
|
9
|
-
= 4 \\* (2 +
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
1 to _n_, can be obtained, giving your answer as a string: _abcd_.\n\n"
|
6
|
+
making use of the four arithmetic operations (+, −, \\*, /) and brackets/parentheses,
|
7
|
+
it is possible to form different positive integer targets.\n\nFor example,\n\n8
|
8
|
+
= (4 \\* (1 + 3)) / 2 \n14 = 4 \\* (3 + 1 / 2) \n19 = 4 \\* (2 + 3) − 1 \n36
|
9
|
+
= 3 \\* 4 \\* (2 + 1)\n\nNote that concatenations of the digits, like 12 + 34, are
|
10
|
+
not allowed.\n\nUsing the set, {1, 2, 3, 4}, it is possible to obtain thirty-one
|
11
|
+
different target numbers of which 36 is the maximum, and each of the numbers 1 to
|
12
|
+
28 can be obtained before encountering the first non-expressible number.\n\nFind
|
13
|
+
the set of four distinct digits, _a_ \\< _b_ \\< _c_ \\< _d_, for which the longest
|
14
|
+
set of consecutive positive integers, 1 to _n_, can be obtained, giving your answer
|
15
|
+
as a string: _abcd_.\n\n"
|
data/data/problems/94.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
:id: 94
|
3
3
|
:name: Almost equilateral triangles
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=94
|
5
5
|
:content: |+
|
6
6
|
It is easily proved that no equilateral triangle exists with integral length sides and integral area. However, the _almost equilateral triangle_ 5-5-6 has an area of 12 square units.
|
7
7
|
|
data/data/problems/95.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
:id: 95
|
3
3
|
:name: Amicable chains
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=95
|
5
5
|
:content: |+
|
6
6
|
The proper divisors of a number are all the divisors excluding the number itself. For example, the proper divisors of 28 are 1, 2, 4, 7, and 14. As the sum of these divisors is equal to 28, we call it a perfect number.
|
7
7
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
Perhaps less well known are longer chains. For example, starting with 12496, we form a chain of five numbers:
|
11
11
|
|
12
|
-
12496
|
12
|
+
12496 → 14288 → 15472 → 14536 → 14264 (→ 12496 → ...)
|
13
13
|
|
14
14
|
Since this chain returns to its starting point, it is called an amicable chain.
|
15
15
|
|
data/data/problems/96.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
:id: 96
|
3
3
|
:name: Su Doku
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=96
|
5
5
|
:content: "Su Doku (Japanese meaning _number place_) is the name given to a popular
|
6
6
|
puzzle concept. Its origin is unclear, but credit must be attributed to Leonhard
|
7
7
|
Euler who invented a similar, and much more difficult, puzzle idea called Latin
|
@@ -20,11 +20,9 @@
|
|
20
20
|
to eliminate options (there is much contested opinion over this). The complexity
|
21
21
|
of the search determines the difficulty of the puzzle; the example above is considered
|
22
22
|
_easy_ because it can be solved by straight forward direct deduction.\n\nThe 6K
|
23
|
-
text file, [sudoku.txt](project/
|
24
|
-
contains fifty different Su Doku puzzles ranging in difficulty,
|
25
|
-
solutions (the first puzzle in the file is the example above).\n\nBy
|
26
|
-
fifty puzzles find the sum of the 3-digit numbers found in the top left
|
27
|
-
each solution grid; for example, 483 is the 3-digit number found in the
|
28
|
-
corner of the solution grid above.\n\n
|
29
|
-
that "guess and test" methods need not be employed please tell how you
|
30
|
-
would solve #6 and #46. (c;</p>-->\n"
|
23
|
+
text file, [sudoku.txt](project/resources/p096_sudoku.txt) (right click and 'Save
|
24
|
+
Link/Target As...'), contains fifty different Su Doku puzzles ranging in difficulty,
|
25
|
+
but all with unique solutions (the first puzzle in the file is the example above).\n\nBy
|
26
|
+
solving all fifty puzzles find the sum of the 3-digit numbers found in the top left
|
27
|
+
corner of each solution grid; for example, 483 is the 3-digit number found in the
|
28
|
+
top left corner of the solution grid above.\n\n"
|
data/data/problems/97.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
---
|
2
2
|
:id: 97
|
3
3
|
:name: Large non-Mersenne prime
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=97
|
5
5
|
:content: |+
|
6
|
-
The first known prime found to exceed one million digits was discovered in 1999, and is a Mersenne prime of the form 2<sup>6972593</sup
|
6
|
+
The first known prime found to exceed one million digits was discovered in 1999, and is a Mersenne prime of the form 2<sup>6972593</sup>−1; it contains exactly 2,098,960 digits. Subsequently other Mersenne primes, of the form 2<sup><i>p</i></sup>−1, have been found which contain more digits.
|
7
7
|
|
8
|
-
However, in 2004 there was found a massive non-Mersenne prime which contains 2,357,207 digits: 28433
|
8
|
+
However, in 2004 there was found a massive non-Mersenne prime which contains 2,357,207 digits: 28433×2<sup>7830457</sup>+1.
|
9
9
|
|
10
10
|
Find the last ten digits of this prime number.
|
11
11
|
|
data/data/problems/98.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
---
|
2
2
|
:id: 98
|
3
3
|
:name: Anagramic squares
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=98
|
5
5
|
:content: |+
|
6
6
|
By replacing each of the letters in the word CARE with 1, 2, 9, and 6 respectively, we form a square number: 1296 = 36<sup>2</sup>. What is remarkable is that, by using the same digital substitutions, the anagram, RACE, also forms a square number: 9216 = 96<sup>2</sup>. We shall call CARE (and RACE) a square anagram word pair and specify further that leading zeroes are not permitted, neither may a different letter have the same digital value as another letter.
|
7
7
|
|
8
|
-
Using [words.txt](project/
|
8
|
+
Using [words.txt](project/resources/p098_words.txt) (right click and 'Save Link/Target As...'), a 16K text file containing nearly two-thousand common English words, find all the square anagram word pairs (a palindromic word is NOT considered to be an anagram of itself).
|
9
9
|
|
10
10
|
What is the largest square number formed by any member of such a pair?
|
11
11
|
|
data/data/problems/99.yml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
---
|
2
2
|
:id: 99
|
3
3
|
:name: Largest exponential
|
4
|
-
:url:
|
4
|
+
:url: https://projecteuler.net/problem=99
|
5
5
|
:content: |+
|
6
|
-
Comparing two numbers written in index form like 2<sup>11</sup> and 3<sup>7</sup> is not difficult, as any calculator would confirm that 2<sup>11</sup> = 2048
|
6
|
+
Comparing two numbers written in index form like 2<sup>11</sup> and 3<sup>7</sup> is not difficult, as any calculator would confirm that 2<sup>11</sup> = 2048 \< 3<sup>7</sup> = 2187.
|
7
7
|
|
8
|
-
However, confirming that 632382<sup>518061</sup>
|
8
|
+
However, confirming that 632382<sup>518061</sup> \> 519432<sup>525806</sup> would be much more difficult, as both numbers contain over three million digits.
|
9
9
|
|
10
|
-
Using [base\_exp.txt](project/
|
10
|
+
Using [base\_exp.txt](project/resources/p099_base_exp.txt) (right click and 'Save Link/Target As...'), a 22K text file containing one thousand lines with a base/exponent pair on each line, determine which line number has the greatest numerical value.
|
11
11
|
|
12
12
|
NOTE: The first two lines in the file represent the numbers in the example given above.
|
13
13
|
|
data/euler-manager.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['William Yaworsky']
|
10
10
|
spec.email = ['wj.px01@gmail.com']
|
11
11
|
spec.summary = %q{Manage and test project Euler problems from your command line.}
|
12
|
-
|
12
|
+
spec.description = %q{This gem provides a framework for managing project Euler solutions.}
|
13
13
|
spec.homepage = 'https://github.com/yaworsw/euler-manager'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.0.0'
|
22
22
|
|
23
23
|
spec.add_dependency 'commander'
|
24
24
|
spec.add_dependency 'colorize'
|
data/example/1/README.md
CHANGED
data/example/1/ruby/1.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
require_relative '../../lib/euler.rb'
|
2
2
|
|
3
|
-
|
3
|
+
one_to_one_thousand = (1...1000).to_a
|
4
|
+
|
5
|
+
divisible_by_three_or_five = lambda { |num|
|
6
|
+
num % 3 == 0 || num % 5 == 0
|
7
|
+
}
|
8
|
+
|
9
|
+
answer = one_to_one_thousand.select(&divisible_by_three_or_five).reduce(:+)
|
4
10
|
|
5
11
|
puts answer
|
data/example/1/scala/1.scala
CHANGED
data/example/15/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# [Lattice paths](
|
1
|
+
# [Lattice paths](https://projecteuler.net/problem=15)
|
2
2
|
|
3
|
-
Starting in the top left corner of a 2
|
3
|
+
Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.
|
4
4
|
|
5
|
-
![](https://raw.githubusercontent.com/yaworsw/euler-manager/develop
|
5
|
+
![](https://raw.githubusercontent.com/yaworsw/euler-manager/develop/data/images/p015.gif)
|
6
6
|
|
7
|
-
How many such routes are there through a 20
|
7
|
+
How many such routes are there through a 20×20 grid?
|
8
8
|
|
data/example/2/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# [Even Fibonacci numbers](
|
1
|
+
# [Even Fibonacci numbers](https://projecteuler.net/problem=2)
|
2
2
|
|
3
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
4
|
|
@@ -6,6 +6,3 @@ Each new term in the Fibonacci sequence is generated by adding the previous two
|
|
6
6
|
|
7
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
8
|
|
9
|
-
<!--
|
10
|
-
Note: This problem has been changed recently, please check that you are using the right parameters.
|
11
|
-
-->
|
data/languages/c.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Euler.register_language('c', Class.new do
|
2
|
+
def run solution
|
3
|
+
dir = File.dirname(file_path(solution))
|
4
|
+
Dir.chdir(dir)
|
5
|
+
`gcc #{file_path(solution)} -o #{solution.dir}/solution`
|
6
|
+
`#{solution.dir}/solution`
|
7
|
+
end
|
8
|
+
|
9
|
+
def init solution
|
10
|
+
FileUtils.cp(template_path, file_path(solution))
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def file_path solution
|
16
|
+
"#{solution.dir}/#{solution.problem.id}.c"
|
17
|
+
end
|
18
|
+
|
19
|
+
def template_path
|
20
|
+
"#{File.dirname(__FILE__)}/../templates/c.c"
|
21
|
+
end
|
22
|
+
end)
|
data/languages/elixir.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Euler.register_language('elixir', Class.new do
|
2
|
+
|
3
|
+
# Compile and run the solution
|
4
|
+
def run solution
|
5
|
+
`elixir #{file_path(solution)}`
|
6
|
+
end
|
7
|
+
|
8
|
+
# Copy the template to the solution directory
|
9
|
+
def init solution
|
10
|
+
FileUtils.cp(template_path, file_path(solution))
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Returns the path of the solution
|
16
|
+
def file_path solution
|
17
|
+
"#{solution.dir}/#{solution.problem.id}.ex"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns the path of the template
|
21
|
+
def template_path
|
22
|
+
"#{File.dirname(__FILE__)}/../templates/elixir.ex"
|
23
|
+
end
|
24
|
+
|
25
|
+
end)
|
data/languages/java.rb
CHANGED
@@ -4,8 +4,9 @@ Euler.register_language('java', Class.new do
|
|
4
4
|
def run solution
|
5
5
|
dir = File.dirname(file_path(solution))
|
6
6
|
Dir.chdir(dir)
|
7
|
-
|
8
|
-
`javac
|
7
|
+
libs = Dir["#{Euler.root}/lib/**/*.java"].reject { |f| File.basename(f) == 'java.java' }
|
8
|
+
`javac #{libs.join(' ')}`
|
9
|
+
`javac -cp .:#{Euler.root}/lib ./*.java && java -cp .:#{Euler.root}/lib Main`
|
9
10
|
end
|
10
11
|
|
11
12
|
# Copy the java template to the solution directory
|
data/languages/perl.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Euler.register_language('perl', Class.new do
|
2
|
+
|
3
|
+
# Run the solution
|
4
|
+
def run solution
|
5
|
+
`perl #{file_path(solution)}`
|
6
|
+
end
|
7
|
+
|
8
|
+
# Copy the template into the solution's directory
|
9
|
+
def init solution
|
10
|
+
FileUtils.cp(template_path, file_path(solution))
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Returns the path to the solution
|
16
|
+
def file_path solution
|
17
|
+
"#{solution.dir}/#{solution.problem.id}.pl"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns the path to the template
|
21
|
+
def template_path
|
22
|
+
"#{File.dirname(__FILE__)}/../templates/perl.pl"
|
23
|
+
end
|
24
|
+
|
25
|
+
end)
|
data/languages/php.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Euler.register_language('php', Class.new do
|
2
|
+
|
3
|
+
# Run the solution
|
4
|
+
def run solution
|
5
|
+
`php #{file_path(solution)}`
|
6
|
+
end
|
7
|
+
|
8
|
+
# Copy the template into the solution's directory
|
9
|
+
def init solution
|
10
|
+
FileUtils.cp(template_path, file_path(solution))
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Returns the path to the solution
|
16
|
+
def file_path solution
|
17
|
+
"#{solution.dir}/#{solution.problem.id}.php"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns the path to the template
|
21
|
+
def template_path
|
22
|
+
"#{File.dirname(__FILE__)}/../templates/php.php"
|
23
|
+
end
|
24
|
+
|
25
|
+
end)
|
data/lib/euler/version.rb
CHANGED
data/rake/clean.rake
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'digest/sha1'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
desc "SHA problem solutions"
|
5
|
+
task :sha_answers do
|
6
|
+
|
7
|
+
data_dir = "#{__dir__}/../data"
|
8
|
+
answers_file = "#{data_dir}/answers.yml"
|
9
|
+
raw_answers_file = "#{data_dir}/answers-raw.yml"
|
10
|
+
|
11
|
+
raw_answers = YAML.load_file(answers_file)
|
12
|
+
|
13
|
+
raw_answers.map do |id, answer|
|
14
|
+
Digest::SHA1.hexdigest(answer)
|
15
|
+
end
|
16
|
+
|
17
|
+
File.open(answers_file, 'w') do |f|
|
18
|
+
f.write(raw_answers.to_yaml)
|
19
|
+
end
|
20
|
+
end
|
data/rake/update.rake
CHANGED
@@ -15,6 +15,9 @@ require 'euler'
|
|
15
15
|
desc "Scrape the Project Euler website and download problem descriptions and images"
|
16
16
|
task :update do
|
17
17
|
|
18
|
+
protocol = 'https'
|
19
|
+
domain = 'projecteuler.net'
|
20
|
+
|
18
21
|
# Number of seconds to wait in the beginning of each iteration of the http request loop
|
19
22
|
sleep_time = 0.5
|
20
23
|
|
@@ -48,7 +51,7 @@ task :update do
|
|
48
51
|
|
49
52
|
sleep(sleep_time)
|
50
53
|
|
51
|
-
url = "
|
54
|
+
url = "#{protocol}://#{domain}/problem=#{problem_id}"
|
52
55
|
|
53
56
|
doc = Nokogiri::HTML(open(url))
|
54
57
|
|
@@ -58,7 +61,7 @@ task :update do
|
|
58
61
|
|
59
62
|
# download images
|
60
63
|
doc.css('.problem_content img').each do |img|
|
61
|
-
image_url = "
|
64
|
+
image_url = "#{protocol}://#{domain}/#{img['src']}"
|
62
65
|
file_name = File.basename(image_url)
|
63
66
|
file_path = "#{images_dir}/#{file_name}"
|
64
67
|
open(image_url) do |i|
|