Martin Paul Eve bio photo

Martin Paul Eve

Professor of Literature, Technology and Publishing at Birkbeck, University of London

Email Books Twitter Github Stackoverflow MLA CORE Institutional Repo Hypothes.is ORCID ID  ORCID iD Wikipedia Pictures for Re-Use

A recent XKCD caused some amusement: “Vocabulary update: I learned another word today, bringing my total to twelve”.

We wondered whether there might be possible formulations of this joke that also contained the unique character count, so I wrote the following python script:

import num2word
import numpy

def find_self_reference():
    sentence = "I learned another word today bringing my total to {0} words and {1} letters"
    words = 12

    for i in range(0, 1000):
        num_word = num2word.word(i)
        final_words = words + numpy.char.count(num_word, " ") + 1
        final_num_words = (
            int(final_words)
            + int(numpy.char.count(num2word.word(int(final_words)), " "))
            + 1
        )

        sentence_sub = sentence.format(num2word.word(final_num_words), num_word)
        characters = len(set(sentence_sub.replace(" ", "")))

        print(f"Needed {characters} characters but got {i}.")

        if characters == i:
            print(sentence_sub)
            return

This gives us the following results:

  • I learned another word today bringing my total to fourteen words and twenty letters

or

  • Vocabulary update: I learned another word today bringing my total to seventeen words and twenty five letters

Good to have a hobby.