-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgeneratev2.py
executable file
Β·121 lines (96 loc) Β· 13.5 KB
/
generatev2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import random
from PIL import Image
timesub = {"0": "π", "1": "π", "2": "π", "3": "π", "4": "π", "5": "π", "6": "π", "7": "π", "8": "π", "9": "π", "10": "π", "11": "π"}
flagstring = "πππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππ¬ππππππππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππππ«·ππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππ¬ππ¬π«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππ¬πππππππππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ¬π«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·ππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έπππππππ«·πππ«Έππππππππ«·πππ¬ππ«Έπππππ«·πππππππππππππ«Έππππππ«·πππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·πππππππππππππ«Έπππππ«·ππππππ«Έππππππππ«·πππ¬ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππ«Έππππππ«·ππ«Έπππππ«·ππππ¬ππ"
def clocks_to_int(clock_string):
output = ""
for clock in clock_string:
output += timesub[clock]
return int(output, 12)
def int_to_clocks(i):
out = ""
while i != 0:
out += timesub[str(i % 12)]
i = i//12
out += "π" * (3 - len(out))
return out[::-1]
class StackGen:
def __init__(self, state=None):
self.curr_index = (0, 0)
self.program = ""
if state != None:
self.state = state
else:
self.state = [[0 for x in range(256)] for x in range(256)]
def goto(self, index):
x_diff = self.curr_index[1]-index[1]
y_diff = self.curr_index[0]-index[0]
if x_diff > 0:
self.program += "π"
if x_diff > 1:
self.program += "π" + int_to_clocks(x_diff-1)
elif x_diff < 0:
x_diff = abs(x_diff)
self.program += "π"
if x_diff > 1:
self.program += "π" + int_to_clocks(x_diff-1)
if y_diff > 0:
self.program += "π"
if y_diff > 1:
self.program += "π" + int_to_clocks(y_diff-1)
elif y_diff < 0:
y_diff = abs(y_diff)
self.program += "π"
if y_diff > 1:
self.program += "π" + int_to_clocks(y_diff-1)
self.curr_index = index
def set_cell(self, index, value):
self.goto(index)
diff = self.state[index[0]][index[1]] - value
if diff > 0:
if diff > 10:
self.program += "π"
if diff > 0:
self.program += "π" + int_to_clocks(diff-1)
else:
self.program += "π"*diff
elif diff < 0:
diff = abs(diff)
if diff > 10:
self.program += "π"
if diff > 0:
self.program += "π" + int_to_clocks(diff-1)
else:
self.program += "π"*diff
def print_cell(self, index):
self.goto(index)
self.program += "π¬"
def write_state(self, arr):
for row in range(len(arr)):
for col in range(len(arr[row])):
if arr[row][col] > 0:
self.set_cell((row, col), arr[row][col])
if row == 125 and col == 120:
self.set_cell((0, 0), 0)
self.set_cell((0, 1), 0)
self.set_cell((0, 2), 0)
self.goto((0, 0))
self.program += flagstring
return self.program
turing = Image.open("turing.png").convert('L')
flag = Image.open("flag.png").convert('L')
new_arr = []
for y in range(turing.height):
tmp = []
for x in range(turing.width):
tmp.append(turing.getpixel((x, y)))
new_arr.append(tmp)
stack = StackGen(new_arr)
new_arr = []
for y in range(flag.height):
tmp = []
for x in range(flag.width):
tmp.append(flag.getpixel((x, y)))
new_arr.append(tmp)
with open("program.txt", "w") as f:
f.write(stack.write_state(new_arr))