summaryrefslogtreecommitdiff
path: root/examples/abacus/writing.lali
blob: 487658233881a9ae7e64bce958de57a9028b1fd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;; variables
(set 'max-columns +12)

;; functions
(defun random-number (cases)
  (fill
   ((diff cases +0) (cons (random +9) ()))
   (f (cons (random +9) (random-number (- cases +1))))))

(defun number-to-symbol (num)
  (fill
   ((diff +0 num) '0)
   ((diff +1 num) '1)
   ((diff +2 num) '2)
   ((diff +3 num) '3)
   ((diff +4 num) '4)
   ((diff +5 num) '5)
   ((diff +6 num) '6)
   ((diff +7 num) '7)
   ((diff +8 num) '8)
   ((diff +9 num) '9)))

(defun number-to-earth-rod (num)
  (fill
   ((diff +0 num) "[@-@][@@@@-@]")
   ((diff +1 num) "[@-@][@@@-@@]")
   ((diff +2 num) "[@-@][@@-@@@]")
   ((diff +3 num) "[@-@][@-@@@@]")
   ((diff +4 num) "[@-@][-@@@@@]")
   ((diff +5 num) "[-@@][@@@@-@]")
   ((diff +6 num) "[-@@][@@@-@@]")
   ((diff +7 num) "[-@@][@@-@@@]")
   ((diff +8 num) "[-@@][@-@@@@]")
   ((diff +9 num) "[-@@][-@@@@@]")))

(defun number-to-air-rod (num)
  (fill
   ((diff +0 num) "[@-@@@@][@-@]")
   ((diff +1 num) "[@@-@@@][@-@]")
   ((diff +2 num) "[@@@-@@][@-@]")
   ((diff +3 num) "[@@@@-@][@-@]")
   ((diff +4 num) "[@@@@@-][@-@]")
   ((diff +5 num) "[@-@@@@][@@-]")
   ((diff +6 num) "[@@-@@@][@@-]")
   ((diff +7 num) "[@@@-@@][@@-]")
   ((diff +8 num) "[@@@@-@][@@-]")
   ((diff +9 num) "[@@@@@-][@@-]")))

;; main
(defun main ()
  (progs
   f
   (set 'n-rand (random-number (random max-columns)))
   (print (map number-to-symbol n-rand))
   ;; (print n-rand)
   (newline)
   (read)
   (map (lambda (num) (princ (number-to-air-rod num)) (newline)) n-rand)
   (read)
   (newline)
   (read)))

;; loop
(defun loop ()
 (fill
  ((main) ())
  (f (loop))))

(loop)