aboutsummaryrefslogtreecommitdiff
path: root/challenge-104/paulo-custodio/awk/ch-1.awk
blob: 097a13c92d5de1582d72da4f95facb9433a45a62 (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
#!/usr/bin/gawk

# Challenge 104
#
# TASK #1 � FUSC Sequence
# Submitted by: Mohammad S Anwar
# Write a script to generate first 50 members of FUSC Sequence. Please refer to
# OEIS for more information.
#
# The sequence defined as below:
#
# fusc(0) = 0
# fusc(1) = 1
# for n > 1:
# when n is even: fusc(n) = fusc(n / 2),
# when n is odd: fusc(n) = fusc((n-1)/2) + fusc((n+1)/2)

function fusc(n) {
    if (n==0)
        return 0
    else if (n==1)
        return 1
    else if ((n % 2)==0)    # even
        return fusc(n/2)
    else                    # odd
        return fusc((n-1)/2) + fusc((n+1)/2)
}

BEGIN {
    num = ARGV[1]
    for (i = 0; i < num; i++)
        printf "%d ", fusc(i)
    print ""

    exit 0
}