euler-manager 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|