8, 13, 15, 43, 30, 37, 32, 6, 36, 37, 1, 7, 18, 15, ???
Hint 1:
The whole sequence is a word.
Hint 2:
In english.
Puzzling Stack Exchange is a question and answer site for those who create, solve, and study puzzles. It only takes a minute to sign up.
Sign up to join this community8, 13, 15, 43, 30, 37, 32, 6, 36, 37, 1, 7, 18, 15, ???
Hint 1:
The whole sequence is a word.
Hint 2:
In english.
I believe the missing number is
18
and that the number sequence spells the word
anthropologists
Rationale:
Assuming each number is mapped one-to-one to a letter, we are looking for a 15-letter word with the following properties:
1. the 3rd and 14th letters are the same
2. the 6th and 10th letters are the same
3. the 15th letter repeats one of the previous letters
4. none of the remaining letters are repeated
This is the only word in the Scrabble Tournament Word List that fits these criteria.
I defined an abstract mapping that gave a description of each word.
def matmap(x):
z = np.zeros((len(x),len(x)))
for i, xi in enumerate(x):
for j, xj in enumerate(x):
if i > j and xi == xj:
z[i,j] = 1
return z
And then using this description I defined a function to check if two sequences are isomorphic.
def isomorphs(x,y):
if np.all(matmap(x) == matmap(y)):
return True
else:
return False
And then I brute-force checked all words in a database of words, checking for appropriate length and whether there was the desired isomorphism.
x = [8, 13, 15, 43, 30, 37, 32, 6, 36, 37, 1, 7, 18, 15]
word_db = []
with open('words.txt', 'r') as f:
for word in f:
word = word.replace('\n', '')
if len(word) == len(x)+1:
if isomorphs(word[:-1], x):
word_db.append(word)
Out of the 466551 words in the aforementioned database, only 1 had the correct length and was isomorphic to the sequence I was given. The word is
plumbaginaceous
Having this candidate word, I worked backward on a mapping for the known characters.
letter_map = {}
for i,j in zip(x, word_db[0][:-1]):
letter_map[i] = j
And taking a look at the map I see that the letters are not well-orded with the indices according to alphanumeric order (no surprise there).
>>> letter_map {8: 'p', 13: 'l', 15: 'u', 43: 'm', 30: 'b', 37: 'a', 32: 'g', 6: 'i', 36: 'n', 1: 'c', 7: 'e', 18: 'o'}
Nothing jumps out at me, meaning that while I may have successfully found a word that matches, I have not found the last number. Either I somehow missed the right word out of a huge dataset (possible), or the information I need can be inducted from the provided sequence (possible). A scatterplot shows that the next element of the sequence is not simply predicted by the preceding one:
Looking at the trace of numbers against index isn't really revealing either.
Find the last number.