rosettacode: add 10 tasks (mainly loops)
authorJean Privat <jean@pryen.org>
Wed, 13 May 2015 15:02:45 +0000 (11:02 -0400)
committerJean Privat <jean@pryen.org>
Wed, 13 May 2015 15:02:45 +0000 (11:02 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

19 files changed:
examples/rosettacode/loops_break.nit [new file with mode: 0644]
examples/rosettacode/loops_continue.nit [new file with mode: 0644]
examples/rosettacode/loops_do_while.nit [new file with mode: 0644]
examples/rosettacode/loops_downward_for.nit [new file with mode: 0644]
examples/rosettacode/loops_for.nit [new file with mode: 0644]
examples/rosettacode/loops_infinite.nit [new file with mode: 0644]
examples/rosettacode/loops_n_plus_one_half.nit [new file with mode: 0644]
examples/rosettacode/loops_while.nit [new file with mode: 0644]
examples/rosettacode/read_entire_file.nit [new file with mode: 0644]
examples/rosettacode/tree_traversal.nit [new file with mode: 0644]
tests/exec.skip
tests/sav/loops_break.res [new file with mode: 0644]
tests/sav/loops_continue.res [new file with mode: 0644]
tests/sav/loops_do_while.res [new file with mode: 0644]
tests/sav/loops_downward_for.res [new file with mode: 0644]
tests/sav/loops_for.res [new file with mode: 0644]
tests/sav/loops_n_plus_one_half.res [new file with mode: 0644]
tests/sav/loops_while.res [new file with mode: 0644]
tests/sav/tree_traversal.res [new file with mode: 0644]

diff --git a/examples/rosettacode/loops_break.nit b/examples/rosettacode/loops_break.nit
new file mode 100644 (file)
index 0000000..b34d480
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/Break
+#
+# SEE: http://rosettacode.org/wiki/Loops/Break
+module loops_break
+
+loop
+       var a = 20.rand
+       print a
+       if a == 10 then break
+       print 20.rand
+end
diff --git a/examples/rosettacode/loops_continue.nit b/examples/rosettacode/loops_continue.nit
new file mode 100644 (file)
index 0000000..805f05d
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/Continue
+#
+# SEE: http://rosettacode.org/wiki/Loops/Continue
+module loops_continue
+
+for i in [1..10] do
+       printn i
+       if i % 5 == 0 then
+               printn "\n"
+               continue
+       end
+       printn ", "
+end
diff --git a/examples/rosettacode/loops_do_while.nit b/examples/rosettacode/loops_do_while.nit
new file mode 100644 (file)
index 0000000..0e02e25
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/Do-while
+#
+# SEE: http://rosettacode.org/wiki/Loops/Do-while
+module loops_do_while
+
+var val = 0
+loop
+       val += 1
+       print val
+       if val % 6 == 0 then break
+end
diff --git a/examples/rosettacode/loops_downward_for.nit b/examples/rosettacode/loops_downward_for.nit
new file mode 100644 (file)
index 0000000..c5b739e
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/Downward for
+#
+# SEE: http://rosettacode.org/wiki/Loops/Downward_for
+module loops_downward_for
+
+for i in [0..10].reverse_iterator do
+       print i
+end
diff --git a/examples/rosettacode/loops_for.nit b/examples/rosettacode/loops_for.nit
new file mode 100644 (file)
index 0000000..712658d
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/For
+#
+# SEE: http://rosettacode.org/wiki/Loops/For
+module loops_for
+
+for i in [1..5] do
+       for j in [1..i] do printn "*"
+       print ""
+end
diff --git a/examples/rosettacode/loops_infinite.nit b/examples/rosettacode/loops_infinite.nit
new file mode 100644 (file)
index 0000000..75a1a70
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/Infinite
+#
+# SEE: http://rosettacode.org/wiki/Loops/Infinite
+module loops_infinite
+
+loop print "SPAM"
diff --git a/examples/rosettacode/loops_n_plus_one_half.nit b/examples/rosettacode/loops_n_plus_one_half.nit
new file mode 100644 (file)
index 0000000..ebd32f3
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/n + 1/2
+#
+# SEE: http://rosettacode.org/wiki/Loops/N_plus_one_half
+module loops_n_plus_one_half
+
+for i in [0..10] do
+       printn i
+       if i == 10 then break
+       printn ", "
+end
+print ""
+
+# Here the idiomatic version using `join`
+print([0..10].join(", "))
diff --git a/examples/rosettacode/loops_while.nit b/examples/rosettacode/loops_while.nit
new file mode 100644 (file)
index 0000000..9493d00
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Loops/While
+#
+# SEE: http://rosettacode.org/wiki/Loops/While
+module loops_while
+
+var i = 2014
+while i > 0 do
+       print i
+       i /= 2
+end
diff --git a/examples/rosettacode/read_entire_file.nit b/examples/rosettacode/read_entire_file.nit
new file mode 100644 (file)
index 0000000..57e0345
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Read entire file
+#
+# SEE: http://rosettacode.org/wiki/Read_entire_file
+module read_entire_file
+
+var filename = "/etc/issue"
+var content  = filename.to_path.read_all
+print content
diff --git a/examples/rosettacode/tree_traversal.nit b/examples/rosettacode/tree_traversal.nit
new file mode 100644 (file)
index 0000000..dcea146
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Tree traversal
+#
+# SEE: http://rosettacode.org/wiki/Tree_traversal
+module tree_traversal
+
+class Node
+       var value: Int
+       var left: nullable Node
+       var right: nullable Node
+
+       fun preorder
+       do
+               print value
+               var l = left
+               if l != null then l.preorder
+               var r = right
+               if r != null then r.preorder
+       end
+
+       fun inorder
+       do
+               var l = left
+               if l != null then l.inorder
+               print value
+               var r = right
+               if r != null then r.inorder
+       end
+
+       fun postorder
+       do
+               var l = left
+               if l != null then l.postorder
+               var r = right
+               if r != null then r.postorder
+               print value
+       end
+
+       fun levelorder
+       do
+               var q = new List[Node]
+               q.add self
+               while q.not_empty do
+                       var n = q.shift
+                       print n.value
+                       var l = n.left
+                       if l != null then q.push l
+                       var r = n.right
+                       if r != null then q.push r
+               end
+       end
+end
+
+var tree = new Node(1,
+       new Node(2,
+               new Node(4,
+                       new Node(7)),
+               new Node(5)),
+       new Node(3,
+               new Node(6,
+                       new Node(8),
+                       new Node(9))))
+
+print "preorder:"
+tree.preorder
+print "inorder:"
+tree.inorder
+print "postorder:"
+tree.postorder
+print "levelorder:"
+tree.levelorder
index 49599a2..42fe68f 100644 (file)
@@ -4,3 +4,5 @@ websocket_server
 converter
 show_basedir
 langannot
+loops_infinite
+read_entire_file
diff --git a/tests/sav/loops_break.res b/tests/sav/loops_break.res
new file mode 100644 (file)
index 0000000..13600be
--- /dev/null
@@ -0,0 +1,31 @@
+16
+7
+15
+15
+18
+3
+6
+15
+5
+11
+9
+12
+7
+10
+19
+18
+12
+14
+2
+12
+0
+4
+2
+16
+3
+8
+2
+2
+19
+4
+10
diff --git a/tests/sav/loops_continue.res b/tests/sav/loops_continue.res
new file mode 100644 (file)
index 0000000..0865d3f
--- /dev/null
@@ -0,0 +1,2 @@
+1, 2, 3, 4, 5
+6, 7, 8, 9, 10
diff --git a/tests/sav/loops_do_while.res b/tests/sav/loops_do_while.res
new file mode 100644 (file)
index 0000000..b414108
--- /dev/null
@@ -0,0 +1,6 @@
+1
+2
+3
+4
+5
+6
diff --git a/tests/sav/loops_downward_for.res b/tests/sav/loops_downward_for.res
new file mode 100644 (file)
index 0000000..30b148d
--- /dev/null
@@ -0,0 +1,11 @@
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
+0
diff --git a/tests/sav/loops_for.res b/tests/sav/loops_for.res
new file mode 100644 (file)
index 0000000..9a639e0
--- /dev/null
@@ -0,0 +1,5 @@
+*
+**
+***
+****
+*****
diff --git a/tests/sav/loops_n_plus_one_half.res b/tests/sav/loops_n_plus_one_half.res
new file mode 100644 (file)
index 0000000..52f7392
--- /dev/null
@@ -0,0 +1,2 @@
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
diff --git a/tests/sav/loops_while.res b/tests/sav/loops_while.res
new file mode 100644 (file)
index 0000000..10dca53
--- /dev/null
@@ -0,0 +1,11 @@
+2014
+1007
+503
+251
+125
+62
+31
+15
+7
+3
+1
diff --git a/tests/sav/tree_traversal.res b/tests/sav/tree_traversal.res
new file mode 100644 (file)
index 0000000..7c14034
--- /dev/null
@@ -0,0 +1,40 @@
+preorder:
+1
+2
+4
+7
+5
+3
+6
+8
+9
+inorder:
+7
+4
+2
+5
+1
+8
+6
+9
+3
+postorder:
+7
+4
+5
+2
+8
+9
+6
+3
+1
+levelorder:
+1
+2
+3
+4
+5
+6
+7
+8
+9