Skip to content

Commit 05ecbdb

Browse files
committed
Add some Dana programs
1 parent 499c326 commit 05ecbdb

File tree

4 files changed

+93
-0
lines changed

4 files changed

+93
-0
lines changed

dana/programs/bsort.dana

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
def main
2+
3+
def bsort: n as int, x as int []
4+
5+
def swap: x y as ref int
6+
var t is int
7+
t := x
8+
x := y
9+
y := t
10+
11+
var changed is byte
12+
var i is int
13+
14+
loop:
15+
changed := false
16+
i := 0
17+
loop:
18+
if i < n-1:
19+
if x[i] > x[i+1]:
20+
swap: x[i], x[i+1]
21+
changed := true
22+
i := i+1
23+
else: break
24+
if not changed: break
25+
26+
def writeArray: msg as byte [], n as int, x as int []
27+
var i is int
28+
29+
writeString: msg
30+
i := 0
31+
loop:
32+
if i < n:
33+
if i > 0: writeString: ", "
34+
writeInteger: x[i]
35+
i := i+1
36+
else: break
37+
writeString: "\n"
38+
39+
var seed i is int
40+
var x is int [16]
41+
42+
seed := 65
43+
i := 0
44+
loop:
45+
if i < 16:
46+
seed := (seed * 137 + 220 + i) % 101
47+
x[i] := seed
48+
i := i+1
49+
else: break
50+
writeArray: "Initial array: ", 16, x
51+
bsort: 16 x
52+
writeArray: "Sorted array: ", 16, x

dana/programs/hanoi.dana

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
def solve
2+
3+
def hanoi: rings as int, source target auxiliary as byte []
4+
5+
def move: source target as byte []
6+
writeString: "Moving from "
7+
writeString: source
8+
writeString: " to "
9+
writeString: target
10+
writeString: ".\n"
11+
12+
if rings >= 1:
13+
hanoi: rings-1, source, auxiliary, target
14+
move: source, target
15+
hanoi: rings-1, auxiliary, target, source
16+
17+
var numberOfRings is int
18+
19+
writeString: "Rings: "
20+
numberOfRings := readInteger()
21+
hanoi: numberOfRings, "left", "right", "middle"

dana/programs/hello.dana

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def hello ()
2+
writeString: "Hello world!\n"

dana/programs/strrev.dana

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def main
2+
3+
var r is byte [32]
4+
5+
def reverse: s as byte []
6+
var i l is int
7+
8+
l := strlen(s)
9+
i := 0
10+
loop:
11+
if i < l:
12+
r[i] := s[l-i-1]
13+
i := i+1
14+
else: break
15+
r[i] := '\0'
16+
17+
reverse: "\n!dlrow olleH"
18+
writeString: r

0 commit comments

Comments
 (0)