-
Notifications
You must be signed in to change notification settings - Fork 0
/
wichteln_2022_public.py
143 lines (111 loc) · 3.5 KB
/
wichteln_2022_public.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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/usr/bin/python3
import copy
import random
import base64
import uuid
wichtler_liste = ["A", "B", "C", "D", "E", "F", "G"]
forbidden = [
("A", "G"),
("B", "D"),
("C", "E"),
]
print("Wichtler:\n", wichtler_liste)
print("Verbotene Kombinationen:\n", forbidden, "\n\n\n")
part_one = """<!doctype html>
<html lang="de">
<head>
<title>Weichnachtswichteln</title>
<meta name="robots" content="noindex, nofollow" />
<meta charset='utf-8' />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel='stylesheet' type='text/css' href='../style/hfstyle.css' />
</head>
<body>
<div id='start' class='content'>
<h1><span lang=de>Weichnachtswichteln</span></h1></div>
<div id='one' class='content'>
<h2>Hallo """
part_three = """!</h2>
<p>Du sollst <b>"""
part_five = """</b> bewichteln!</p>
<p>Diese Seite ist so erstellt worden, dass nur Du weißt wen Du bewichteln sollst (auch der Autor weiß es nicht).</p>
</div>
<div id='two' class='content'>
<h2>Alle Teilnehmer</h2>
<p>Wer macht alles mit:</p>
<ul>"""
part_six = """"""
for person in wichtler_liste:
part_six += "<li>" + person + "</li>\n"
part_seven = """</ul>
<h3>Verbotene Kombinationen waren:</h3>
<p>(Können sich also gegenseitig nicht ziehen)</p>
<ul>
"""
for kombi in forbidden:
part_seven += f"<li> {kombi[0]} ⇋ {kombi[1]} </li>\n"
part_eight = """
</ul>
<p>Der Quellcode ist hier abgelegt <a href="https://github.com/chainsawbeaver/weihnachtswichteln/blob/main/wichteln_2022_public.py">github.com</a></p>
</div>
<div id='footer'>
• 2022-12-12 •
</div>
</body>
</html>
"""
def function2(wichtler_liste):
liste = copy.deepcopy(wichtler_liste)
random.shuffle(liste)
geheime_liste = []
for i in range(len(liste)):
if i == len(liste)-1:
geheime_liste.append([liste[i],liste[0]])
#print(liste[i], "beschenkt", liste[0])
else:
geheime_liste.append([liste[i],liste[i+1]])
#print(liste[i], "beschenkt", liste[i+1])
random.shuffle(geheime_liste)
#print(geheime_liste)
return(geheime_liste)
def check_forbidden(forbidden, liste):
listeok = False
checkliste = [0] * (len(liste))
#print(checkliste)
for index in range(len(liste)):
test = tuple(liste[index])
#print("Test", index, test, "und", test[::-1])
if (test not in forbidden) and (test[::-1] not in forbidden):
checkliste[index] = 1
print(checkliste)
if 0 not in checkliste:
listeok = True
return listeok
def encode_liste(liste):
for i in liste:
i[1] = base64.b85encode(i[1].encode()).decode()
print(i)
return liste
def decode_liste(liste):
for i in liste:
i[1] = base64.b85decode(i[1]).decode()
#print(i)
return liste
def make_html(liste):
for i in liste:
html = part_one + i[0] + part_three + i[1] + part_five + part_six + part_seven + part_eight
with open(i[0]+"-"+str(uuid.uuid4())+".html", "w", encoding="utf-8") as save_file:
save_file.write(html)
try_ = 0
while True:
try_ += 1
print("Versuch Nummer", try_)
geheime_liste = function2(wichtler_liste)
if check_forbidden(forbidden, geheime_liste):
break
#encode_liste(geheime_liste)
#decode_liste(geheime_liste)
make_html(geheime_liste)
if __name__ == "__main__":
print("Press Enter to continue ...")
input()