1 | // Arrange three 1s, three 2s, ..., three 9s in sequence so that for all |
---|
2 | // i in [1, 9] there are exactly i numbers between successive occurrences |
---|
3 | // of i. An example of such a sequence is 1, 9, 1, 2, 1, 8, 2, 4, 6, 2, |
---|
4 | // 7, 9, 4, 5, 8, 6, 3, 4, 7, 5, 3, 9, 6, 8, 3, 5, 7. |
---|
5 | // (http://people.csail.mit.edu/namin/bits/reasoned-schemer/sequence-program.scm.html) |
---|
6 | |
---|
7 | $module Sequence; |
---|
8 | |
---|
9 | $use StdIO; |
---|
10 | |
---|
11 | $func Main = e; |
---|
12 | |
---|
13 | Main, { |
---|
14 | X X X X X X X X X X X X X X X X X X X X X X X X X X X :: ex, |
---|
15 | ex : e91 X e92 X e93 X e94, e92 : s s s s s s s s s, e93 : s s s s s s s s s, |
---|
16 | e91 9 e92 9 e93 9 e94 :: ex, |
---|
17 | ex : e81 X e82 X e83 X e84, e82 : s s s s s s s s, e83 : s s s s s s s s, |
---|
18 | e81 8 e82 8 e83 8 e84 :: ex, |
---|
19 | ex : e71 X e72 X e73 X e74, e72 : s s s s s s s, e73 : s s s s s s s, |
---|
20 | e71 7 e72 7 e73 7 e74 :: ex, |
---|
21 | ex : e61 X e62 X e63 X e64, e62 : s s s s s s, e63 : s s s s s s, |
---|
22 | e61 6 e62 6 e63 6 e64 :: ex, |
---|
23 | ex : e51 X e52 X e53 X e54, e52 : s s s s s, e53 : s s s s s, |
---|
24 | e51 5 e52 5 e53 5 e54 :: ex, |
---|
25 | ex : e41 X e42 X e43 X e44, e42 : s s s s, e43 : s s s s, |
---|
26 | e41 4 e42 4 e43 4 e44 :: ex, |
---|
27 | ex : e31 X e32 X e33 X e34, e32 : s s s, e33 : s s s, |
---|
28 | e31 3 e32 3 e33 3 e34 :: ex, |
---|
29 | ex : e21 X e22 X e23 X e24, e22 : s s, e23 : s s, |
---|
30 | e21 2 e22 2 e23 2 e24 :: ex, |
---|
31 | ex : e11 X e12 X e13 X e14, e12 : s, e13 : s, |
---|
32 | e11 1 e12 1 e13 1 e14 :: ex, |
---|
33 | <PrintLn ex>, $fail;; }; |
---|