Restructuring

This commit is contained in:
2024-07-01 13:49:44 +00:00
parent f11b705ef0
commit 8d60e1b905
194 changed files with 1296 additions and 112 deletions

View File

@ -0,0 +1,20 @@
title: What is the greatest product of four adjacent numbers on the same straight line in the 20 by 20 grid?
url: http://projecteuler.net/problem=11
desc: |
In the 2020 grid below, four numbers along a diagonal line have been marked in red.
What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 2020 grid?
(See file input)
solution: |
Bruteforce (Unless someone found a smarter way)
solutions:
solve.php:
desc: Expects the matrix as stdin
language: php
parameters: < ProjectEuler\011\input
solve.rb:
desc: Expects the matrix as stdin
language: ruby
parameters: < ProjectEuler\011\input

View File

@ -0,0 +1,20 @@
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

View File

@ -0,0 +1,39 @@
<?php
foreach(file('php://stdin') as $line) {
$matrix[] = explode(' ', $line);
}
$max = 0;
//Left and right
for ($y = 0; $y < 19; $y++) {
for ($x = 0; $x < 16; $x++) {
$cmp = $matrix[$y][$x] * $matrix[$y][$x + 1] * $matrix[$y][$x + 2] * $matrix[$y][$x + 3];
$max = ($cmp > $max) ? $cmp : $max;
}
}
//Vertical
for($x = 0; $x < 19; $x++) {
for ($y = 0; $y < 16; $y++) {
$cmp = $matrix[$y][$x] * $matrix[$y + 1][$x] * $matrix[$y + 2][$x] * $matrix[$y + 3][$x];
$max = ($cmp > $max) ? $cmp : $max;
}
}
//Diagonally left->down
for($x = 0; $x < 16; $x++) {
for ($y = 0; $y < 16; $y++) {
$cmp = $matrix[$y][$x] * $matrix[$y + 1][$x + 1] * $matrix[$y + 2][$x + 2] * $matrix[$y + 3][$x + 3];
$max = ($cmp > $max) ? $cmp : $max;
}
}
//Diagonally right->down
for($x = 4; $x < 19; $x++) {
for ($y = 0; $y < 16; $y++) {
$cmp = $matrix[$y][$x] * $matrix[$y + 1][$x - 1] * $matrix[$y + 2][$x - 2] * $matrix[$y + 3][$x - 3];
$max = ($cmp > $max) ? $cmp : $max;
}
}
echo $max;

View File

@ -0,0 +1,53 @@
matrix = []
linenum = 0
ARGF.lines("\n") do |line|
matrix[linenum] = Array.new
line.split.each do |str|
matrix[linenum] << str.to_i
end
linenum += 1
end
max = 0
max = 0;
#Left and right
(0..19).each do |y|
(0..16).each do |x|
cmp = matrix[y][x] * matrix[y][x + 1] * matrix[y][x + 2] * matrix[y][x + 3];
if (cmp > max)
max = cmp
end
end
end
#Vertical
(0..16).each do |y|
(0..19).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x] * matrix[y + 2][x] * matrix[y + 3][x];
if (cmp > max)
max = cmp
end
end
end
#Diagonally left->down
(0..16).each do |y|
(0..16).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x + 1] * matrix[y + 2][x + 2] * matrix[y + 3][x + 3];
if (cmp > max)
max = cmp
end
end
end
#Diagonally right->down
(0..16).each do |y|
(3..19).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x - 1] * matrix[y + 2][x - 2] * matrix[y + 3][x - 3];
if (cmp > max)
max = cmp
end
end
end
puts max