30 lines
836 B
Python
30 lines
836 B
Python
# HumanEval/10
|
|
# Loki Mode Multi-Agent Solution
|
|
# Attempts: 1
|
|
# Passed: True
|
|
|
|
def is_palindrome(string: str) -> bool:
|
|
""" Test if given string is a palindrome """
|
|
return string == string[::-1]
|
|
|
|
|
|
def make_palindrome(string: str) -> str:
|
|
""" Find the shortest palindrome that begins with a supplied string.
|
|
Algorithm idea is simple:
|
|
- Find the longest postfix of supplied string that is a palindrome.
|
|
- Append to the end of the string reverse of a string prefix that comes before the palindromic suffix.
|
|
>>> make_palindrome('')
|
|
''
|
|
>>> make_palindrome('cat')
|
|
'catac'
|
|
>>> make_palindrome('cata')
|
|
'catac'
|
|
"""
|
|
if not string:
|
|
return ''
|
|
|
|
for i in range(len(string)):
|
|
if is_palindrome(string[i:]):
|
|
return string + string[:i][::-1]
|
|
|
|
return string |