3
3
import random
4
4
5
5
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 :
7
7
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 )
10
13
11
14
rng = random .Random (seed ) # Local RNG instance
12
15
rng .shuffle (shift_pattern )
@@ -46,7 +49,7 @@ def decode(text: str, charset: str, shift_pattern: list[int]) -> str:
46
49
47
50
48
51
class EncoderDecoderUI ():
49
- def __init__ (self , seed : int , shift : int ):
52
+ def __init__ (self , seed : int , shift : int , shift_pattern_num : int ):
50
53
# --- GUI setup ---
51
54
self .root = tk .Tk ()
52
55
self .root .title ("Text Encoder/Decoder with Seed" )
@@ -70,6 +73,11 @@ def __init__(self, seed: int, shift: int):
70
73
self .shift_entry .insert (0 , str (shift ))
71
74
self .shift_entry .grid (row = 2 , column = 1 , padx = 5 , sticky = "w" )
72
75
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
+
73
81
ttk .Label (self .root , text = "Seed:" ).grid (row = 2 , column = 2 , padx = 5 , sticky = "e" )
74
82
self .seed_entry = ttk .Entry (self .root , width = 10 )
75
83
self .seed_entry .insert (0 , str (seed ))
@@ -89,30 +97,31 @@ def __init__(self, seed: int, shift: int):
89
97
def get_seed_and_shift (self ):
90
98
try :
91
99
shift = int (self .shift_entry .get ())
100
+ shift_pattern_num = int (self .shift_pattern_entry .get ())
92
101
seed = int (self .seed_entry .get ())
93
102
except ValueError :
94
103
self .output_text .delete ("1.0" , tk .END )
95
104
self .output_text .insert (tk .END , "Error: Shift and Seed must be integers." )
96
- return seed , shift
105
+ return seed , shift , shift_pattern_num
97
106
98
107
99
108
def on_encode (self ):
100
- shift , seed = self .get_seed_and_shift ()
109
+ shift , seed , shift_pattern_num = self .get_seed_and_shift ()
101
110
charset = generate_charset (seed )
102
- shift_pattern = get_shift_pattern (charset , shift , seed )
111
+ shift_pattern = get_shift_pattern (shift , seed , shift_pattern_num )
103
112
text = self .input_text .get ("1.0" , tk .END ).rstrip ('\n ' )
104
113
self .output_text .delete ("1.0" , tk .END )
105
114
self .output_text .insert (tk .END , encode (text , charset , shift_pattern ))
106
115
107
116
108
117
def on_decode (self ):
109
- shift , seed = self .get_seed_and_shift ()
118
+ shift , seed , shift_pattern_num = self .get_seed_and_shift ()
110
119
charset = generate_charset (seed )
111
- shift_pattern = get_shift_pattern (charset , shift , seed )
120
+ shift_pattern = get_shift_pattern (shift , seed , shift_pattern_num )
112
121
text = self .input_text .get ("1.0" , tk .END ).rstrip ('\n ' )
113
122
self .output_text .delete ("1.0" , tk .END )
114
123
self .output_text .insert (tk .END , decode (text , charset , shift_pattern ))
115
124
116
125
117
126
if __name__ == "__main__" :
118
- EncoderDecoderUI (357 , 8 )
127
+ EncoderDecoderUI (357 , 8 , 20 )
0 commit comments