aboutsummaryrefslogtreecommitdiff
path: root/challenge-069/paulo-custodio/python/ch-2.py
blob: d5fca175646dd142970dacc2d2b6eac52d28d807 (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
#!/usr/bin/env python3

# Challenge 069
#
# TASK #2 > 0/1 String
# Submitted by: Mohammad S Anwar
# A 0/1 string is a string in which every character is either 0 or 1.
#
# Write a script to perform switch and reverse to generate S30 as described
# below:
#
# switch:
#
# Every 0 becomes 1 and every 1 becomes 0. For example, "101" becomes "010".
#
# reverse:
#
# The string is reversed. For example, "001" becomes "100".
# UPDATE (2020-07-13 17:00:00):
# It was brought to my notice that generating S1000 string would be nearly
# impossible. So I have decided to lower it down to S30. Please follow the rule
# as below:
#
# S0 = ""
# S1 = "0"
# S2 = "001"
# S3 = "0010011"
#
# SN = SN-1 + "0" + switch(reverse(SN-1))

# Note: modified to S20, as S30 was taking forever

N = 20

def bits_switch(s):
    return s.translate(str.maketrans('01', '10'))

def bits_reverse(s):
    return ''.join(reversed(s))

prev = ""
s = ""
for _ in range(1, N + 1):
    s = prev + "0" + bits_switch(bits_reverse(prev))
    prev = s

print(s)