Files
wehub-resource-sync dde272c4b8
i18n - Build Validation / Validate i18n Builds (24) (push) Has been cancelled
CI - Node.js / Lint (24) (push) Has been cancelled
CI - Node.js / Build (24) (push) Has been cancelled
CI - Node.js / Test (24) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (24) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 24) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 24) (push) Has been cancelled
CD - Docker - GHCR Images / Build and Push Images (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:53 +08:00

2.6 KiB

id, title, challengeType, dashedName
id title challengeType dashedName
6a2037a68a0bc2aef0006002 Challenge 340: Pig Latin Converter 29 challenge-340

--description--

Given a string, convert it to Pig Latin using the following rules:

  • If a word begins with a vowel ("a", "e", "i", "o", or "u"), add "way" to the end. For example, "universe" converts to "universeway".
  • If a word begins with one or more consonants, move them to the end and add "ay". For example, "hello" converts to "ellohay".
  • Preserve the case of the first letter. For example, "Hello" converts to "Ellohay".

--hints--

pig_latin("universe") should return "universeway".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("universe"), "universeway")`)
}})

pig_latin("hello") should return "ellohay".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("hello"), "ellohay")`)
}})

pig_latin("hello universe") should return "ellohay universeway".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("hello universe"), "ellohay universeway")`)
}})

pig_latin("Hello universe") should return "Ellohay universeway".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("Hello universe"), "Ellohay universeway")`)
}})

pig_latin("Pig Latin is fun") should return "Igpay Atinlay isway unfay".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("Pig Latin is fun"), "Igpay Atinlay isway unfay")`)
}})

pig_latin("The quick brown fox jumped over the lazy dog") should return "Ethay uickqay ownbray oxfay umpedjay overway ethay azylay ogday".

({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(pig_latin("The quick brown fox jumped over the lazy dog"), "Ethay uickqay ownbray oxfay umpedjay overway ethay azylay ogday")`)
}})

--seed--

--seed-contents--

def pig_latin(s):

    return s

--solutions--

def pig_latin(s):
    vowels = "aeiou"

    def convert_word(word):
        lower_word = word.lower()
        if lower_word[0] in vowels:
            return word + "way"
        i = 0
        while i < len(word) and lower_word[i] not in vowels:
            i += 1
        consonants = word[:i]
        rest = word[i:]
        result = rest + consonants + "ay"
        if word[0].isupper():
            return result[0].upper() + result[1:].lower()
        return result

    return " ".join(convert_word(word) for word in s.split(" "))