Skip to content

Commit d23983e

Browse files
authored
fix V0.4
1 parent 35e6758 commit d23983e

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

simple_encoder_decoder.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import random
44

55

6-
def get_shift_pattern(charset: str, shift: int, seed: int = 0) -> list:
6+
def get_shift_pattern(shift: int, seed: int, shift_pattern_num: int) -> list:
77
shift_pattern = []
8-
for i in range(0, 50):
9-
shift_pattern.append((shift * i) % len(charset))
8+
9+
real_shift_pattern_num = max(min(shift_pattern_num, 100), 1)
10+
11+
for i in range(0, real_shift_pattern_num):
12+
shift_pattern.append(shift + i)
1013

1114
rng = random.Random(seed) # Local RNG instance
1215
rng.shuffle(shift_pattern)
@@ -46,7 +49,7 @@ def decode(text: str, charset: str, shift_pattern: list[int]) -> str:
4649

4750

4851
class EncoderDecoderUI():
49-
def __init__(self, seed: int, shift: int):
52+
def __init__(self, seed: int, shift: int, shift_pattern_num: int):
5053
# --- GUI setup ---
5154
self.root = tk.Tk()
5255
self.root.title("Text Encoder/Decoder with Seed")
@@ -70,6 +73,11 @@ def __init__(self, seed: int, shift: int):
7073
self.shift_entry.insert(0, str(shift))
7174
self.shift_entry.grid(row=2, column=1, padx=5, sticky="w")
7275

76+
ttk.Label(self.root, text="ShiftPattern(Max 100):").grid(row=2, column=1, padx=5, sticky="e")
77+
self.shift_pattern_entry = ttk.Entry(self.root, width=5)
78+
self.shift_pattern_entry.insert(0, str(shift_pattern_num))
79+
self.shift_pattern_entry.grid(row=2, column=2, padx=5, sticky="w")
80+
7381
ttk.Label(self.root, text="Seed:").grid(row=2, column=2, padx=5, sticky="e")
7482
self.seed_entry = ttk.Entry(self.root, width=10)
7583
self.seed_entry.insert(0, str(seed))
@@ -89,30 +97,31 @@ def __init__(self, seed: int, shift: int):
8997
def get_seed_and_shift(self):
9098
try:
9199
shift = int(self.shift_entry.get())
100+
shift_pattern_num = int(self.shift_pattern_entry.get())
92101
seed = int(self.seed_entry.get())
93102
except ValueError:
94103
self.output_text.delete("1.0", tk.END)
95104
self.output_text.insert(tk.END, "Error: Shift and Seed must be integers.")
96-
return seed, shift
105+
return seed, shift, shift_pattern_num
97106

98107

99108
def on_encode(self):
100-
shift, seed = self.get_seed_and_shift()
109+
shift, seed, shift_pattern_num = self.get_seed_and_shift()
101110
charset = generate_charset(seed)
102-
shift_pattern = get_shift_pattern(charset, shift, seed)
111+
shift_pattern = get_shift_pattern(shift, seed, shift_pattern_num)
103112
text = self.input_text.get("1.0", tk.END).rstrip('\n')
104113
self.output_text.delete("1.0", tk.END)
105114
self.output_text.insert(tk.END, encode(text, charset, shift_pattern))
106115

107116

108117
def on_decode(self):
109-
shift, seed = self.get_seed_and_shift()
118+
shift, seed, shift_pattern_num = self.get_seed_and_shift()
110119
charset = generate_charset(seed)
111-
shift_pattern = get_shift_pattern(charset, shift, seed)
120+
shift_pattern = get_shift_pattern(shift, seed, shift_pattern_num)
112121
text = self.input_text.get("1.0", tk.END).rstrip('\n')
113122
self.output_text.delete("1.0", tk.END)
114123
self.output_text.insert(tk.END, decode(text, charset, shift_pattern))
115124

116125

117126
if __name__ == "__main__":
118-
EncoderDecoderUI(357, 8)
127+
EncoderDecoderUI(357, 8, 20)

0 commit comments

Comments
 (0)