RosettaCodeData/Task/Maximum-triangle-path-sum/True-BASIC/maximum-triangle-path-sum.b...

44 lines
1.4 KiB
Plaintext

DATA " 55"
DATA " 94 48"
DATA " 95 30 96"
DATA " 77 71 26 67"
DATA " 97 13 76 38 45"
DATA " 07 36 79 16 37 68"
DATA " 48 07 09 18 70 26 06"
DATA " 18 72 79 46 59 79 29 90"
DATA " 20 76 87 11 32 07 07 49 18"
DATA " 27 83 58 35 71 11 25 57 29 85"
DATA " 14 64 36 96 27 11 58 56 92 18 55"
DATA " 02 90 03 60 48 49 41 46 33 36 47 23"
DATA " 92 50 48 02 36 59 42 79 72 20 82 77 42"
DATA " 56 78 38 80 39 75 02 71 66 66 01 03 55 72"
DATA " 44 25 67 84 71 67 11 61 40 57 58 89 40 56 36"
DATA " 85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52"
DATA " 06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15"
DATA " 27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93"
DATA "END" ! no more DATA
DIM matrix(1 TO 20, 1 TO 20)
LET x = 1
DO
READ ln$
LET ln$ = LTRIM$(RTRIM$(ln$))
IF ln$ = "END" THEN EXIT DO
FOR y = 1 TO x
LET matrix(x, y) = VAL((ln$)[1:2])
LET ln$ = (ln$)[4:maxnum]
NEXT y
LET x = x+1
LET tam = tam+1
LOOP
FOR x = tam-1 TO 1 STEP -1
FOR y = 1 TO x
LET s1 = matrix(x+1, y)
LET s2 = matrix(x+1, y+1)
IF s1 > s2 THEN LET matrix(x, y) = matrix(x, y)+s1 ELSE LET matrix(x, y) = matrix(x, y)+s2
NEXT y
NEXT x
PRINT " maximum triangle path sum ="; matrix(1, 1)
END