Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for The Most Wanted Letter by ribozz
# migrated from python 2.7
import string
from collections import Counter, namedtuple
def checkio(text):
# This will improve readability a bit, as we can use names instead of indexes
Item = namedtuple('Item', ['char', 'count'])
# prepare stats
stats = [Item(*i) for i in Counter([
x for x in text.lower() # case doesnt't matter
if x in string.ascii_lowercase # count only letters
]).most_common()]
# get one or more leading counts
most_wanted = [item.char for item in stats if item.count == stats[0].count]
# return first result in alphabetical order
return sorted(most_wanted)[0]
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("Hello World!") == "l", "Hello test"
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("fsbd") == "b", "All letter only once 1."
assert checkio("One") == "e", "All letter only once 2."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
Nov. 21, 2015
Comments: