Esempio n. 1
0
def compute_occupied_cells(keystring):
    occupied = set()
    for i in range(128):
        hashval = knot_hash('-'.join([keystring, str(i)]))
        binary = map(int, hextobinary(hashval))
        occupied.update([(i, j) for j, bit in enumerate(binary) if bit])
    return occupied
Esempio n. 2
0
from knothash import knot_hash  #from 10th day


def count_setbits(n):
    count = 0
    while (n):
        n &= (n - 1)
        count += 1
    return count


if __name__ == '__main__':
    key_string = 'oundnydw'
    #key_string = 'flqrgnkx'
    count = 0
    for i in range(128):
        key = f'{key_string}-{i}'
        row = int(knot_hash(key), 16)
        count += count_setbits(row)
    print(count)
def generate_hex_grid(key, rows):
    return [knot.knot_hash(key + "-" + str(x)) for x in range(rows)]
Esempio n. 4
0
#!/usr/bin/env python3
import binascii
from knothash import knot_hash

inp = "hfdlxzhv"

rowstrings = ["%s-%u" % (inp, i) for i in range(128)]


def hexchar_to_binstr(c):
    return bin(int(c, 16))[2:]


hashes = [knot_hash(s) for s in rowstrings]
bits = [[hexchar_to_binstr(c).zfill(4) for c in row] for row in hashes]
bits = [[c for c in "".join(row)] for row in bits]
print(sum(["".join(row).count('1') for row in bits]))
next_k = 2

bits = [[int(c) for c in row] for row in bits]


def neighbors(i, j):
    n = []
    if i > 0:
        n.append(bits[i - 1][j])
    if i < 127:
        n.append(bits[i + 1][j])
    if j > 0:
        n.append(bits[i][j - 1])
    if j < 127: