aboutsummaryrefslogtreecommitdiff
path: root/p99/p19.neb
diff options
context:
space:
mode:
Diffstat (limited to 'p99/p19.neb')
-rw-r--r--p99/p19.neb15
1 files changed, 15 insertions, 0 deletions
diff --git a/p99/p19.neb b/p99/p19.neb
new file mode 100644
index 0000000..09ff324
--- /dev/null
+++ b/p99/p19.neb
@@ -0,0 +1,15 @@
+; P19 Rotate a list N places to the left.
+
+(def a (list "a" "b" "c" "d" "e" "f" "g" "h"))
+
+(func rotate (lst cnt)
+ (branch
+ ((eq? 0 cnt) lst)
+ ((> cnt 0)
+ (rotate (append (rest lst) (first lst)) (- cnt 1)))
+ ((< cnt 0)
+ (rotate (prepend (most lst) (last lst)) (+ cnt 1)))))
+
+(print (->string a))
+(print (->string (rotate a 3)))
+(print (->string (rotate a (- 2))))