def part2(start): circle = nums_1m(nums(start)) for i in range(10_000): circle = nth(iterate(move, circle), 1000) print(i)
def labels_after_1(circle): where = circle.index(1) rotated = circle[where + 1:] + circle[:where] return strs(rotated) def test_move(): start = nums("389125467") assert labels_after_1(nth(iterate(move, start), 10)) == "92658374" assert labels_after_1(nth(iterate(move, start), 100)) == "67384529" if __name__ == '__main__': start = nums("469217538") ans = labels_after_1(nth(iterate(move, start), 100)) print(f"Part 1: labels after 1 are {ans}") # Part 2: let's try just running it. def nums_1m(s, n=1_000_000): start = nums(s) next1 = max(start) + 1 start.extend(range(next1, next1 + (n - len(start)))) return start def test_nums_1m(): n1m = nums_1m("469217538") assert len(n1m) == 1_000_000
def test_move(): start = nums("389125467") assert labels_after_1(nth(iterate(move, start), 10)) == "92658374" assert labels_after_1(nth(iterate(move, start), 100)) == "67384529"
def transform(subject, loop_size): return nth(transformed_values(subject), loop_size)
def part1(start): return nth(memory_game(start), 2020 - 1)
def part1(cells): cells6 = nth(generations(cells), 6) return len(cells6)
def partn(cells): cells6 = nth(iterate(next_genn_targeted, cells), 6) return len(cells6)
import os import time import channel import decode import encode import helpers import interleave import lookup_tables import simcore FRAME_LEN = 1000 EBN0S = [0.1, 0.2, 0.3, 0.6, 1.0, 2.0] COUNT = 10 permutation = helpers.nth(permutations(range(FRAME_LEN)), 101) make_permutation = lambda len: helpers.nth(permutations(range(len)), 101) interleaver = interleave.Interleaver(permutation) def pass_decode(sequence, ebn0): return list(helpers.demodulaten(sequence)) def map_decode(sequence, ebn0): rel = channel._decibel_to_ratio(ebn0) * 2 return decode.binary_maximum_a_posteriori(lookup_tables.abrantes_convo213, sequence, rel, True) def make_turbo_decode(k): def turbo_decode(sequence, ebn0):
from itertools import permutations import channel import decode import encode import helpers import interleave import lookup_tables import simcore EBN0S = [0.01, 0.25, 0.5, 0.75, 1.0, 1.5, 2.0] make_permutation = lambda n, k=101: helpers.nth(permutations(range(n)), k) LENGTH = 1000 R = [1, 10, 50, 50, 50, 50, 50] I = 2 def pass_decode(sequence, ebn0): return list(helpers.demodulaten(sequence)) def map_decode(sequence, ebn0): rel = channel._decibel_to_ratio(ebn0) * 2 return decode.binary_maximum_a_posteriori(lookup_tables.abrantes_convo213, sequence, rel, True) def make_turbo_decode(k, table, interleaver): def turbo_decode(sequence, ebn0): # rel = channel._decibel_to_ratio(ebn0) * 2 rel = ebn0 * 2
if __name__ == '__main__': # Test running_count; you can add your own test cases print('\nTesting running_count') for i in running_count('bananastand', lambda x: x in 'aeiou'): # is vowel print(i, end=' ') print() for i in running_count(hide('bananastand'), lambda x: x in 'aeiou'): # is vowel print(i, end=' ') print() print(nth(running_count(primes(), lambda x: x % 10 == 3), 1000)) # Test stop_when; you can add your own test cases print('\nTesting stop_when') for c in stop_when('abcdefghijk', lambda x: x >= 'd'): print(c, end='') print() for c in stop_when(hide('abcdefghijk'), lambda x: x >= 'd'): print(c, end='') print('\n') print(nth(stop_when(primes(), lambda x: x > 100000), 100)) # Test group_when; you can add your own test cases print('\nTesting yield_and_skip')