Which word has the highest normalized score according to the following:
- Assign each individual letter A..Z of an (English) word a value corresponding to the n'th prime (see table below).
- Take the product of its letter scores.
- Normalization: Take the log10 of that product, and divide by the wordlength.
- (See Python example code below)
- Please state the wordlength along with its score
Examples:
- SYZYGY = 1.83686.. (6 letters)
- WOW = 1.83675.. (3 letters)
- SYZYGIUM = 1.73403.. (8 letters)
- WOODWORKING = 1.56381.. (11 letters)
(The normalization is to prefer everyday English words over IUPAC chemical names or 'Pneumonoultramicroscopicsilicovolcanoconiosis').
Letter values A:2 B:3 C:5 D:7 E:11 F:13 G:17 H:19 I:23 J:29 K:31 L:37 M:41 N:43 O:47 P:53 Q:59 R:61 S:67 T:71 U:73 V:79 W:83 X:89 Y:97 Z:101
Some Python example code:
primes = { letter_prime[0]:letter_prime[1] for letter_prime in zip(string.ascii_uppercase, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101])}
{'A': 2, 'B': 3, 'C': 5, 'D': 7, 'E': 11, 'F': 13, 'G': 17, 'H': 19, 'I': 23, 'J': 29, 'K': 31, 'L': 37, 'M': 41, 'N': 43, 'O': 47, 'P': 53, 'Q': 59, 'R': 61, 'S': 67, 'T': 71, 'U': 73, 'V': 79, 'W': 83, 'X': 89, 'Y': 97, 'Z': 101}
def letter_prime_score(word):
prod = 1
length = 0
for letter in word:
prod *= primes[letter]
length += 1
return log10(prod) / length
letter_prime_score('SYZYGY')
1.8368600501100796
letter_prime_score('WOW')
1.8367513475626218
letter_prime_score('SYZYGIUM')
1.734027889906502
letter_prime_score('WOODWORKING')
1.5638076854903682