Various incomplete solutions

This commit is contained in:
FuryFire 2011-04-10 13:19:21 +02:00
parent 94dc7ec373
commit 53e3cf4358
15 changed files with 173 additions and 8 deletions

@ -0,0 +1,13 @@
<?php
while($s=explode(' ',trim(fgets(STDIN)))) {
if($s[1]%5) {
echo $s[1];
} else {
$new = round($s[1]-$s[1]-0.5,2);
if($new)
echo $new;
else
echo $s[1];
}
}

@ -0,0 +1,7 @@
<?php
echo fgets(STDIN);
while($s = fgets(STDIN)) {
if(trim($s) == '42')
die;
echo $s;
}

@ -6,7 +6,8 @@ desc: |
012 021 102 120 201 210 012 021 102 120 201 210
What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9? What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
solution: Use factoring
solutions: solutions:
solve.php: solve.php:
desc: Basic Solution desc: Basic Solution
language: php language: php

@ -3,10 +3,8 @@ url: http://projecteuler.net/problem=25
desc: | desc: |
The Fibonacci sequence is defined by the recurrence relation: The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1. Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be: Hence the first 12 terms will be:
F1 = 1 F1 = 1
F2 = 1 F2 = 1
F3 = 2 F3 = 2
@ -20,11 +18,13 @@ desc: |
F11 = 89 F11 = 89
F12 = 144 F12 = 144
The 12th term, F12, is the first term to contain three digits. The 12th term, F12, is the first term to contain three digits.
What is the first term in the Fibonacci sequence to contain 1000 digits? What is the first term in the Fibonacci sequence to contain 1000 digits?
solution: Bruteforce solution: Bruteforce
solutions: solutions:
solve.php: solve.php:
desc: Basic Solution desc: Basic Solution - needs BCMath
language: php language: php
solve.rb:
desc: Basic solution
language: ruby

20
ProjectEuler/029/desc.yml Normal file

@ -0,0 +1,20 @@
title: How many distinct terms are in the sequence generated by a^b for 2 <= a <= 100 and 2 <= b <= 100?
url: http://projecteuler.net/problem=29
desc: |
Consider all integer combinations of a^b for 2 <= a 5 and 2 <= b <= 5:
2^2=4, 2^3=8, 2^4=16, 2^5=32
3^2=9, 3^3=27, 3^4=81, 3^5=243
4^2=16, 4^3=64, 4^4=256, 4^5=1024
5^2=25, 5^3=125, 5^4=625, 5^5=3125
If they are then placed in numerical order, with any repeats removed, we get the following sequence of 15 distinct terms:
4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
How many distinct terms are in the sequence generated by a^b for 2 <= a <= 100 and 2 <= b <= 100?
solution: Bruteforce
solutions:
solve.php:
desc: Basic Solution - needs BCMath
language: php
solve.rb:
desc: Basic solution
language: ruby

@ -0,0 +1,12 @@
<?php
define('A_START',2);
define('A_END',100);
define('B_START',2);
define('B_END',100);
for($a=A_START;$a<=A_END;$a++) {
for($b=B_START;$b<=B_END;$b++) {
$array[] = bcpow($a,$b);
}
}
echo count(array_unique($array));

21
ProjectEuler/029/solve.rb Normal file

@ -0,0 +1,21 @@
MAX = 6*9**5
value = 2;
total = 0;
for value in (2..MAX) do
a = 0
end
while($value<354294) {
$a = 0;
for($t=0;$t<strlen($value);$t++) {
$a += pow(substr((string)$value,$t,1),5);
}
if($value == $a) { $total += $value;}
$value++;
}
echo $total;

16
ProjectEuler/030/desc.yml Normal file

@ -0,0 +1,16 @@
title: Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
url: http://projecteuler.net/problem=30
desc: |
Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:
1634 = 1^4 + 6^4 + 3^4 + 4^4
8208 = 8^4 + 2^4 + 0^4 + 8^4
9474 = 9^4 + 4^4 + 7^4 + 4^4
As 1 = 1^4 is not a sum it is not included.
The sum of these numbers is 1634 + 8208 + 9474 = 19316.
Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
solution: We can safely assume that we don't have to search high values higher than 354294. Because 6*9^5 = 354294 is far from the value of 999999
solutions:
solve.php:
desc: Basic Solution
language: php

@ -0,0 +1,16 @@
<?php
define('POWER',5);
define('START',2);
define('END', 6*pow(9,POWER) );
$result = 0;
for($value = START; $value < END; $value++ ) {
$cmp = 0;
for($c= 0, $len = strlen($string), $string = (string)$value; $c< $len; $c++)
{
$cmp += pow($string[$c],POWER);
}
$result += ($value == $cmp) ? $value : 0;
}
echo $result;

10
ProjectEuler/031/desc.yml Normal file

@ -0,0 +1,10 @@
title: Investigating combinations of English currency denominations.
url: http://projecteuler.net/problem=31
desc: |
In England the currency is made up of pound, £ and pence, p, and there are eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, ñ (100p) and £ (200p).
It is possible to make £ in the following way:
1£ + 150p + 220p + 15p + 12p + 31p
How many different ways can £ be made using any number of coins?
solution: Define the target value as 200 to simplify

@ -0,0 +1,4 @@
<?php
$start = 200;
for($c = 0; $c > $left; $c++);

10
ProjectEuler/032/desc.yml Normal file

@ -0,0 +1,10 @@
title: Find the sum of all numbers that can be written as pandigital products.
url: http://projecteuler.net/problem=32
desc: |
We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.
The product 7254 is unusual, as the identity, 39 x 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.
Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.
HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum.
solution: Bruteforce

@ -0,0 +1,6 @@
<?php
function pandigital($number) {
$array = count_chars($number,1);
ksort($array);
if($array == array(49=>1,50=>1,51=>1,52=>1,53=>1,54=>1,55=>1,56=>1,57=>1)) { return true;} else { return false; }
}

13
ProjectEuler/034/desc.yml Normal file

@ -0,0 +1,13 @@
title: Find the sum of all numbers which are equal to the sum of the factorial of their digits.
url: http://projecteuler.net/problem=34
desc: |
145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.
Find the sum of all numbers which are equal to the sum of the factorial of their digits.
Note: as 1! = 1 and 2! = 2 are not sums they are not included.
solution: Bruteforce
solutons:
solve.php:
desc: Basic solution
language: php

@ -0,0 +1,16 @@
<?php
$num = 3;
$result =0;
for($num = 3; $num < 99999; $num++) {
$sum = 0;
foreach(str_split($num) as $digit) {
$sum += fact($digit);
}
if($sum == $num) { $result += $sum;}
}
echo $result;
function fact($int){
static $facts = array(1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880);
return $facts[$int];
}