Advertisement
Woobinda

"Striped Words"

Aug 5th, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. """
  2. Алфавит разделен на гласные и согласные буквы (Да, мы разделили буквы, а не звуки).
  3. Гласные -- A E I O U Y
  4. Согласные -- B C D F G H J K L M N P Q R S T V W X Z
  5.  
  6. Дан текст с разными словами и/или числами, которые разделены пробелами и знаками пунктуации. Числа не считаются за слова (также как и смесь букв и цифр). Необходимо подсчитать слова, в которых гласные буквы чередуются с согласными (полосатые слова), то есть в таких словах нет двух гласных или двух согласных букв подряд. Слова состоящие из одной буквы - не "полосатые" (не считайте их). Регистр букв не имеет значения.
  7. """
  8.  
  9. import re
  10.  
  11. VOWELS = "AEIOUY".lower()
  12. CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ".lower()
  13.  
  14.  
  15. def check(word):
  16.     result = list(map(lambda x: 1 if x in VOWELS else 0, word))
  17.     for i in range(len(result) - 1):
  18.         if result[i] == result[i + 1]:
  19.             return False
  20.     return True
  21.  
  22.  
  23. def checkio(text):
  24.     return sum([check(word) for word in [x.lower() for x in re.findall(r"[\w]+", text)] if len(word) > 1])
  25.  
  26.  
  27. #These "asserts" using only for self-checking and not necessary for auto-testing
  28. if __name__ == '__main__':
  29.     assert checkio("My name is ...") == 3, "All words are striped"
  30.     assert checkio("Hello world") == 0, "No one"
  31.     assert checkio("A quantity of striped words.") == 1, "Only of"
  32.     assert checkio("Dog,cat,mouse,bird.Human.") == 3, "Dog, cat and human"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement