Skip to content

Commit 695a923

Browse files
committedAug 13, 2021
find_lowest_base.py - pt2 by Activecat
1 parent 1d8dae0 commit 695a923

File tree

1 file changed

+414
-0
lines changed

1 file changed

+414
-0
lines changed
 
+414
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,414 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"id": "170eb313",
7+
"metadata": {},
8+
"outputs": [],
9+
"source": [
10+
"# https://www.geeksforgeeks.org/convert-base-decimal-vice-versa/\n",
11+
"# To convert decimal to any given base"
12+
]
13+
},
14+
{
15+
"cell_type": "code",
16+
"execution_count": 2,
17+
"id": "647b1c73",
18+
"metadata": {},
19+
"outputs": [],
20+
"source": [
21+
"def toChar(x:int) -> str: \n",
22+
" if (0 <= x < 10):\n",
23+
" return chr(x + ord('0')); # Return a character between '0' to '9'.\n",
24+
" \n",
25+
" elif (10 <= x < 36):\n",
26+
" return chr(x - 10 + ord('A')); # Return a character between 'A' to 'Z'.\n",
27+
" \n",
28+
" else:\n",
29+
" return \"!\"; # Return '!' when it is out of range."
30+
]
31+
},
32+
{
33+
"cell_type": "code",
34+
"execution_count": 3,
35+
"id": "992b96a2",
36+
"metadata": {},
37+
"outputs": [],
38+
"source": [
39+
"def toBaseN(x:int, n:int) -> str: \n",
40+
" output = \"\"\n",
41+
" \n",
42+
" # Convert input number is given base by repeatedly dividing it by base and taking remainder\n",
43+
" while (x > 0):\n",
44+
" output += toChar(x % n);\n",
45+
" x = int(x / n);\n",
46+
" \n",
47+
" return output[::-1]; # Reverse the string"
48+
]
49+
},
50+
{
51+
"cell_type": "code",
52+
"execution_count": 4,
53+
"id": "4269a9bc",
54+
"metadata": {},
55+
"outputs": [],
56+
"source": [
57+
"assert toBaseN(282, 16) == '11A'"
58+
]
59+
},
60+
{
61+
"cell_type": "code",
62+
"execution_count": 5,
63+
"id": "08a44a8b",
64+
"metadata": {},
65+
"outputs": [],
66+
"source": [
67+
"assert toBaseN(43, 6) == '111'"
68+
]
69+
},
70+
{
71+
"cell_type": "code",
72+
"execution_count": 6,
73+
"id": "1a077c5b",
74+
"metadata": {},
75+
"outputs": [],
76+
"source": [
77+
"assert toBaseN(15, 2) == '1111'"
78+
]
79+
},
80+
{
81+
"cell_type": "code",
82+
"execution_count": 7,
83+
"id": "2fe1ed2d",
84+
"metadata": {},
85+
"outputs": [
86+
{
87+
"data": {
88+
"text/plain": [
89+
"'Z'"
90+
]
91+
},
92+
"execution_count": 7,
93+
"metadata": {},
94+
"output_type": "execute_result"
95+
}
96+
],
97+
"source": [
98+
"toBaseN(35, 50) "
99+
]
100+
},
101+
{
102+
"cell_type": "code",
103+
"execution_count": 8,
104+
"id": "630fe7e4",
105+
"metadata": {},
106+
"outputs": [],
107+
"source": [
108+
"def isSameDigits(string:str) -> bool:\n",
109+
" if len(string) < 2 or '!' in string:\n",
110+
" return False\n",
111+
" \n",
112+
" for x in string[1:]:\n",
113+
" if string[0] != x:\n",
114+
" return False\n",
115+
" \n",
116+
" return True"
117+
]
118+
},
119+
{
120+
"cell_type": "code",
121+
"execution_count": 9,
122+
"id": "fcd15c36",
123+
"metadata": {},
124+
"outputs": [],
125+
"source": [
126+
"assert isSameDigits('111211') == False"
127+
]
128+
},
129+
{
130+
"cell_type": "code",
131+
"execution_count": 10,
132+
"id": "19ee68c4",
133+
"metadata": {},
134+
"outputs": [],
135+
"source": [
136+
"assert isSameDigits('1111')"
137+
]
138+
},
139+
{
140+
"cell_type": "code",
141+
"execution_count": 11,
142+
"id": "49bd890e",
143+
"metadata": {},
144+
"outputs": [],
145+
"source": [
146+
"assert isSameDigits('AAAA')"
147+
]
148+
},
149+
{
150+
"cell_type": "code",
151+
"execution_count": 12,
152+
"id": "dc9ca131",
153+
"metadata": {},
154+
"outputs": [
155+
{
156+
"name": "stdout",
157+
"output_type": "stream",
158+
"text": [
159+
"** 10 base-4 is '22'\n",
160+
"** 10 base-9 is '11'\n",
161+
"** 11 base-10 is '11'\n",
162+
"** 12 base-5 is '22'\n",
163+
"** 12 base-11 is '11'\n",
164+
"** 13 base-3 is '111'\n",
165+
"** 13 base-12 is '11'\n",
166+
"** 14 base-6 is '22'\n",
167+
"** 14 base-13 is '11'\n",
168+
"** 15 base-2 is '1111'\n",
169+
"** 15 base-4 is '33'\n",
170+
"** 15 base-14 is '11'\n",
171+
"** 16 base-7 is '22'\n",
172+
"** 16 base-15 is '11'\n",
173+
"** 17 base-16 is '11'\n",
174+
"** 18 base-5 is '33'\n",
175+
"** 18 base-8 is '22'\n",
176+
"** 18 base-17 is '11'\n",
177+
"** 19 base-18 is '11'\n",
178+
"** 20 base-9 is '22'\n",
179+
"** 20 base-19 is '11'\n",
180+
"** 21 base-4 is '111'\n",
181+
"** 21 base-6 is '33'\n",
182+
"** 21 base-20 is '11'\n",
183+
"** 22 base-10 is '22'\n",
184+
"** 22 base-21 is '11'\n",
185+
"** 23 base-22 is '11'\n",
186+
"** 24 base-5 is '44'\n",
187+
"** 24 base-7 is '33'\n",
188+
"** 24 base-11 is '22'\n",
189+
"** 24 base-23 is '11'\n",
190+
"** 25 base-24 is '11'\n",
191+
"** 26 base-3 is '222'\n",
192+
"** 26 base-12 is '22'\n",
193+
"** 26 base-25 is '11'\n",
194+
"** 27 base-8 is '33'\n",
195+
"** 27 base-26 is '11'\n",
196+
"** 28 base-6 is '44'\n",
197+
"** 28 base-13 is '22'\n",
198+
"** 28 base-27 is '11'\n",
199+
"** 29 base-28 is '11'\n",
200+
"** 30 base-9 is '33'\n",
201+
"** 30 base-14 is '22'\n",
202+
"** 30 base-29 is '11'\n",
203+
"** 31 base-2 is '11111'\n",
204+
"** 31 base-5 is '111'\n",
205+
"** 31 base-30 is '11'\n",
206+
"** 32 base-7 is '44'\n",
207+
"** 32 base-15 is '22'\n",
208+
"** 32 base-31 is '11'\n",
209+
"** 33 base-10 is '33'\n",
210+
"** 33 base-32 is '11'\n",
211+
"** 34 base-16 is '22'\n",
212+
"** 34 base-33 is '11'\n",
213+
"** 35 base-6 is '55'\n",
214+
"** 35 base-34 is '11'\n",
215+
"** 36 base-8 is '44'\n",
216+
"** 36 base-11 is '33'\n",
217+
"** 36 base-17 is '22'\n",
218+
"** 36 base-35 is '11'\n",
219+
"** 38 base-18 is '22'\n",
220+
"** 39 base-12 is '33'\n",
221+
"** 40 base-3 is '1111'\n",
222+
"** 40 base-7 is '55'\n",
223+
"** 40 base-9 is '44'\n",
224+
"** 40 base-19 is '22'\n",
225+
"** 42 base-4 is '222'\n",
226+
"** 42 base-13 is '33'\n",
227+
"** 42 base-20 is '22'\n",
228+
"** 43 base-6 is '111'\n",
229+
"** 44 base-10 is '44'\n",
230+
"** 44 base-21 is '22'\n",
231+
"** 45 base-8 is '55'\n",
232+
"** 45 base-14 is '33'\n",
233+
"** 46 base-22 is '22'\n",
234+
"** 48 base-7 is '66'\n",
235+
"** 48 base-11 is '44'\n",
236+
"** 48 base-15 is '33'\n",
237+
"** 48 base-23 is '22'\n",
238+
"** 50 base-9 is '55'\n",
239+
"** 50 base-24 is '22'\n",
240+
"** 51 base-16 is '33'\n",
241+
"** 52 base-12 is '44'\n",
242+
"** 52 base-25 is '22'\n",
243+
"** 54 base-8 is '66'\n",
244+
"** 54 base-17 is '33'\n",
245+
"** 54 base-26 is '22'\n",
246+
"** 55 base-10 is '55'\n",
247+
"** 56 base-13 is '44'\n",
248+
"** 56 base-27 is '22'\n",
249+
"** 57 base-7 is '111'\n",
250+
"** 57 base-18 is '33'\n",
251+
"** 58 base-28 is '22'\n",
252+
"** 60 base-9 is '66'\n",
253+
"** 60 base-11 is '55'\n",
254+
"** 60 base-14 is '44'\n",
255+
"** 60 base-19 is '33'\n",
256+
"** 60 base-29 is '22'\n",
257+
"** 62 base-5 is '222'\n",
258+
"** 62 base-30 is '22'\n",
259+
"** 63 base-2 is '111111'\n",
260+
"** 63 base-4 is '333'\n",
261+
"** 63 base-8 is '77'\n",
262+
"** 63 base-20 is '33'\n",
263+
"** 64 base-15 is '44'\n",
264+
"** 64 base-31 is '22'\n",
265+
"** 65 base-12 is '55'\n",
266+
"** 66 base-10 is '66'\n",
267+
"** 66 base-21 is '33'\n",
268+
"** 66 base-32 is '22'\n",
269+
"** 68 base-16 is '44'\n",
270+
"** 68 base-33 is '22'\n",
271+
"** 69 base-22 is '33'\n",
272+
"** 70 base-9 is '77'\n",
273+
"** 70 base-13 is '55'\n",
274+
"** 70 base-34 is '22'\n",
275+
"** 72 base-11 is '66'\n",
276+
"** 72 base-17 is '44'\n",
277+
"** 72 base-23 is '33'\n",
278+
"** 72 base-35 is '22'\n",
279+
"** 73 base-8 is '111'\n",
280+
"** 75 base-14 is '55'\n",
281+
"** 75 base-24 is '33'\n",
282+
"** 76 base-18 is '44'\n",
283+
"** 77 base-10 is '77'\n",
284+
"** 78 base-12 is '66'\n",
285+
"** 78 base-25 is '33'\n",
286+
"** 80 base-3 is '2222'\n",
287+
"** 80 base-9 is '88'\n",
288+
"** 80 base-15 is '55'\n",
289+
"** 80 base-19 is '44'\n",
290+
"** 81 base-26 is '33'\n",
291+
"** 84 base-11 is '77'\n",
292+
"** 84 base-13 is '66'\n",
293+
"** 84 base-20 is '44'\n",
294+
"** 84 base-27 is '33'\n",
295+
"** 85 base-4 is '1111'\n",
296+
"** 85 base-16 is '55'\n",
297+
"** 86 base-6 is '222'\n",
298+
"** 87 base-28 is '33'\n",
299+
"** 88 base-10 is '88'\n",
300+
"** 88 base-21 is '44'\n",
301+
"** 90 base-14 is '66'\n",
302+
"** 90 base-17 is '55'\n",
303+
"** 90 base-29 is '33'\n",
304+
"** 91 base-9 is '111'\n",
305+
"** 91 base-12 is '77'\n",
306+
"** 92 base-22 is '44'\n",
307+
"** 93 base-5 is '333'\n",
308+
"** 93 base-30 is '33'\n",
309+
"** 95 base-18 is '55'\n",
310+
"** 96 base-11 is '88'\n",
311+
"** 96 base-15 is '66'\n",
312+
"** 96 base-23 is '44'\n",
313+
"** 96 base-31 is '33'\n",
314+
"** 98 base-13 is '77'\n",
315+
"** 99 base-10 is '99'\n",
316+
"** 99 base-32 is '33'\n"
317+
]
318+
}
319+
],
320+
"source": [
321+
"for x in range(10, 100):\n",
322+
" for n in range(2, 36):\n",
323+
" string = toBaseN(x, n)\n",
324+
" #print(\"** {} base-{} is '{}'\".format(x, n, string), end='')\n",
325+
" if isSameDigits(string):\n",
326+
" #print(\" ******** \")\n",
327+
" print(\"** {} base-{} is '{}'\".format(x, n, string))"
328+
]
329+
},
330+
{
331+
"cell_type": "code",
332+
"execution_count": 13,
333+
"id": "49e402f9",
334+
"metadata": {},
335+
"outputs": [],
336+
"source": [
337+
"def func2(x:int):\n",
338+
" for n in range(2, 36):\n",
339+
" string = toBaseN(x, n)\n",
340+
" if isSameDigits(string):\n",
341+
" print(\"** {} base-{} is '{}'\".format(x, n, string))"
342+
]
343+
},
344+
{
345+
"cell_type": "code",
346+
"execution_count": 14,
347+
"id": "ebc7fb5b",
348+
"metadata": {},
349+
"outputs": [
350+
{
351+
"name": "stdout",
352+
"output_type": "stream",
353+
"text": [
354+
"** 80 base-3 is '2222'\n",
355+
"** 80 base-9 is '88'\n",
356+
"** 80 base-15 is '55'\n",
357+
"** 80 base-19 is '44'\n"
358+
]
359+
}
360+
],
361+
"source": [
362+
"func2(80) "
363+
]
364+
},
365+
{
366+
"cell_type": "code",
367+
"execution_count": 15,
368+
"id": "9d01c340",
369+
"metadata": {},
370+
"outputs": [
371+
{
372+
"name": "stdout",
373+
"output_type": "stream",
374+
"text": [
375+
"** 400 base-7 is '1111'\n",
376+
"** 400 base-24 is 'GG'\n"
377+
]
378+
}
379+
],
380+
"source": [
381+
"func2(400)"
382+
]
383+
},
384+
{
385+
"cell_type": "code",
386+
"execution_count": null,
387+
"id": "8c547606",
388+
"metadata": {},
389+
"outputs": [],
390+
"source": []
391+
}
392+
],
393+
"metadata": {
394+
"kernelspec": {
395+
"display_name": "Python 3",
396+
"language": "python",
397+
"name": "python3"
398+
},
399+
"language_info": {
400+
"codemirror_mode": {
401+
"name": "ipython",
402+
"version": 3
403+
},
404+
"file_extension": ".py",
405+
"mimetype": "text/x-python",
406+
"name": "python",
407+
"nbconvert_exporter": "python",
408+
"pygments_lexer": "ipython3",
409+
"version": "3.8.8"
410+
}
411+
},
412+
"nbformat": 4,
413+
"nbformat_minor": 5
414+
}

0 commit comments

Comments
 (0)
Please sign in to comment.