Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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