Adjective-animal hash

hash_animal(x, n_adj = 2)

Arguments

x

Character vector. NA entries will have an NA hash.

n_adj

Number of adjectives to use. It must be between 0 and 3.

Value

A data frame with columns

  • hash: the hash value, a string.

  • words: list column with the adjectives and the animal name in a character vector.

Details

It uses the first 13 hexadecimal characters (out of the 32) of the MD5 hash of the input, and converts them into an adjective-animal form to create a human readable hash.

Number of possible hash values

hash_animals() uses 1748 animal names and 8946 different adjectives. The number of different hashes you can get for different values of n_adj:

n_adjsize of the hash table space
01,748
115,637,608
2139,894,041,168
31,251,492,092,288,928

Source

The list of adjectives and animals comes from the ids package, and in turn from https://github.com/a-type/adjective-adjective-animal, and from https://gfycat.com.

See also

the ids package for generating random adjective-animal ids

Other hash functions: hash_emoji(), hash_md5()

Examples

hash_animal(c("foo", "bar"))
#>                                       hash        words
#> 1                   sacrilegious diet lion sacrileg....
#> 2 uncitizenly agricultural amethystgemclam uncitize....

# if you increase `n_adj`, the shorter hash is a suffix of the longer:
hash_animal("cli package", 0)$hash
#> [1] "pullet"
hash_animal("cli package", 1)$hash
#> [1] "pastyfaced pullet"
hash_animal("cli package", 2)$hash
#> [1] "pregnant pastyfaced pullet"
hash_animal("cli package", 3)$hash
#> [1] "unwelcome pregnant pastyfaced pullet"