-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfizzbuzz.echo
More file actions
49 lines (44 loc) · 877 Bytes
/
Copy pathfizzbuzz.echo
File metadata and controls
49 lines (44 loc) · 877 Bytes
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
; FizzBuzz — classic interview warm-up.
; Run: xo run examples/algos/fizzbuzz.echo
/ std/io
/ std/str
; Kind codes: 0 = number, 1 = fizz, 2 = buzz, 3 = fizzbuzz
$ fizzbuzz_kind = (n) {
? n % 15 == 0 {
^ 3
}
? n % 3 == 0 {
^ 1
}
? n % 5 == 0 {
^ 2
}
^ 0
}
; Run FizzBuzz for 1..limit inclusive (side-effect prints).
$ fizzbuzz = (limit) {
~ i = 1
* i <= limit {
| fizzbuzz_kind(i) {
0 {
io.print(str.from_int(i))
}
1 {
io.print("fizz")
}
2 {
io.print("buzz")
}
3 {
io.print("fizzbuzz")
}
: {
io.print(str.from_int(i))
}
}
~ i = i + 1
}
^
}
fizzbuzz(20)
\ fizzbuzz, fizzbuzz_kind