Homemade_Keeloq_I
Challenge
Solution
Bit
Silence (OFF)
Porteuse (ON)
Total
with open('obscure_portal.sub', 'r') as f:
lines = [line for line in f.read().splitlines() if line.startswith('RAW_Data')]
data = [[int(n) for n in line.split(': ', 1)[1].split(' ')] for line in lines]
def near(n, of, epsilon):
return 0 <= abs(n - of) < epsilon
def parse_raw(raw: list[int]):
epsilon = 100
binary = ''
i = 0
while i < len(raw)-1:
if near(raw[i], -700, epsilon) and near(raw[i+1], 1100, epsilon):
binary += '1'
i += 1
elif near(raw[i], -1400, epsilon) and near(raw[i+1], 400, epsilon):
binary += '0'
i += 1
i += 1
return binary
def main():
for raw in data:
binary = parse_raw(raw)
print(f'({len(binary)}) {binary}')
main()
Mis Γ jour