2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -3,7 +3,8 @@ Starting from the top of a pyramid of numbers like this, you can walk down going
55
94 48
95 30 96
77 71 26 67</pre>
77 71 26 67
</pre>
One of such walks is 55 - 94 - 30 - 26.
You can compute the total of the numbers you have seen in such walk,
@ -11,7 +12,9 @@ in this case it's 205.
Your problem is to find the maximum total among all possible paths from the top to the bottom row of the triangle. In the little example above it's 321.
'''Task:''' find the maximum total in the triangle below:
;Task:
Find the maximum total in the triangle below:
<pre>
55
94 48
@ -30,8 +33,10 @@ Your problem is to find the maximum total among all possible paths from the top
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</pre>
27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93
</pre>
Such numbers can be included in the solution code, or read from a "triangle.txt" file.
This task is derived from the [http://projecteuler.net/problem=18 Euler Problem #18].
<br><br>

View file

@ -1,34 +1,32 @@
/*REXX program finds the max sum of a "column" of numbers in a triangle.*/
@. =
@.1 = 55
@.2 = 94 48
@.3 = 95 30 96
@.4 = 77 71 26 67
@.5 = 97 13 76 38 45
@.6 = 07 36 79 16 37 68
@.7 = 48 07 09 18 70 26 06
@.8 = 18 72 79 46 59 79 29 90
@.9 = 20 76 87 11 32 07 07 49 18
@.10 = 27 83 58 35 71 11 25 57 29 85
@.11 = 14 64 36 96 27 11 58 56 92 18 55
@.12 = 02 90 03 60 48 49 41 46 33 36 47 23
@.13 = 92 50 48 02 36 59 42 79 72 20 82 77 42
@.14 = 56 78 38 80 39 75 02 71 66 66 01 03 55 72
@.15 = 44 25 67 84 71 67 11 61 40 57 58 89 40 56 36
@.16 = 85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52
@.17 = 06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15
@.18 = 27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93
/*REXX program finds the maximum sum of a path of numbers in a pyramid of numbers. */
@.=.; @.1 = 55
@.2 = 94 48
@.3 = 95 30 96
@.4 = 77 71 26 67
@.5 = 97 13 76 38 45
@.6 = 07 36 79 16 37 68
@.7 = 48 07 09 18 70 26 06
@.8 = 18 72 79 46 59 79 29 90
@.9 = 20 76 87 11 32 07 07 49 18
@.10 = 27 83 58 35 71 11 25 57 29 85
@.11 = 14 64 36 96 27 11 58 56 92 18 55
@.12 = 02 90 03 60 48 49 41 46 33 36 47 23
@.13 = 92 50 48 02 36 59 42 79 72 20 82 77 42
@.14 = 56 78 38 80 39 75 02 71 66 66 01 03 55 72
@.15 = 44 25 67 84 71 67 11 61 40 57 58 89 40 56 36
@.16 = 85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52
@.17 = 06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15
@.18 = 27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93
#.=0
do r=1 while @.r\==. /*build another version of the pyramid.*/
do k=1 for r; #.r.k=word(@.r, k) /*assign a number to an array number. */
end /*k*/
end /*r*/
do r=1 while @.r\=='' /*build a version of the triangle*/
do k=1 for words(@.r) /*build a row, number by number. */
#.r.k=word(@.r,k) /*assign a number to an array num*/
end /*k*/
end /*r*/
rows=r-1 /*compute the number of rows. */
do r=rows by -1 to 2; p=r-1 /*traipse through triangle rows. */
do k=1 for p; kn=k+1 /*re-calculate the previous row. */
#.p.k=max(#.r.k, #.r.kn) + #.p.k /*replace previous #. */
end /*k*/
end /*r*/
say 'maximum path sum:' #.1.1 /*display the top (row 1) number.*/
/*stick a fork in it, we're done.*/
do r=r-1 by -1 to 2; p=r-1 /*traipse through the pyramid rows. */
do k=1 for p; _=k+1 /*re─calculate the previous pyramid row*/
#.p.k=max(#.r.k, #.r._) + #.p.k /*replace the previous number. */
end /*k*/
end /*r*/
/*stick a fork in it, we're all done. */
say 'maximum path sum: ' #.1.1 /*show the top (row 1) pyramid number. */