Codewars - Highest Scoring WordMaximum product of word lengths in PythonEncryption and decryption using alphabetic shiftsOutputting all possible words which fit a string of lettersCamelCase word countThe BFS approach to the SmartWordToy challengeScrabble helper: find the highest score with any 7 lettersCounting ambiguous Morse Code encodings, with and without Java StreamsFind the longest sub string of a word after concatenation of given words arrayPython program for Word Search IIAdd and Search Word
Printing a list as "a, b, c." using Python
Cauterizing a wound with metal?
Under GDPR, can I give permission once to allow everyone to store and process my data?
RAID0 instead of RAID1 or 5, is this crazy?
Give Lightning Web Component a Prettier Name
Board Chinese train at a different station (on-route)
How can I observe Sgr A* with itelescope.net
Spicing up a moment of peace
Why is "I let him to sleep" incorrect (or is it)?
Which polygons can be turned inside out by a smooth deformation?
Group by consecutive index numbers
How to differentiate between two people with the same name in a story?
Why is 3/4 a simple meter while 6/8 is a compound meter?
Why do motor drives have multiple bus capacitors of small value capacitance instead of a single bus capacitor of large value?
Normalized Malbolge to Malbolge translator
Are sweatpants frowned upon on flights?
Did the Apollo Guidance Computer really use 60% of the world's ICs in 1963?
Can a network vulnerability be exploited locally?
Get contents before a colon
Heat output from a 200W electric radiator?
Why do IR remotes influence AM radios?
Pen test results for web application include a file from a forbidden directory that is not even used or referenced
Coupling two 15 Amp circuit breaker for 20 Amp
Why does Sauron not permit his followers to use his name?
Codewars - Highest Scoring Word
Maximum product of word lengths in PythonEncryption and decryption using alphabetic shiftsOutputting all possible words which fit a string of lettersCamelCase word countThe BFS approach to the SmartWordToy challengeScrabble helper: find the highest score with any 7 lettersCounting ambiguous Morse Code encodings, with and without Java StreamsFind the longest sub string of a word after concatenation of given words arrayPython program for Word Search IIAdd and Search Word
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
Here is my solution for CodeWars - Highest Scoring Game
Given a string of words, you need to find the highest scoring word.
Each letter of a word scores points according to its position in the alphabet: a = 1, b = 2, c = 3 etc.
You need to return the highest scoring word as a string.
If two words score the same, return the word that appears earliest in the original string.
All letters will be lowercase and all inputs will be valid
Example:
Input: 'man i need a taxi up to ubud'
Output: 'taxi'
This is my solution:
def word_value(input_word):
values =
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
'i': 9,
'j': 10,
'k': 11,
'l': 12,
'm': 13,
'n': 14,
'o': 15,
'p': 16,
'q': 17,
'r': 18,
's': 19,
't': 20,
'u': 21,
'v': 22,
'w': 23,
'x': 24,
'y': 25,
'z': 26
value = 0
for letter in input_word:
value += values[letter]
return value
def high(x):
word_list = x.split(" ")
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
The solution passed the test suite but I think I can improve the part where I store all the letters matched with their value. Is there any suggestions for this and in general the entire code?
Thank you.
python programming-challenge
New contributor
$endgroup$
add a comment |
$begingroup$
Here is my solution for CodeWars - Highest Scoring Game
Given a string of words, you need to find the highest scoring word.
Each letter of a word scores points according to its position in the alphabet: a = 1, b = 2, c = 3 etc.
You need to return the highest scoring word as a string.
If two words score the same, return the word that appears earliest in the original string.
All letters will be lowercase and all inputs will be valid
Example:
Input: 'man i need a taxi up to ubud'
Output: 'taxi'
This is my solution:
def word_value(input_word):
values =
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
'i': 9,
'j': 10,
'k': 11,
'l': 12,
'm': 13,
'n': 14,
'o': 15,
'p': 16,
'q': 17,
'r': 18,
's': 19,
't': 20,
'u': 21,
'v': 22,
'w': 23,
'x': 24,
'y': 25,
'z': 26
value = 0
for letter in input_word:
value += values[letter]
return value
def high(x):
word_list = x.split(" ")
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
The solution passed the test suite but I think I can improve the part where I store all the letters matched with their value. Is there any suggestions for this and in general the entire code?
Thank you.
python programming-challenge
New contributor
$endgroup$
add a comment |
$begingroup$
Here is my solution for CodeWars - Highest Scoring Game
Given a string of words, you need to find the highest scoring word.
Each letter of a word scores points according to its position in the alphabet: a = 1, b = 2, c = 3 etc.
You need to return the highest scoring word as a string.
If two words score the same, return the word that appears earliest in the original string.
All letters will be lowercase and all inputs will be valid
Example:
Input: 'man i need a taxi up to ubud'
Output: 'taxi'
This is my solution:
def word_value(input_word):
values =
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
'i': 9,
'j': 10,
'k': 11,
'l': 12,
'm': 13,
'n': 14,
'o': 15,
'p': 16,
'q': 17,
'r': 18,
's': 19,
't': 20,
'u': 21,
'v': 22,
'w': 23,
'x': 24,
'y': 25,
'z': 26
value = 0
for letter in input_word:
value += values[letter]
return value
def high(x):
word_list = x.split(" ")
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
The solution passed the test suite but I think I can improve the part where I store all the letters matched with their value. Is there any suggestions for this and in general the entire code?
Thank you.
python programming-challenge
New contributor
$endgroup$
Here is my solution for CodeWars - Highest Scoring Game
Given a string of words, you need to find the highest scoring word.
Each letter of a word scores points according to its position in the alphabet: a = 1, b = 2, c = 3 etc.
You need to return the highest scoring word as a string.
If two words score the same, return the word that appears earliest in the original string.
All letters will be lowercase and all inputs will be valid
Example:
Input: 'man i need a taxi up to ubud'
Output: 'taxi'
This is my solution:
def word_value(input_word):
values =
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
'i': 9,
'j': 10,
'k': 11,
'l': 12,
'm': 13,
'n': 14,
'o': 15,
'p': 16,
'q': 17,
'r': 18,
's': 19,
't': 20,
'u': 21,
'v': 22,
'w': 23,
'x': 24,
'y': 25,
'z': 26
value = 0
for letter in input_word:
value += values[letter]
return value
def high(x):
word_list = x.split(" ")
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
The solution passed the test suite but I think I can improve the part where I store all the letters matched with their value. Is there any suggestions for this and in general the entire code?
Thank you.
python programming-challenge
python programming-challenge
New contributor
New contributor
New contributor
asked 8 hours ago
King ColdKing Cold
213 bronze badges
213 bronze badges
New contributor
New contributor
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
Indeed, the values
dictionary looks unnecessary. Using a built-in function ord
you could compute the letter score with ord(letter) - ord('a') + 1
. One may argue that it is even faster than a dictionary lookup, but in this case the timing difference is rather marginal.
With Python you should avoid rolling explicit loops. For example, collecting the word values is more idiomatically expressed as a comprehension:
word_values = [word_value(word) for word in word_list]
Similarly, instead of
for letter in input_word:
value += values[letter]
consider functools.reduce
:
value = functools.reduce(lambda x, y: x + ord(y) - ord('a') + 1, input_word, 0)
$endgroup$
add a comment |
$begingroup$
Welcome to code review, good job as your first program I suppose.
Style
Docstrings: Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. An object's docstring is defined by including a string constant as the first statement in the object's definition.
def word_value(input_word):
def high(x):
You should include a docstring with your functions indicating what they do specially the names are pretty ambiguous ...
def get_word_value(word):
"""Return word letter score."""
def get_highest_scoring_word(word_list):
"""Return highest scoring word."""
Blank lines: I suggest you check PEP0008 https://www.python.org/dev/peps/pep-0008/ the official Python style guide and regarding blank lines, use blank lines sparingly to separate logical sections inside a function (too many blank lines in your high function)
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
Code
First function
can be shortened in the following way:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
Second function:
word_list = x.split(" ")
split() has a default value of " " so no need to specify
word_list = x.split()
does the same functionality
Descriptive names:
word_list is extremely confusing, because word_list is not a list so I suggest changing the name to word_sequence
Comprehension syntax:
word_values = []
for word in word_list:
word_values.append(word_value(word))
this can be enclosed in a comprehension syntax (it's more efficient and shorter)
word_values = [word_value(word) for word in word_sequence]
Code might look like:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
def get_highest(word_sequence):
"""
Return word with the highest score assuming word_sequence a
string of words separated by space.
"""
return max(word_sequence.split(), key=get_value)
if __name__ == '__main__':
words = 'abc def ggg'
print(get_highest(words))
$endgroup$
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
add a comment |
$begingroup$
If performance isn't your main concern then consider the following approach of looking up the index of each character in an alphabet string. This will be slower than the other methods suggested, but provides greater readability.
def word_value(word):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# The +1 is not strictly necessary to get the right result
# since it shouldn't matter if the scores start from 0 or 1.
return sum(alphabet.index(char) + 1 for char in word)
def highest_valued_word(phrase):
return max(
(word for word in phrase.split(' ')),
# Use the `word_value` function to select the maximum.
key=word_value
)
New contributor
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
King Cold is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f227119%2fcodewars-highest-scoring-word%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Indeed, the values
dictionary looks unnecessary. Using a built-in function ord
you could compute the letter score with ord(letter) - ord('a') + 1
. One may argue that it is even faster than a dictionary lookup, but in this case the timing difference is rather marginal.
With Python you should avoid rolling explicit loops. For example, collecting the word values is more idiomatically expressed as a comprehension:
word_values = [word_value(word) for word in word_list]
Similarly, instead of
for letter in input_word:
value += values[letter]
consider functools.reduce
:
value = functools.reduce(lambda x, y: x + ord(y) - ord('a') + 1, input_word, 0)
$endgroup$
add a comment |
$begingroup$
Indeed, the values
dictionary looks unnecessary. Using a built-in function ord
you could compute the letter score with ord(letter) - ord('a') + 1
. One may argue that it is even faster than a dictionary lookup, but in this case the timing difference is rather marginal.
With Python you should avoid rolling explicit loops. For example, collecting the word values is more idiomatically expressed as a comprehension:
word_values = [word_value(word) for word in word_list]
Similarly, instead of
for letter in input_word:
value += values[letter]
consider functools.reduce
:
value = functools.reduce(lambda x, y: x + ord(y) - ord('a') + 1, input_word, 0)
$endgroup$
add a comment |
$begingroup$
Indeed, the values
dictionary looks unnecessary. Using a built-in function ord
you could compute the letter score with ord(letter) - ord('a') + 1
. One may argue that it is even faster than a dictionary lookup, but in this case the timing difference is rather marginal.
With Python you should avoid rolling explicit loops. For example, collecting the word values is more idiomatically expressed as a comprehension:
word_values = [word_value(word) for word in word_list]
Similarly, instead of
for letter in input_word:
value += values[letter]
consider functools.reduce
:
value = functools.reduce(lambda x, y: x + ord(y) - ord('a') + 1, input_word, 0)
$endgroup$
Indeed, the values
dictionary looks unnecessary. Using a built-in function ord
you could compute the letter score with ord(letter) - ord('a') + 1
. One may argue that it is even faster than a dictionary lookup, but in this case the timing difference is rather marginal.
With Python you should avoid rolling explicit loops. For example, collecting the word values is more idiomatically expressed as a comprehension:
word_values = [word_value(word) for word in word_list]
Similarly, instead of
for letter in input_word:
value += values[letter]
consider functools.reduce
:
value = functools.reduce(lambda x, y: x + ord(y) - ord('a') + 1, input_word, 0)
answered 8 hours ago
vnpvnp
43.1k2 gold badges36 silver badges110 bronze badges
43.1k2 gold badges36 silver badges110 bronze badges
add a comment |
add a comment |
$begingroup$
Welcome to code review, good job as your first program I suppose.
Style
Docstrings: Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. An object's docstring is defined by including a string constant as the first statement in the object's definition.
def word_value(input_word):
def high(x):
You should include a docstring with your functions indicating what they do specially the names are pretty ambiguous ...
def get_word_value(word):
"""Return word letter score."""
def get_highest_scoring_word(word_list):
"""Return highest scoring word."""
Blank lines: I suggest you check PEP0008 https://www.python.org/dev/peps/pep-0008/ the official Python style guide and regarding blank lines, use blank lines sparingly to separate logical sections inside a function (too many blank lines in your high function)
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
Code
First function
can be shortened in the following way:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
Second function:
word_list = x.split(" ")
split() has a default value of " " so no need to specify
word_list = x.split()
does the same functionality
Descriptive names:
word_list is extremely confusing, because word_list is not a list so I suggest changing the name to word_sequence
Comprehension syntax:
word_values = []
for word in word_list:
word_values.append(word_value(word))
this can be enclosed in a comprehension syntax (it's more efficient and shorter)
word_values = [word_value(word) for word in word_sequence]
Code might look like:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
def get_highest(word_sequence):
"""
Return word with the highest score assuming word_sequence a
string of words separated by space.
"""
return max(word_sequence.split(), key=get_value)
if __name__ == '__main__':
words = 'abc def ggg'
print(get_highest(words))
$endgroup$
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
add a comment |
$begingroup$
Welcome to code review, good job as your first program I suppose.
Style
Docstrings: Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. An object's docstring is defined by including a string constant as the first statement in the object's definition.
def word_value(input_word):
def high(x):
You should include a docstring with your functions indicating what they do specially the names are pretty ambiguous ...
def get_word_value(word):
"""Return word letter score."""
def get_highest_scoring_word(word_list):
"""Return highest scoring word."""
Blank lines: I suggest you check PEP0008 https://www.python.org/dev/peps/pep-0008/ the official Python style guide and regarding blank lines, use blank lines sparingly to separate logical sections inside a function (too many blank lines in your high function)
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
Code
First function
can be shortened in the following way:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
Second function:
word_list = x.split(" ")
split() has a default value of " " so no need to specify
word_list = x.split()
does the same functionality
Descriptive names:
word_list is extremely confusing, because word_list is not a list so I suggest changing the name to word_sequence
Comprehension syntax:
word_values = []
for word in word_list:
word_values.append(word_value(word))
this can be enclosed in a comprehension syntax (it's more efficient and shorter)
word_values = [word_value(word) for word in word_sequence]
Code might look like:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
def get_highest(word_sequence):
"""
Return word with the highest score assuming word_sequence a
string of words separated by space.
"""
return max(word_sequence.split(), key=get_value)
if __name__ == '__main__':
words = 'abc def ggg'
print(get_highest(words))
$endgroup$
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
add a comment |
$begingroup$
Welcome to code review, good job as your first program I suppose.
Style
Docstrings: Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. An object's docstring is defined by including a string constant as the first statement in the object's definition.
def word_value(input_word):
def high(x):
You should include a docstring with your functions indicating what they do specially the names are pretty ambiguous ...
def get_word_value(word):
"""Return word letter score."""
def get_highest_scoring_word(word_list):
"""Return highest scoring word."""
Blank lines: I suggest you check PEP0008 https://www.python.org/dev/peps/pep-0008/ the official Python style guide and regarding blank lines, use blank lines sparingly to separate logical sections inside a function (too many blank lines in your high function)
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
Code
First function
can be shortened in the following way:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
Second function:
word_list = x.split(" ")
split() has a default value of " " so no need to specify
word_list = x.split()
does the same functionality
Descriptive names:
word_list is extremely confusing, because word_list is not a list so I suggest changing the name to word_sequence
Comprehension syntax:
word_values = []
for word in word_list:
word_values.append(word_value(word))
this can be enclosed in a comprehension syntax (it's more efficient and shorter)
word_values = [word_value(word) for word in word_sequence]
Code might look like:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
def get_highest(word_sequence):
"""
Return word with the highest score assuming word_sequence a
string of words separated by space.
"""
return max(word_sequence.split(), key=get_value)
if __name__ == '__main__':
words = 'abc def ggg'
print(get_highest(words))
$endgroup$
Welcome to code review, good job as your first program I suppose.
Style
Docstrings: Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. An object's docstring is defined by including a string constant as the first statement in the object's definition.
def word_value(input_word):
def high(x):
You should include a docstring with your functions indicating what they do specially the names are pretty ambiguous ...
def get_word_value(word):
"""Return word letter score."""
def get_highest_scoring_word(word_list):
"""Return highest scoring word."""
Blank lines: I suggest you check PEP0008 https://www.python.org/dev/peps/pep-0008/ the official Python style guide and regarding blank lines, use blank lines sparingly to separate logical sections inside a function (too many blank lines in your high function)
word_values = []
for word in word_list:
word_values.append(word_value(word))
max_value = max(word_values)
index_of_max = word_values.index(max_value)
return word_list[index_of_max]
Code
First function
can be shortened in the following way:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
Second function:
word_list = x.split(" ")
split() has a default value of " " so no need to specify
word_list = x.split()
does the same functionality
Descriptive names:
word_list is extremely confusing, because word_list is not a list so I suggest changing the name to word_sequence
Comprehension syntax:
word_values = []
for word in word_list:
word_values.append(word_value(word))
this can be enclosed in a comprehension syntax (it's more efficient and shorter)
word_values = [word_value(word) for word in word_sequence]
Code might look like:
import string
def get_value(word):
"""Return word letter score."""
values = dict(zip(string.ascii_lowercase, range(1, 27)))
return sum(values[letter] for letter in word)
def get_highest(word_sequence):
"""
Return word with the highest score assuming word_sequence a
string of words separated by space.
"""
return max(word_sequence.split(), key=get_value)
if __name__ == '__main__':
words = 'abc def ggg'
print(get_highest(words))
edited 7 hours ago
answered 7 hours ago
Emad BoctorEmad Boctor
1,1412 silver badges16 bronze badges
1,1412 silver badges16 bronze badges
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
add a comment |
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
Thank you for your response. That is some beautiful code you wrote.
$endgroup$
– King Cold
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
$begingroup$
You're welcome man, I'm not an expert though
$endgroup$
– Emad Boctor
6 hours ago
add a comment |
$begingroup$
If performance isn't your main concern then consider the following approach of looking up the index of each character in an alphabet string. This will be slower than the other methods suggested, but provides greater readability.
def word_value(word):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# The +1 is not strictly necessary to get the right result
# since it shouldn't matter if the scores start from 0 or 1.
return sum(alphabet.index(char) + 1 for char in word)
def highest_valued_word(phrase):
return max(
(word for word in phrase.split(' ')),
# Use the `word_value` function to select the maximum.
key=word_value
)
New contributor
$endgroup$
add a comment |
$begingroup$
If performance isn't your main concern then consider the following approach of looking up the index of each character in an alphabet string. This will be slower than the other methods suggested, but provides greater readability.
def word_value(word):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# The +1 is not strictly necessary to get the right result
# since it shouldn't matter if the scores start from 0 or 1.
return sum(alphabet.index(char) + 1 for char in word)
def highest_valued_word(phrase):
return max(
(word for word in phrase.split(' ')),
# Use the `word_value` function to select the maximum.
key=word_value
)
New contributor
$endgroup$
add a comment |
$begingroup$
If performance isn't your main concern then consider the following approach of looking up the index of each character in an alphabet string. This will be slower than the other methods suggested, but provides greater readability.
def word_value(word):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# The +1 is not strictly necessary to get the right result
# since it shouldn't matter if the scores start from 0 or 1.
return sum(alphabet.index(char) + 1 for char in word)
def highest_valued_word(phrase):
return max(
(word for word in phrase.split(' ')),
# Use the `word_value` function to select the maximum.
key=word_value
)
New contributor
$endgroup$
If performance isn't your main concern then consider the following approach of looking up the index of each character in an alphabet string. This will be slower than the other methods suggested, but provides greater readability.
def word_value(word):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
# The +1 is not strictly necessary to get the right result
# since it shouldn't matter if the scores start from 0 or 1.
return sum(alphabet.index(char) + 1 for char in word)
def highest_valued_word(phrase):
return max(
(word for word in phrase.split(' ')),
# Use the `word_value` function to select the maximum.
key=word_value
)
New contributor
New contributor
answered 7 hours ago
rob.earwakerrob.earwaker
2115 bronze badges
2115 bronze badges
New contributor
New contributor
add a comment |
add a comment |
King Cold is a new contributor. Be nice, and check out our Code of Conduct.
King Cold is a new contributor. Be nice, and check out our Code of Conduct.
King Cold is a new contributor. Be nice, and check out our Code of Conduct.
King Cold is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f227119%2fcodewars-highest-scoring-word%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown