Solved ProjectEuler/015: php, ruby

This commit is contained in:
FuryFire 2012-03-09 10:34:27 +01:00
parent a57849a661
commit 0dc93ee0ee
3 changed files with 41 additions and 0 deletions

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

@ -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

@ -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