September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
1
Task/Maximum-triangle-path-sum/00META.yaml
Normal file
1
Task/Maximum-triangle-path-sum/00META.yaml
Normal file
|
|
@ -0,0 +1 @@
|
|||
--- {}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import system'routines.
|
||||
import extensions.
|
||||
import extensions'math.
|
||||
import system'routines;
|
||||
import extensions;
|
||||
import extensions'math;
|
||||
|
||||
literal input = "55
|
||||
string input = "55
|
||||
94 48
|
||||
95 30 96
|
||||
77 71 26 67
|
||||
|
|
@ -19,34 +19,34 @@ literal input = "55
|
|||
44 25 67 84 71 67 11 61 40 57 58 89 40 56 36
|
||||
85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52
|
||||
06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15
|
||||
27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93".
|
||||
27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93";
|
||||
|
||||
program =
|
||||
[
|
||||
var list := IntMatrix new(18,19).
|
||||
public program()
|
||||
{
|
||||
var list := new IntMatrix(18,19);
|
||||
|
||||
int i := 0.
|
||||
int j := 0.
|
||||
input split('newLine); forEach(:line)<literal>
|
||||
[
|
||||
j := 0.
|
||||
line trim; split(" "); forEach(:num)<literal>
|
||||
[
|
||||
list[i][j] := num toInt.
|
||||
int i := 0;
|
||||
int j := 0;
|
||||
input.split(forward newLine).forEach:(string line)
|
||||
{
|
||||
j := 0;
|
||||
line.trim().split(" ").forEach:(string num)
|
||||
{
|
||||
list[i][j] := num.toInt();
|
||||
|
||||
j += 1
|
||||
].
|
||||
};
|
||||
|
||||
i += 1.
|
||||
].
|
||||
i += 1
|
||||
};
|
||||
|
||||
16 to:0 do(:i)<int>
|
||||
[
|
||||
0 till:18 do(:j)<int>
|
||||
[
|
||||
list[i][j] := mathControl max(list[i][j] + list[i+1][j], list[i][j] + list[i+1][j+1]).
|
||||
].
|
||||
].
|
||||
for(int i := 16, i >= 0, i-=1)
|
||||
{
|
||||
for(int j := 0, j < 18, j += 1)
|
||||
{
|
||||
list[i][j] := mathControl.max(list[i][j] + list[i+1][j], list[i][j] + list[i+1][j+1])
|
||||
}
|
||||
};
|
||||
|
||||
console printLine("Maximum total: ", list[0][0]).
|
||||
].
|
||||
console.printLine("Maximum total: ", list[0][0])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,20 @@
|
|||
defmodule Maximum do
|
||||
def triangle_path(text) do
|
||||
String.split(text, "\n", trim: true)
|
||||
|> Enum.map(fn line -> String.split(line) |> Enum.map(&String.to_integer(&1)) end)
|
||||
text
|
||||
|> String.split("\n", trim: true)
|
||||
|> Enum.map(fn line ->
|
||||
line
|
||||
|> String.split()
|
||||
|> Enum.map(&String.to_integer(&1))
|
||||
end)
|
||||
|> Enum.reduce([], fn x,total ->
|
||||
Enum.chunk([0]++total++[0], 2, 1)
|
||||
[0]++total++[0]
|
||||
|> Enum.chunk_every( 2, 1)
|
||||
|> Enum.map(&Enum.max(&1))
|
||||
|> Enum.zip(x)
|
||||
|> Enum.map(fn{a,b} -> a+b end)
|
||||
end)
|
||||
|> Enum.max
|
||||
|> Enum.max()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
USING: grouping.extras io.encodings.utf8 io.files kernel
|
||||
math.order math.parser math.vectors prettyprint sequences
|
||||
splitting ;
|
||||
IN: rosetta-code.maximum-triangle-path-sum
|
||||
|
||||
: parse-triangle ( path -- seq )
|
||||
utf8 file-lines [ " " split harvest ] map
|
||||
[ [ string>number ] map ] map ;
|
||||
|
||||
: max-triangle-path-sum ( seq -- n )
|
||||
<reversed> unclip-slice [ swap [ max ] 2clump-map v+ ]
|
||||
reduce first ;
|
||||
|
||||
"triangle.txt" parse-triangle max-triangle-path-sum .
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
from functools import (reduce)
|
||||
from itertools import (starmap)
|
||||
|
||||
|
||||
# maxPathSum :: [[Int]] -> Int
|
||||
def maxPathSum(rows):
|
||||
return reduce(
|
||||
lambda xs, ys: list(starmap(
|
||||
lambda a, b, c: a + max(b, c),
|
||||
zip(ys, xs, xs[1:])
|
||||
)),
|
||||
reversed(rows[:-1]), rows[-1]
|
||||
)[0]
|
||||
|
||||
|
||||
# TEST ----------------------------------------------------
|
||||
print(
|
||||
maxPathSum([
|
||||
[55],
|
||||
[94, 48],
|
||||
[95, 30, 96],
|
||||
[77, 71, 26, 67],
|
||||
[97, 13, 76, 38, 45],
|
||||
[7, 36, 79, 16, 37, 68],
|
||||
[48, 7, 9, 18, 70, 26, 6],
|
||||
[18, 72, 79, 46, 59, 79, 29, 90],
|
||||
[20, 76, 87, 11, 32, 7, 7, 49, 18],
|
||||
[27, 83, 58, 35, 71, 11, 25, 57, 29, 85],
|
||||
[14, 64, 36, 96, 27, 11, 58, 56, 92, 18, 55],
|
||||
[2, 90, 3, 60, 48, 49, 41, 46, 33, 36, 47, 23],
|
||||
[92, 50, 48, 2, 36, 59, 42, 79, 72, 20, 82, 77, 42],
|
||||
[56, 78, 38, 80, 39, 75, 2, 71, 66, 66, 1, 3, 55, 72],
|
||||
[44, 25, 67, 84, 71, 67, 11, 61, 40, 57, 58, 89, 40, 56, 36],
|
||||
[85, 32, 25, 85, 57, 48, 84, 35, 47, 62, 17, 1, 1, 99, 89, 52],
|
||||
[6, 71, 28, 75, 94, 48, 37, 10, 23, 51, 6, 48, 53, 18, 74, 98, 15],
|
||||
[27, 2, 92, 23, 8, 71, 76, 84, 15, 52, 92, 63, 81, 10, 44, 10, 69, 93]
|
||||
])
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue