September Morn Update

This commit is contained in:
Ingy döt Net 2019-09-12 10:33:56 -07:00
parent 4e2d22a71d
commit aac6731f2c
6856 changed files with 141342 additions and 21127 deletions

View file

@ -0,0 +1 @@
--- {}

View file

@ -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])
}

View file

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

View file

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

View file

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