Solved ProjectEuler/015: php, ruby
This commit is contained in:
19
ProjectEuler/015/desc.yml
Normal file
19
ProjectEuler/015/desc.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
title: Find the longest sequence using a starting number under one million.
|
||||||
|
url: http://projecteuler.net/problem=15
|
||||||
|
|
||||||
|
desc: |
|
||||||
|
Starting in the top left corner of a 22 grid, there are 6 routes (without backtracking) to the bottom right corner.
|
||||||
|
How many routes are there through a 2020 grid?
|
||||||
|
|
||||||
|
solution: |
|
||||||
|
(2n)!/n!^2 - Where n is the size of the grid -
|
||||||
|
|
||||||
|
todo: Find a more "programmable way" instead of this cheating mathsolution
|
||||||
|
|
||||||
|
solutions:
|
||||||
|
solve.php:
|
||||||
|
desc: Using BCMath to cope with large numbers
|
||||||
|
language: php
|
||||||
|
solve.rb:
|
||||||
|
desc: Basic solution
|
||||||
|
language: ruby
|
11
ProjectEuler/015/solve.php
Normal file
11
ProjectEuler/015/solve.php
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
define('GRID_SIZE',20);
|
||||||
|
function factorial($num) {
|
||||||
|
if($num == 0)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return bcmul($num,factorial(bcsub($num,1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
echo bcdiv(factorial(2* GRID_SIZE),bcpow(factorial( GRID_SIZE),2));
|
||||||
|
|
11
ProjectEuler/015/solve.rb
Normal file
11
ProjectEuler/015/solve.rb
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
GRID_SIZE = 20
|
||||||
|
|
||||||
|
def factorial(num)
|
||||||
|
if(num == 0)
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return num * factorial(num - 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts factorial(2 * GRID_SIZE) / factorial(GRID_SIZE) ** 2
|
Reference in New Issue
Block a user