2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue