--- title: "Self-referential language counting (I learned another word today bringing my total to fourteen words and twenty letters)" layout: post image: feature: header_words.png --- A [recent XKCD](https://www.explainxkcd.com/wiki/index.php/2839:_Language_Acquisition) 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.