Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,56 @@
|
|||
PROGRAM TRIANGLE_PATH
|
||||
|
||||
CONST ROW=18
|
||||
|
||||
DIM TRI[200]
|
||||
|
||||
!
|
||||
! for rosettacode,org
|
||||
!
|
||||
|
||||
FUNCTION MAX(X,Y)
|
||||
MAX=-X*(X>=Y)-Y*(X<Y)
|
||||
END FUNCTION
|
||||
|
||||
BEGIN
|
||||
|
||||
DATA(55)
|
||||
DATA(94,48)
|
||||
DATA(95,30,96)
|
||||
DATA(77,71,26,67)
|
||||
DATA(97,13,76,38,45)
|
||||
DATA(7,36,79,16,37,68)
|
||||
DATA(48,7,9,18,70,26,6)
|
||||
DATA(18,72,79,46,59,79,29,90)
|
||||
DATA(20,76,87,11,32,7,7,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(2,90,3,60,48,49,41,46,33,36,47,23)
|
||||
DATA(92,50,48,2,36,59,42,79,72,20,82,77,42)
|
||||
DATA(56,78,38,80,39,75,2,71,66,66,1,3,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,1,1,99,89,52)
|
||||
DATA(6,71,28,75,94,48,37,10,23,51,6,48,53,18,74,98,15)
|
||||
DATA(27,2,92,23,8,71,76,84,15,52,92,63,81,10,44,10,69,93)
|
||||
|
||||
PRINT(CHR$(12);) !CLS
|
||||
LUNG=ROW*(ROW+1)/2
|
||||
FOR I%=0 TO LUNG-1 DO
|
||||
READ(TRI[I%])
|
||||
END FOR
|
||||
|
||||
BSE=(SQR(8*LUNG+1)-1)/2
|
||||
STP=BSE-1
|
||||
STEPC=0
|
||||
|
||||
FOR I%=LUNG-BSE-1 TO 0 STEP -1 DO
|
||||
TRI[I%]=TRI[I%]+MAX(TRI[I%+STP],TRI[I%+STP+1])
|
||||
STEPC=STEPC+1
|
||||
IF STEPC=STP THEN
|
||||
STP=STP-1
|
||||
STEPC=0
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
PRINT(TRI[0])
|
||||
END PROGRAM
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
' version 21-06-2015
|
||||
' compile with: fbc -s console
|
||||
|
||||
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
|
||||
|
||||
' ------=< MAIN >=------
|
||||
|
||||
Dim As String ln
|
||||
Dim As Integer matrix(1 To 20, 1 To 20)
|
||||
Dim As Integer x = 1, y, s1, s2, size
|
||||
|
||||
Do
|
||||
Read ln
|
||||
ln = Trim(ln)
|
||||
If ln = "END" Then Exit Do
|
||||
For y = 1 To x
|
||||
matrix(x, y) = Val(Left(ln, 2))
|
||||
ln = Mid(ln, 4)
|
||||
Next
|
||||
x += 1
|
||||
size += 1
|
||||
Loop
|
||||
|
||||
For x = size - 1 To 1 Step - 1
|
||||
For y = 1 To x
|
||||
s1 = matrix(x + 1, y)
|
||||
s2 = matrix(x + 1, y + 1)
|
||||
If s1 > s2 Then
|
||||
matrix(x, y) += s1
|
||||
Else
|
||||
matrix(x, y) += s2
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
Print
|
||||
Print " maximum triangle path sum ="; matrix(1, 1)
|
||||
|
||||
' empty keyboard buffer
|
||||
While InKey <> "" : Wend
|
||||
Print : Print "hit any key to end program"
|
||||
Sleep
|
||||
End
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import strutils, future
|
||||
|
||||
proc solve(tri): int =
|
||||
var tri = tri
|
||||
while tri.len > 1:
|
||||
let t0 = tri.pop
|
||||
for i, t in tri[tri.high]: tri[tri.high][i] = max(t0[i], t0[i+1]) + t
|
||||
tri[0][0]
|
||||
|
||||
const data = """
|
||||
55
|
||||
94 48
|
||||
95 30 96
|
||||
77 71 26 67
|
||||
97 13 76 38 45
|
||||
07 36 79 16 37 68
|
||||
48 07 09 18 70 26 06
|
||||
18 72 79 46 59 79 29 90
|
||||
20 76 87 11 32 07 07 49 18
|
||||
27 83 58 35 71 11 25 57 29 85
|
||||
14 64 36 96 27 11 58 56 92 18 55
|
||||
02 90 03 60 48 49 41 46 33 36 47 23
|
||||
92 50 48 02 36 59 42 79 72 20 82 77 42
|
||||
56 78 38 80 39 75 02 71 66 66 01 03 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 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"""
|
||||
|
||||
echo solve data.splitLines.map((x: string) => x.split.map parseInt)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
var sum = [0]
|
||||
|
||||
ARGF.each { |line|
|
||||
var x = line.words.map{.to_n}
|
||||
sum = [
|
||||
x.first + sum.first,
|
||||
1 ..^ x.end -> map{|i| x[i] + [sum[i-1, i]].max}...,
|
||||
x.last + sum.last,
|
||||
]
|
||||
}
|
||||
|
||||
say sum.max
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
var triangle = ARGF.slurp.lines.map{.words.map{.to_n}}
|
||||
|
||||
func max_value(i=0, j=0) is cached {
|
||||
i == triangle.len && return 0
|
||||
triangle[i][j] + [max_value(i+1, j), max_value(i+1, j+1)].max
|
||||
}
|
||||
|
||||
say max_value()
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Usage: TRIANGLE | solve
|
||||
def solve:
|
||||
|
||||
# update(next) updates the input row of maxima:
|
||||
def update(next):
|
||||
. as $maxima
|
||||
| [ range(0; next|length)
|
||||
| next[.] + ([$maxima[.], $maxima[. + 1]] | max) ];
|
||||
|
||||
. as $in
|
||||
| reduce range(length -2; -1; -1) as $i
|
||||
($in[-1]; update( $in[$i] ) ) ;
|
||||
Loading…
Add table
Add a link
Reference in a new issue