# FNV-1a 64 over eight million generated bytes, repeated with a changing salt. # The salt keeps each pass live. The printed value is the xor of the digests. fn lcg(s: u32) -> u32: overflow: wrap return s * 1664525 + 1013904223 hot fn mix(data: lend List[u8], salt: u64) -> u64: overflow: wrap var h: u64 = 14695981039346656037 ^ salt for b in data: h = (h ^ u64(b)) * 1099511628211 return h fn main(): var data := List[u8]() var state: u32 = 1 for i in 0..8000000: state = lcg(state) data.push(u8(state >> 24)) var acc: u64 = 0 for round in 0..40: acc = acc ^ mix(data, u64(round)) print(acc)