Skip to content

Instantly share code, notes, and snippets.

@danielcristofani
Created April 10, 2024 11:39
Show Gist options
  • Save danielcristofani/62db1ce2b16953c2f993e1c30b820233 to your computer and use it in GitHub Desktop.
Save danielcristofani/62db1ce2b16953c2f993e1c30b820233 to your computer and use it in GitHub Desktop.
This implements Pearson hashing using the table from Pearson's original paper, and outputs the hash as a byte. Verbose but fairly fast.
>>,[
[[>>]++[-<<]>>]
++++++++[>[>-<-]>[<+>+[-]]<<-[>>+<<-]+>>]
<[-<
<[-<
<[-<
<[-<
<[-<
<[-<
<[-<
<[
>>>>>>>>+>>>>+>>+>
>]<[
>>>>>>>+>>+>>+>>>>+>
]
>]<[
<[
>>>>+>>+>>>>+>>+>>>
>]<[
>+>>+>>+>>>>>>>>+>>>
]
]
>]<[
<[-<
<[
>>+>>>>+>>>>+>>>>>
>]<[
>>>>>>>>>+>>+>>+>>>
]
>]<[
<[
>>+>>>>+>>>>>>>>+>
>]<[
>>>+>>>>>>>>>>+>>+>
]
]
]
>]<[
<[-<
<[-<
<[
>>>>+>>+>>+>>+>>>>+>
>]<[
>+>>>>+>>+>>+>>>>+>>>
]
>]<[
<[
>>>>+>>+>>+>>>>+>>+>
>]<[
>>>+>>+>>+>>+>>+>>+>>+>
]
]
>]<[
<[-<
<[-
>>>>>>>>+>>>>>>+>
>]<[
>>>>>+>>+>>+>>>>>>>
]
>]<[
<[
>>>>>>>>>>>>+>>>
>]<[
>+>>+>>>>>>+>>+>>>>>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-
>>>>>>+>>+>>+>>+>>>
>]<[
>>>+>>>>>>+>>>>>>+>
]
>]<[
<[
>>+>>+>>+>>>>+>>>>>
>]<[
>+>>+>>+>>>>>>+>>+>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>>>>>>>+>>+>
>]<[
>+>>>>>>>>+>>+>>+>>>
]
>]<[
<[-
>>>>>>+>>>>+>>+>>+>
>]<[
>+>>>>>>+>>+>>+>>>>+>
]
]
]
>]<[
<[-<
<[-<
<[-
>>>>>>+>>>>>>>>>
>]<[
>+>>+>>+>>+>>+>>>>>>+>
]
>]<[
<[-
>>+>>+>>>>+>>+>>>>>
>]<[
>+>>>>>>+>>>>+>>>>>
]
]
>]<[
<[-<
<[-
>>>>+>>+>>>>+>>>>+>
>]<[
>>>+>>>>>>+>>>>+>>+>
]
>]<[
<[-
>>>>+>>>>>>+>>>>>
>]<[
>>>>>+>>+>>>>>>>>+>
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[-
>>>>+>>+>>>>>>+>>>
>]<[
>+>>>>+>>>>+>>+>>+>>>
]
>]<[
<[-
>>>>+>>>>+>>+>>>>+>
>]<[
>+>>>>+>>>>>>+>>>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>+>>>>>>+>>+>
>]<[
>>>+>>>>>>>>+>>+>>>
]
>]<[
<[
>>+>>+>>+>>+>>+>>>>+>
>]<[
>>>>>+>>>>>>+>>>>+>
]
]
]
>]<[
<[-<
<[-<
<[
>>>>>>>>>>+>>>>>
>]<[
>+>>+>>>>+>>+>>>>>>+>
]
>]<[
<[-
>>>>>>>>>>>>+>>+>
>]<[
>>>+>>+>>>>>>>>+>>+>
]
]
>]<[
<[-<
<[
>>+>>>>>>+>>>>>>+>
>]<[
>>>+>>>>+>>+>>+>>>>+>
]
>]<[
<[-
>>>>>>+>>>>+>>>>>
>]<[
>+>>>>>>+>>>>+>>+>>+>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[
>>+>>>>+>>>>>>+>>+>
>]<[
>+>>+>>+>>>>>>+>>>>>
]
>]<[
<[
>>>>+>>+>>>>>>+>>+>
>]<[
>+>>+>>>>>>+>>>>>>>
]
]
>]<[
<[-<
<[
>>+>>+>>>>+>>+>>+>>+>
>]<[
>+>>>>+>>>>+>>>>>>>
]
>]<[
<[-
>>>>+>>+>>>>+>>+>>>
>]<[
>+>>>>+>>+>>+>>>>>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>>>+>>>>>>>>>>>
>]<[
>>>+>>>>+>>>>+>>>>>
]
>]<[
<[-
>>>>+>>+>>+>>+>>+>>+>
>]<[
>>>>>>>+>>>>+>>>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>+>>+>>+>>+>>>
>]<[
>+>>+>>>>>>>>>>+>>>
]
>]<[
<[-
>>>>+>>+>>+>>+>>>>+>
>]<[
>+>>+>>>>+>>+>>>>>>>
]
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[-<
<[
>>>>+>>>>>>+>>+>>+>
>]<[
>+>>>>+>>>>>>>>+>>>
]
>]<[
<[
>>+>>+>>>>+>>>>+>>+>
>]<[
>>>+>>>>+>>>>>>+>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>>>+>>>>+>>+>
>]<[
>+>>+>>+>>+>>>>>>+>>+>
]
>]<[
<[-
>>>>+>>>>>>+>>+>>+>
>]<[
>>>+>>+>>>>>>>>>>+>
]
]
]
>]<[
<[-<
<[-<
<[
>>>>>>>>+>>>>>>+>
>]<[
>+>>>>>>+>>>>>>>>>
]
>]<[
<[-
>>>>+>>>>+>>+>>+>>>
>]<[
>>>+>>+>>+>>>>+>>>>>
]
]
>]<[
<[-<
<[
>>>>+>>+>>+>>>>>>+>
>]<[
>>>+>>>>>>>>>>>>>
]
>]<[
<[
>>>>>>+>>>>>>+>>>
>]<[
>>>+>>+>>>>+>>+>>+>>>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[
>>+>>>>+>>+>>+>>+>>>
>]<[
>+>>>>+>>>>>>+>>>>>
]
>]<[
<[-
>>>>>>>>>>+>>>>+>
>]<[
>+>>>>>>+>>+>>>>+>>+>
]
]
>]<[
<[-<
<[-
>>>>>>>>>>+>>+>>+>
>]<[
>+>>>>>>>>>>+>>+>>+>
]
>]<[
<[
>>>>>>+>>>>>>>>+>
>]<[
>+>>>>>>+>>>>+>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>>>>>>>+>>>>>>>
>]<[
>+>>>>>>+>>+>>>>+>>>
]
>]<[
<[
>>+>>+>>+>>+>>>>+>>>
>]<[
>+>>+>>+>>+>>>>>>+>>>
]
]
>]<[
<[-<
<[-
>>+>>+>>+>>>>+>>+>>+>
>]<[
>+>>+>>+>>+>>>>>>>>>
]
>]<[
<[
>>>>+>>+>>>>+>>>>+>
>]<[
>+>>>>+>>+>>+>>+>>+>>>
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[
>>+>>>>>>>>>>>>+>
>]<[
>+>>+>>+>>>>+>>>>>>>
]
>]<[
<[
>>>>+>>>>+>>+>>>>>
>]<[
>>>+>>>>+>>+>>>>+>>>
]
]
>]<[
<[-<
<[-
>>>>+>>+>>+>>>>+>>+>
>]<[
>+>>+>>+>>>>+>>>>>>+>
]
>]<[
<[
>>+>>>>+>>+>>+>>>>>
>]<[
>+>>+>>+>>>>+>>+>>>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>+>>+>>>>+>>>>>>+>
>]<[
>+>>+>>>>>>>>>>>>>
]
>]<[
<[-
>>+>>+>>+>>>>>>+>>+>
>]<[
>+>>>>>>>>+>>+>>+>>+>
]
]
>]<[
<[-<
<[
>>+>>+>>>>>>+>>>>+>
>]<[
>+>>+>>>>>>+>>+>>+>>>
]
>]<[
<[
>>+>>+>>>>>>>>>>>
>]<[
>>>+>>>>+>>>>+>>>>+>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-
>>>>>>+>>+>>>>>>+>
>]<[
>+>>+>>+>>+>>+>>+>>>>>
]
>]<[
<[-
>>+>>>>>>>>+>>>>+>
>]<[
>+>>>>>>>>>>>>>>+>
]
]
>]<[
<[-<
<[-
>>+>>+>>+>>+>>>>+>>>
>]<[
>+>>+>>>>+>>+>>+>>+>>+>
]
>]<[
<[-
>>+>>>>+>>>>>>+>>>
>]<[
>+>>+>>+>>+>>>>>>>>+>
]
]
]
>]<[
<[-<
<[-<
<[-
>>+>>>>+>>+>>>>>>>
>]<[
>+>>>>+>>+>>+>>+>>>>>
]
>]<[
<[
>>+>>>>>>>>+>>>>>
>]<[
>>>>>+>>+>>+>>>>>>+>
]
]
>]<[
<[-<
<[
>>+>>+>>>>+>>+>>>>+>
>]<[
>>>>>>>>>+>>+>>>>>
]
>]<[
<[-
>>+>>+>>+>>+>>>>>>>
>]<[
>>>+>>>>+>>>>>>>>+>
]
]
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[-<
<[-<
<[-
>>+>>>>+>>>>>>>>>
>]<[
>>>>>+>>>>+>>+>>>>>
]
>]<[
<[-
>>+>>>>>>+>>+>>+>>>
>]<[
>>>>>>>+>>>>>>>>+>
]
]
>]<[
<[-<
<[-
>>>>>>>>>>+>>>>>
>]<[
>>>>>+>>+>>+>>>>+>>>
]
>]<[
<[
>>+>>>>+>>>>>>>>>
>]<[
>>>+>>>>+>>+>>+>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[
>>+>>>>>>>>+>>+>>>
>]<[
>+>>>>>>+>>>>>>+>>+>
]
>]<[
<[-
>>>>>>+>>+>>>>+>>>
>]<[
>+>>+>>>>>>+>>>>+>>>
]
]
>]<[
<[-<
<[-
>>+>>+>>+>>>>>>+>>>
>]<[
>+>>+>>+>>+>>+>>>>+>>+>
]
>]<[
<[-
>>>>+>>>>>>>>+>>>
>]<[
>+>>+>>+>>>>+>>+>>+>>>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[
>>+>>>>+>>+>>>>+>>+>
>]<[
>>>>>>>+>>+>>>>+>>+>
]
>]<[
<[-
>>+>>+>>>>+>>+>>+>>+>
>]<[
>+>>>>>>+>>+>>>>>>+>
]
]
>]<[
<[-<
<[
>>>>+>>+>>>>>>>>>
>]<[
>+>>+>>>>+>>+>>>>+>>>
]
>]<[
<[-
>>+>>+>>+>>+>>+>>+>>>
>]<[
>>>+>>>>>>>>>>>>+>
]
]
]
>]<[
<[-<
<[-<
<[-
>>>>+>>>>>>+>>+>>>
>]<[
>>>+>>+>>+>>+>>>>>>+>
]
>]<[
<[
>>>>+>>>>>>>>>>+>
>]<[
>>>>>>>>>>>>>>>+>
]
]
>]<[
<[-<
<[
>>+>>>>+>>>>>>+>>>
>]<[
>>>>>+>>>>+>>>>>>+>
]
>]<[
<[-
>>>>>>+>>+>>+>>>>>
>]<[
>>>>>+>>>>>>>>>>+>
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[
>>+>>>>>>+>>+>>+>>+>
>]<[
>>>>>>>>>>>>>>>>
]
>]<[
<[
>>+>>>>>>+>>+>>>>+>
>]<[
>>>+>>+>>>>+>>+>>>>+>
]
]
>]<[
<[-<
<[
>>+>>>>+>>+>>+>>>>+>
>]<[
>+>>>>>>>>+>>>>>>>
]
>]<[
<[
>>+>>>>+>>>>+>>>>+>
>]<[
>+>>>>+>>>>+>>+>>+>>+>
]
]
]
>]<[
<[-<
<[-<
<[
>>+>>>>>>>>>>+>>+>
>]<[
>>>+>>>>+>>>>+>>+>>>
]
>]<[
<[-
>>+>>>>+>>+>>>>>>+>
>]<[
>>>+>>>>>>>>>>+>>>
]
]
>]<[
<[-<
<[-
>>+>>>>+>>+>>+>>>>>
>]<[
>+>>+>>>>>>+>>>>+>>+>
]
>]<[
<[
>>>>>>+>>>>+>>>>+>
>]<[
>>>+>>+>>+>>>>+>>>>+>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-
>>>>>>+>>+>>+>>+>>+>
>]<[
>+>>+>>+>>>>>>>>>>+>
]
>]<[
<[-
>>+>>+>>+>>+>>+>>>>>
>]<[
>+>>+>>+>>+>>>>+>>+>>>
]
]
>]<[
<[-<
<[
>>+>>+>>>>>>>>+>>+>
>]<[
>+>>+>>+>>+>>+>>+>>+>>>
]
>]<[
<[
>>>>+>>>>>>>>>>>
>]<[
>>>>>>>>>+>>>>+>>+>
]
]
]
>]<[
<[-<
<[-<
<[
>>+>>+>>+>>>>+>>>>+>
>]<[
>>>+>>>>>>+>>>>+>>>
]
>]<[
<[-
>>+>>>>+>>+>>+>>+>>+>
>]<[
>>>>>+>>+>>+>>+>>>>>
]
]
>]<[
<[-<
<[-
>>+>>+>>>>+>>>>>>>
>]<[
>+>>>>>>+>>+>>+>>>>>
]
>]<[
<[-
>>+>>>>+>>>>+>>+>>+>
>]<[
>+>>>>>>>>>>+>>+>>>
]
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[-<
<[
>>+>>>>+>>>>+>>+>>+>
>]<[
>+>>>>+>>>>+>>>>>>+>
]
>]<[
<[
>>+>>>>>>>>+>>+>>+>
>]<[
>>>>>+>>>>+>>+>>+>>+>
]
]
>]<[
<[-<
<[-
>>+>>+>>>>+>>>>+>>+>
>]<[
>>>>>+>>>>+>>>>>>>
]
>]<[
<[-
>>+>>>>>>+>>+>>+>>+>
>]<[
>>>>>>>+>>>>>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>+>>>>>>>>+>>>>>
>]<[
>>>>>>>>>+>>+>>+>>+>
]
>]<[
<[
>>>>+>>+>>>>+>>+>>+>
>]<[
>>>+>>+>>>>+>>>>+>>>
]
]
>]<[
<[-<
<[-
>>+>>+>>>>>>>>+>>>
>]<[
>>>+>>+>>+>>+>>+>>>>+>
]
>]<[
<[
>>+>>>>+>>>>+>>+>>>
>]<[
>+>>>>>>+>>+>>>>>>>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-
>>+>>+>>+>>+>>>>+>>+>
>]<[
>+>>+>>+>>+>>+>>>>>>>
]
>]<[
<[-
>>>>>>>>>>+>>+>>>
>]<[
>+>>>>+>>+>>>>+>>>>>
]
]
>]<[
<[-<
<[-
>>+>>>>>>+>>>>>>>
>]<[
>+>>>>>>>>+>>>>+>>>
]
>]<[
<[
>>>>+>>>>>>+>>+>>>
>]<[
>+>>>>+>>+>>>>>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>+>>>>>>+>>+>>>>>
>]<[
>+>>+>>+>>+>>+>>+>>+>>+>
]
>]<[
<[
>>>>+>>+>>+>>+>>+>>+>
>]<[
>+>>>>+>>+>>>>>>>>+>
]
]
>]<[
<[-<
<[
>>+>>+>>>>>>+>>+>>>
>]<[
>>>>>>>+>>>>+>>+>>>
]
>]<[
<[
>>>>>>>>+>>+>>>>+>
>]<[
>>>+>>+>>+>>>>+>>+>>>
]
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[-<
<[-
>>>>>>+>>>>>>+>>+>
>]<[
>>>+>>+>>>>>>+>>>>>
]
>]<[
<[-
>>+>>+>>+>>>>>>>>+>
>]<[
>>>>>+>>+>>>>+>>+>>+>
]
]
>]<[
<[-<
<[-
>>+>>>>>>>>+>>+>>+>
>]<[
>>>>>>>+>>+>>>>>>>
]
>]<[
<[
>>+>>+>>+>>>>+>>+>>+>
>]<[
>>>>>>>>>>>>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>>>>>>>+>>>>+>>>
>]<[
>>>+>>>>+>>+>>>>+>>+>
]
>]<[
<[
>>>>+>>>>+>>>>+>>>
>]<[
>+>>>>>>>>>>+>>>>+>
]
]
>]<[
<[-<
<[
>>>>+>>>>+>>+>>>>+>
>]<[
>+>>>>+>>>>+>>>>+>>+>
]
>]<[
<[
>>>>+>>>>>>>>+>>+>
>]<[
>>>+>>+>>+>>>>>>>>>
]
]
]
]
>]<[
<[-<
<[-<
<[-<
<[
>>+>>>>>>>>+>>>>+>
>]<[
>>>>>+>>+>>>>+>>>>>
]
>]<[
<[-
>>+>>+>>>>>>+>>+>>+>
>]<[
>+>>>>>>+>>+>>+>>+>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>>>+>>>>+>>>
>]<[
>>>+>>+>>>>>>>>>>>
]
>]<[
<[
>>>>>>>>>>>>+>>+>
>]<[
>+>>>>>>+>>+>>+>>+>>>
]
]
]
>]<[
<[-<
<[-<
<[-
>>+>>+>>>>>>+>>>>+>
>]<[
>>>+>>+>>>>>>+>>+>>>
]
>]<[
<[-
>>+>>>>>>+>>+>>>>+>
>]<[
>>>>>>>>>+>>+>>>>+>
]
]
>]<[
<[-<
<[-
>>>>+>>+>>>>>>>>>
>]<[
>+>>>>>>>>+>>+>>>>>
]
>]<[
<[
>>+>>+>>>>+>>>>+>>>
>]<[
>+>>>>>>>>>>>>>>>
]
]
]
]
]
]
]
]
+[-<<]>>,
]
>>>>+>>+>>+>>+>>+>>+>>+
[-<[<<++>>-]<]
<.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment