aboutsummaryrefslogtreecommitdiff
path: root/challenge-119/paulo-custodio/bc/ch-2.bc
blob: 3c948ee0a623823509fd6fcaa738323f114c1a87 (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
#!/usr/bin/bc -ql

/*
Challenge 119

TASK #2 - Sequence without 1-on-1
Submitted by: Cheok-Yin Fung
Write a script to generate sequence starting at 1. Consider the increasing
sequence of integers which contain only 1's, 2's and 3's, and do not have any
doublets of 1's like below. Please accept a positive integer $N and print the
$Nth term in the generated sequence.

1, 2, 3, 12, 13, 21, 22, 23, 31, 32, 33, 121, 122, 123, 131,

Example
Input: $N = 5
Output: 13

Input: $N = 10
Output: 32

Input: $N = 60
Output: 2223
*/

scale = 0
num = read()
seq = 0

define num_ok(n) {
    auto last_digit, digit, num
    num = n
    if (num <= 0) return 0;
    while (num > 0) {
        last_digit = digit
        digit = num % 10
        num = num / 10
        if (digit < 1 || digit > 3 || (digit == 1 && last_digit == 1))
            return 0;
    }
    return 1;
}

define next_seq() {
    while (1) {
        seq = seq+1
        if (num_ok(seq)) return seq
    }
}

for (i = 1; i <= num; i++)
    seq = next_seq()

seq
quit