hello-dosdl/word_selection.py

29 lines
756 B
Python
Raw Permalink Normal View History

2022-02-24 19:14:37 +00:00
import json
import sys
# https://github.com/lynn/hello-wordl/blob/7da40c1f067eb1ec157d4c5b7a9bd8257ed39342/src/util.ts#L14
def rshift(n, a): return (n & 0xffff_ffff) >> a
def mulberry32(rng_state):
def worker():
nonlocal rng_state
rng_state += 0x6d2b79f5;
t = rng_state
t = (t ^ rshift(t, 15)) * (t | 1) & 0xffff_ffff
t ^= t + (t ^ rshift(t, 7)) * (t | 61) & 0xffff_ffff
return (t ^ (t >> 14))
return worker
with open('targets.json', 'r') as f:
targets = json.load(f)
targets = targets[:targets.index('murky') + 1]
targets = [i for i in targets if len(i) == 5]
rng = mulberry32(int(sys.argv[1]))
while True:
num = rng()
index = num * len(targets) >> 32
print(f'{num:08x}', index, targets[index])
if targets[index] != '*****': break