From 9243782e5c4fe456e60eff6b8565f66af495c4dc Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Sun, 8 Sep 2024 18:11:41 +0100 Subject: Add Python solution to challenge 053 --- challenge-053/paulo-custodio/python/ch-2.py | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 challenge-053/paulo-custodio/python/ch-2.py (limited to 'challenge-053/paulo-custodio/python/ch-2.py') diff --git a/challenge-053/paulo-custodio/python/ch-2.py b/challenge-053/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..2672f2d84a --- /dev/null +++ b/challenge-053/paulo-custodio/python/ch-2.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +# Challenge 053 +# +# TASK #2 +# Vowel Strings +# Write a script to accept an integer 1 <= N <= 5 that would print all possible +# strings of size N formed by using only vowels (a, e, i, o, u). +# +# The string should follow the following rules: +# +# 'a' can only be followed by 'e' and 'i'. +# +# 'e' can only be followed by 'i'. +# +# 'i' can only be followed by 'a', 'e', 'o', and 'u'. +# +# 'o' can only be followed by 'a' and 'u'. +# +# 'u' can only be followed by 'o' and 'e'. +# +# For example, if the given integer N = 2 then script should print the following +# strings: +# +# ae +# ai +# ei +# ia +# io +# iu +# ie +# oa +# ou +# uo +# ue + +import sys + +def show_vowels(n, string): + if len(string) == n: + print(string) + elif string == "": + for vowel in ['a', 'e', 'i', 'o', 'u']: + show_vowels(n, string+vowel) + elif string[-1] == 'a': + for vowel in ['e', 'i']: + show_vowels(n, string+vowel) + elif string[-1] == 'e': + for vowel in ['i']: + show_vowels(n, string+vowel) + elif string[-1] == 'i': + for vowel in ['a', 'e', 'o', 'u']: + show_vowels(n, string+vowel) + elif string[-1] == 'o': + for vowel in ['a', 'u']: + show_vowels(n, string+vowel) + elif string[-1] == 'u': + for vowel in ['e', 'o']: + show_vowels(n, string+vowel) + else: + print("expected vowel, got "+string) + +n = int(sys.argv[1]) +show_vowels(n, "") -- cgit