CodeWars: Simple Pig Latin
Table of Contents
Description
Move the first letter of each word to the end of it, then add "ay" to the end of the word. Leave punctuation marks untouched.
Code
Imports
# pypi
from expects import equal, expect
Submission
import re
LETTERS = re.compile(r"[a-zA-Z]")
WORD_BOUNDARY = re.compile(r"\b")
def convert(token: str) -> str:
"""Convert a single word to pig-latin
Args:
token: string representing a single token
Returns:
pig-latinized word (if appropriate)
"""
return (f"{token[1:]}{token[0]}ay"
if token and LETTERS.match(token) else token)
def pig_it(text: str) -> str:
"""Basic pig latin converter
Moves first letter of words to the end and adds 'ay' to the end
Args:
text: string to pig-latinize
Returns:
pig-latin version of text
"""
return "".join(convert(token) for token in WORD_BOUNDARY.split(text))
expect(pig_it('Pig latin is cool')).to(equal('igPay atinlay siay oolcay'))
expect(pig_it('This is my string')).to(equal('hisTay siay ymay tringsay'))
expect(pig_it("Hello World !")).to(equal("elloHay orldWay !"))