Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
List comprehension, but multi-line :( solution in Clear category for Words Order by spitfire_ch
def words_order(text: str, words: list) -> bool:
elements = text.split()
try:
[elements := elements[elements.index(word)+1:] for word in words]
except ValueError:
return False
return len(words) == len(set(words))
# looking for hints of how to further reduce the number of lines.
# Is it possible to do that all in list comprehension? Thx :)
if __name__ == '__main__':
print("Example:")
print(words_order('hi world im here', ['world', 'here']))
# These "asserts" are used for self-checking and not for an auto-testing
assert words_order('hi world im here', ['world', 'here']) == True
assert words_order('hi world im here', ['here', 'world']) == False
assert words_order('hi world im here', ['world']) == True
assert words_order('hi world im here',
['world', 'here', 'hi']) == False
assert words_order('hi world im here',
['world', 'im', 'here']) == True
assert words_order('hi world im here',
['world', 'hi', 'here']) == False
assert words_order('hi world im here', ['world', 'world']) == False
assert words_order('hi world im here',
['country', 'world']) == False
assert words_order('hi world im here', ['wo', 'rld']) == False
assert words_order('', ['world', 'here']) == False
print("Coding complete? Click 'Check' to earn cool rewards!")
Aug. 29, 2021
Comments: