Lambdas & Printf
Task I
Ok, another great week and I was glad that it did not require too much effort on my part, as I’ve started participating in AoC, AoCyber, and also doing Gabor Szabo’s 2022 December CI Challenge. Thus without further ado, let’s get into the code.
#!/usr/bin/env python3
def bit_str(n):
limit = 1 << n
for i in range(limit):
value = i
width = f'0{n}'
print(f'{value:{width}b}')
if __name__ == "__main__":
bit_str(2)
print('\n')
bit_str(3)
It was a very straightforward implementation using Python & Go’s mini string formatting language..
Task II
For this task, it was simply a matter of giving Python’s builtin sort()
function, an anonymous comparison function, in which we compare the
difference of each of the following ordinal values of the individual
chars in words
list.
#!/usr/bin/env python3
def odd_str(_list):
def diff(x): return [ord(x[i]) - ord(x[i - 1]) for i in range(1, len(x))]
_list.sort(key=diff)
fst = _list[0]
snd = _list[1]
last = _list[-1]
return fst if diff(fst) != diff(snd) else last
def main():
words = ["adc", "wzy", "abc"]
print(odd_str(words))
if __name__ == "__main__":
exit(main())
Happy hacking!
P.S: I originally had a lambda function for diff()
a la:
diff = lambda x: [ord(x[i]) = ord(x[i - 1]) for i in range(1, len(x))]
However, my linter was screaming at me for not following some weird PEP-8 rule.