Skip to content

Napoleon Dynamite Problem


Here are quotes from Napoleon Dynamite.

quotes = [
    "Tina you fat lard!",
    "Your mom goes to college.",
    "How long did it take you to grow that mustache?",
    "Kip, Bring Me My Chapstick!",
    "I Caught You A Delicious Bass.",
    "I Told You! I Spent It With My Uncle In Alaska Hunting Wolverines!",
    "How Much Do You Want To Bet I Can Throw This Football Over Them Mountains?",
    "Napoleon, Don't Be Jealous That I've Been Chatting Online With Babes All Day"
]

Subset this list down to quotes that meet the following condition:

  • The first vowel in the quote matches the last vowel in the quote, regardless of character case.
Expected result
filtered = [
    "Kip, Bring Me My Chapstick!", # (1)!
    "Napoleon, Don't Be Jealous That I've Been Chatting Online With Babes All Day" # (2)!
]
  1. The first and last observed vowel is i
  2. The first and last observed vowel is a
Regex Functions
Function Description Return Value
re.findall(pattern, string, flags=0) Find all non-overlapping occurrences of pattern in string list of strings, or list of tuples if > 1 capture group
re.finditer(pattern, string, flags=0) Find all non-overlapping occurrences of pattern in string iterator yielding match objects
re.search(pattern, string, flags=0) Find first occurrence of pattern in string match object or None
re.split(pattern, string, maxsplit=0, flags=0) Split string by occurrences of pattern list of strings
re.sub(pattern, repl, string, count=0, flags=0) Replace pattern with repl new string with the replacement(s)
Regex Patterns
Pattern Description
[abc] a or b or c
[^abc] not (a or b or c)
[a-z] a or b ... or y or z
[1-9] 1 or 2 ... or 8 or 9
\d digits [0-9]
\D non-digits [^0-9]
\s whitespace [ \t\n\r\f\v]
\S non-whitespace [^ \t\n\r\f\v]
\w alphanumeric [a-zA-Z0-9_]
\W non-alphanumeric [^a-zA-Z0-9_]
. any character
x* zero or more repetitions of x
x+ one or more repetitions of x
x? zero or one repetitions of x
{m} m repetitions
{m,n} m to n repetitions
{m,n} m to n repetitions
\\, \., \* backslash, period, asterisk
\b word boundary
^hello starts with hello
bye$ ends with bye
(...) capture group
(po|go) po or go

Try with Google Colab