Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Lambda Calculus solution in Scary category for Fizz Buzz by mingmingrr
checkio = (lambda Abs, App: (lambda eval: (lambda defs: lambda x: ''.join(chr(eval(App(
'getInt', e), s)) for e, s in eval(App('getList', App('fizzbuzz', [n for n in ['zero']
for _ in range(x) for n in [App('succ', n)]][-1])), defs)).rstrip())(dict(zip(['fix',
'compose', 'zero', 'succ', 'add', 'mod', 'divMod', 'mul16', 'from16', 'showInt', 'nil',
'cons', 'pair', 'fizz', 'buzz', 'fizzbuzzTest', 'fizzbuzz', 'getInt', 'getList'], [Abs(
'f', Abs('x', App(App('f', App('fix', 'f')), 'x'))), Abs('f', Abs('g', Abs('x', App('f',
App('g', 'x'))))), Abs('z', Abs('s', 'z')), Abs('n', Abs('z', Abs('s', App('s', 'n')))),
App('fix', Abs('rec', Abs('x', Abs('y', App(App('x', 'y'), Abs('x1', App('succ',
App(App('rec', 'x1'), 'y')))))))), Abs('x', Abs('y', App(App(App('divMod', 'x'), 'y'),
Abs('d', Abs('m', 'm'))))), Abs('x', Abs('y', App(App('y', App(App('pair', 'y'), 'y')),
Abs('y1', App(App(App('fix', Abs('rec', Abs('a', Abs('b', App(App('a', App(App('pair',
'zero'), App(App(App('fix', Abs('rec', Abs('x', Abs('y', App(App('y', 'x'), Abs('y1',
App(App('x', 'x'), Abs('x1', App(App('rec', 'x1'), 'y1'))))))))), 'y1'), 'b'))), Abs('a1',
App(App(App('rec', 'a1'), App(App('b', 'y1'), Abs('n', 'n'))), Abs('d', Abs('m',
App(App('pair', App(App('b', App('succ', 'd')), Abs('_', 'd'))), 'm')))))))))), 'x'),
'y1'))))), Abs('n', App(Abs('f', App('f', App('f', App('f', App('f', 'n'))))), Abs('n',
App(App('add', 'n'), 'n')))), App(App('compose', 'add'), 'mul16'), Abs('n', App(App('n',
App(App('cons', App('mul16', App('succ', App('succ', App('succ', 'zero'))))), 'nil')),
Abs('_', App(App(App('fix', Abs('rec', Abs('n', Abs('rs', App(App('n', 'rs'), Abs('_',
App(App(App('divMod', 'n'), App(Abs('f', App('f', App('f', App('f', App('f', App('f',
'zero')))))), App(App('compose', 'succ'), 'succ'))), Abs('d', Abs('m', App(App('rec',
'd'), App(App('cons', App(App('add', 'm'), App('mul16', App('succ', App('succ',
App('succ', 'zero')))))), 'rs'))))))))))), 'n'), 'nil')))), Abs('n', Abs('c', 'n')),
Abs('x', Abs('xs', Abs('n', Abs('c', App(App('c', 'x'), 'xs'))))), Abs('x', Abs('y',
Abs('f', App(App('f', 'x'), 'y')))), App(App('cons', App(App('from16', App('succ',
App('succ', App('succ', App('succ', 'zero'))))), App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', 'zero')))))))), App(App('cons', App(App('from16',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', 'zero'))))))),
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
App('succ', App('succ', 'zero'))))))))))), App(App('cons', App(App('from16', App('succ',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', 'zero')))))))),
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', 'zero')))))))))))), App(App('cons', App(App('from16',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
'zero')))))))), App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', App('succ', 'zero')))))))))))), 'nil')))),
App(App('cons', App(App('from16', App('succ', App('succ', App('succ', App('succ',
'zero'))))), App('succ', App('succ', 'zero')))), App(App('cons', App(App('from16',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
'zero')))))))), App('succ', App('succ', App('succ', App('succ', App('succ', 'zero'))))))),
App(App('cons', App(App('from16', App('succ', App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', 'zero')))))))), App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
'zero')))))))))))), App(App('cons', App(App('from16', App('succ', App('succ', App('succ',
App('succ', App('succ', App('succ', App('succ', 'zero')))))))), App('succ', App('succ',
App('succ', App('succ', App('succ', App('succ', App('succ', App('succ', App('succ',
App('succ', 'zero')))))))))))), 'nil')))), Abs('m', Abs('s', Abs('n', Abs('x', Abs('v',
App(App(App(App('mod', 'n'), 'm'), App(App(App('fix', Abs('rec', Abs('xs', Abs('ys',
App(App('xs', 'ys'), Abs('x', Abs('xs1', App(App('cons', 'x'), App(App('rec', 'xs1'),
'ys'))))))))), 's'), App(App('cons', App('mul16', App('succ', App('succ', 'zero')))),
App('x', 'nil')))), Abs('_', App('x', 'v')))))))), Abs('n', App(App(App(App('compose',
App(App(App('fizzbuzzTest', App('succ', App('succ', App('succ', 'zero')))), 'fizz'),
'n')), App(App(App('fizzbuzzTest', App('succ', App('succ', App('succ', App('succ',
App('succ', 'zero')))))), 'buzz'), 'n')), Abs('x', 'x')), App('showInt', 'n'))), Abs('n',
App(App('n', 0), lambda n, s: 1 + eval(App('getInt', n), s))), Abs('xs', App(App('xs',
[]), lambda x, s1: lambda xs, s2: [(x, s1)] + eval(App('getList', xs), {**s1,
**s2})))])),))((lambda it: lambda e, s: __import__('collections').deque(([r, (
next(r.append(x(s[0].y, s[1])) if callable(x) else r.append(App(x, y)) if not
isinstance(x, Abs) else q.append((x.y, {**s[1], **x.s, x.x:y})) for x in [r.pop()] for y
in [r.pop()]) if e is None else next(r.append(e) if x is None else q.append((x, s)) for x
in [s.get(e, None)]) if isinstance(e, str) else r.append(Abs(e.x, e.y, {**s, **e.s})) if
isinstance(e, Abs) else r.append(e) if not isinstance(e, App) else (q.append((None, (e,
s))), q.append((e.x, s)), q.append((e.y, s))))][0] for q, r in [([(e, s)], [])] for _ in
it.takewhile(lambda _: q, it.count(0)) for e, s in [q.pop()]),
maxlen=1).pop().pop())(__import__('itertools'))))(*[(t('Abs', 'x y s', defaults=[dict()]),
t('App', 'x y')) for t in [__import__('collections').namedtuple]][0])
Sept. 6, 2023