From f85b2134bd3444679bd52c67a97467792694141d Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 13 May 2015 11:02:45 -0400 Subject: [PATCH] rosettacode: add 10 tasks (mainly loops) Signed-off-by: Jean Privat --- examples/rosettacode/loops_break.nit | 16 +++++ examples/rosettacode/loops_continue.nit | 18 ++++++ examples/rosettacode/loops_do_while.nit | 16 +++++ examples/rosettacode/loops_downward_for.nit | 13 ++++ examples/rosettacode/loops_for.nit | 14 +++++ examples/rosettacode/loops_infinite.nit | 11 ++++ examples/rosettacode/loops_n_plus_one_half.nit | 19 ++++++ examples/rosettacode/loops_while.nit | 15 +++++ examples/rosettacode/read_entire_file.nit | 13 ++++ examples/rosettacode/tree_traversal.nit | 75 ++++++++++++++++++++++++ tests/exec.skip | 2 + tests/sav/loops_break.res | 31 ++++++++++ tests/sav/loops_continue.res | 2 + tests/sav/loops_do_while.res | 6 ++ tests/sav/loops_downward_for.res | 11 ++++ tests/sav/loops_for.res | 5 ++ tests/sav/loops_n_plus_one_half.res | 2 + tests/sav/loops_while.res | 11 ++++ tests/sav/tree_traversal.res | 40 +++++++++++++ 19 files changed, 320 insertions(+) create mode 100644 examples/rosettacode/loops_break.nit create mode 100644 examples/rosettacode/loops_continue.nit create mode 100644 examples/rosettacode/loops_do_while.nit create mode 100644 examples/rosettacode/loops_downward_for.nit create mode 100644 examples/rosettacode/loops_for.nit create mode 100644 examples/rosettacode/loops_infinite.nit create mode 100644 examples/rosettacode/loops_n_plus_one_half.nit create mode 100644 examples/rosettacode/loops_while.nit create mode 100644 examples/rosettacode/read_entire_file.nit create mode 100644 examples/rosettacode/tree_traversal.nit create mode 100644 tests/sav/loops_break.res create mode 100644 tests/sav/loops_continue.res create mode 100644 tests/sav/loops_do_while.res create mode 100644 tests/sav/loops_downward_for.res create mode 100644 tests/sav/loops_for.res create mode 100644 tests/sav/loops_n_plus_one_half.res create mode 100644 tests/sav/loops_while.res create mode 100644 tests/sav/tree_traversal.res diff --git a/examples/rosettacode/loops_break.nit b/examples/rosettacode/loops_break.nit new file mode 100644 index 0000000..b34d480 --- /dev/null +++ b/examples/rosettacode/loops_break.nit @@ -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 index 0000000..805f05d --- /dev/null +++ b/examples/rosettacode/loops_continue.nit @@ -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 index 0000000..0e02e25 --- /dev/null +++ b/examples/rosettacode/loops_do_while.nit @@ -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 index 0000000..c5b739e --- /dev/null +++ b/examples/rosettacode/loops_downward_for.nit @@ -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 index 0000000..712658d --- /dev/null +++ b/examples/rosettacode/loops_for.nit @@ -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 index 0000000..75a1a70 --- /dev/null +++ b/examples/rosettacode/loops_infinite.nit @@ -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 index 0000000..ebd32f3 --- /dev/null +++ b/examples/rosettacode/loops_n_plus_one_half.nit @@ -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 index 0000000..9493d00 --- /dev/null +++ b/examples/rosettacode/loops_while.nit @@ -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 index 0000000..57e0345 --- /dev/null +++ b/examples/rosettacode/read_entire_file.nit @@ -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 index 0000000..dcea146 --- /dev/null +++ b/examples/rosettacode/tree_traversal.nit @@ -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 diff --git a/tests/exec.skip b/tests/exec.skip index 49599a2..42fe68f 100644 --- a/tests/exec.skip +++ b/tests/exec.skip @@ -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 index 0000000..13600be --- /dev/null +++ b/tests/sav/loops_break.res @@ -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 index 0000000..0865d3f --- /dev/null +++ b/tests/sav/loops_continue.res @@ -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 index 0000000..b414108 --- /dev/null +++ b/tests/sav/loops_do_while.res @@ -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 index 0000000..30b148d --- /dev/null +++ b/tests/sav/loops_downward_for.res @@ -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 index 0000000..9a639e0 --- /dev/null +++ b/tests/sav/loops_for.res @@ -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 index 0000000..52f7392 --- /dev/null +++ b/tests/sav/loops_n_plus_one_half.res @@ -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 index 0000000..10dca53 --- /dev/null +++ b/tests/sav/loops_while.res @@ -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 index 0000000..7c14034 --- /dev/null +++ b/tests/sav/tree_traversal.res @@ -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 -- 1.7.9.5