Magic numbers: Difference between revisions
Content added Content deleted
(→Python: a first quick draft) |
m (→Python: some code cleanup) |
||
Line 473: | Line 473: | ||
def magic_numbers(base): |
def magic_numbers(base): |
||
hist = [] |
|||
n = l = i = 0 |
n = l = i = 0 |
||
while True: |
while True: |
||
l += 1 |
l += 1 |
||
for digit in range(-n % l, base, l) |
hist.extend((n + digit, l) for digit in range(-n % l, base, l)) |
||
all.append((n + digit, l)) |
|||
i += 1 |
i += 1 |
||
if i == len( |
if i == len(hist): |
||
return |
return hist |
||
n, l = |
n, l = hist[i] |
||
n *= base |
n *= base |
||
Line 488: | Line 487: | ||
print("found", len(mn), "magic numbers") |
print("found", len(mn), "magic numbers") |
||
print("the largest one is", mn[-1][0]) |
print("the largest one is", mn[-1][0]) |
||
print("count by digits:") |
print("count by number of digits:") |
||
print(*(f"{l}:{sum(1 for _ in g)}" for l, g in groupby(l for _, l in mn))) |
print(*(f"{l}:{sum(1 for _ in g)}" for l, g in groupby(l for _, l in mn))) |
||
⚫ | |||
mn = tuple(str(m) for m, l in mn if 8 < l < 11) |
|||
⚫ | |||
print("minimally pandigital in 1..9:", 0) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
found 20457 magic numbers |
found 20457 magic numbers |
||
the largest one is 3608528850368400786036725 |
the largest one is 3608528850368400786036725 |
||
count by digits: |
count by number of digits: |
||
1:10 2:45 3:150 4:375 5:750 6:1200 7:1713 8:2227 9:2492 10:2492 11:2225 12:2041 13:1575 14:1132 15:770 16:571 17:335 18:180 19:90 20:44 21:18 22:12 23:6 24:3 25:1 |
1:10 2:45 3:150 4:375 5:750 6:1200 7:1713 8:2227 9:2492 10:2492 11:2225 12:2041 13:1575 14:1132 15:770 16:571 17:335 18:180 19:90 20:44 21:18 22:12 23:6 24:3 25:1 |
||
minimally pandigital in 1..9: |
minimally pandigital in 1..9: 381654729 |
||
⚫ | |||
381654729 |
|||
⚫ | |||
3816547290 |
|||
</pre> |
</pre> |
||