on 3fae695 help sign in
94 lines 2.4 kB history raw
1---
2title: Python
3sort: 1
4next: true
5---
7# Python
9From [James Tauber](https://github.com/jtauber/pynock/blob/master/nock.py):
11```
12#!/usr/bin/env python3
14# []
15def l(*lst):
16 if len(lst) == 1:
17 return(lst[0], 0)
18 if len(lst) == 2:
19 return lst
20 else:
21 return (lst[0], l(*lst[1:]))
23# *
24def nock(noun):
25 return tar(noun)
27# ?
28def wut(noun):
29 if isinstance(noun, int):
30 return 1
31 else:
32 return 0
35# +
36def lus(noun):
37 if isinstance(noun, int):
38 return 1 + noun
39 else:
40 return noun
43# =
44def tis(noun):
45 if noun[0] == noun[1]:
46 return 0
47 else:
48 return 1
51# /
52def slot(noun):
53 if noun[0] == 1:
54 return noun[1]
55 elif noun[0] == 2:
56 return noun[1][0]
57 elif noun[0] == 3:
58 return noun[1][1]
59 elif noun[0] % 2 == 0:
60 return slot((2, slot((noun[0] // 2, noun[1]))))
61 elif noun[0] % 2 == 1:
62 return slot((3, slot(((noun[0] - 1) // 2, noun[1]))))
65def tar(noun):
66 if isinstance(noun[1][0], int):
67 if noun[1][0] == 0:
68 return slot((noun[1][1], noun[0]))
69 elif noun[1][0] == 1:
70 return noun[1][1]
71 elif noun[1][0] == 2:
72 return nock((nock((noun[0], noun[1][1][0])), nock((noun[0], noun[1][1][1]))))
73 elif noun[1][0] == 3:
74 return wut(nock((noun[0], noun[1][1])))
75 elif noun[1][0] == 4:
76 return lus(nock((noun[0], noun[1][1])))
77 elif noun[1][0] == 5:
78 return tis(nock((noun[0], noun[1][1])))
79 elif noun[1][0] == 6:
80 return nock(l(noun[0], 2, (0, 1), 2, l(1, noun[1][1][1][0], noun[1][1][1][1]), (1, 0), 2, l(1, 2, 3), (1, 0), 4, 4, noun[1][1][0]))
81 elif noun[1][0] == 7:
82 return nock(l(noun[0], 2, noun[1][1][0], 1, noun[1][1][1]))
83 elif noun[1][0] == 8:
84 return nock(l(noun[0], 7, l(l(7, (0, 1), noun[1][1][0]), 0, 1), noun[1][1][1]))
85 elif noun[1][0] == 9:
86 return nock(l(noun[0], 7, noun[1][1][1], l(2, (0, 1), (0, noun[1][1][0]))))
87 elif noun[1][0] == 10:
88 if isinstance(noun[1][1][0], int):
89 return nock((noun[0], noun[1][1][1]))
90 else:
91 return nock(l(noun[0], 8, noun[1][1][0][1], 7, (0, 3), noun[1][1][1][0]))
92 else:
93 return (nock((noun[0], noun[1][0])), nock((noun[0], noun[1][1])))
94```