Получая строку l
, найти все палиндромную подстроку p
из l
( в том числе дубликатов и отдельных строк символов). Затем переставьте все подстроки в p
правильный палиндром (может быть несколько правильных ответов). Если невозможно переставить p
в один палиндром, ваша программа может иметь неопределенное поведение (ошибка, переполнение стека, выход, зависание / несвоевременное убийство Джона Дворжака и т. Д ...)
Примеры
Допустимые тестовые случаи
l = anaa
p = ['a', 'n', 'a', 'a', 'aa', 'ana']
result = anaaaaana or aanaaanaa or aaananaaa
l = 1213235
p = ['1', '2', '1', '3', '2', '3', '5', '121', '323']
result = 1213235323121
l = racecar
p = ['r', 'a', 'c', 'e', 'c', 'a', 'r', 'cec', 'aceca', 'racecar']
result = racecarcecaacecracecar (there are others)
l = 11233
p = ['1', '11', '1', '2', '3', '33', '3']
result = 113323311 or 331121133
l = abbccdd
p = ['a', 'b', 'bb', 'b', 'c', 'cc', 'c', 'd', 'dd', 'd']
result = bbccddaddccbb or ccbbddaddbbcc or (etc...)
l = a
p = ['a']
result = a
Неверные тестовые случаи (не возможно)
l = 123456789
p = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
result = <not possible, behavior undefined>
l = hjjkl
p = ['h', 'j', 'jj', 'j', 'k', 'l']
result = <not possible, behavior undefined>
l = xjmjj
p = ['x', 'j', 'jmj', 'm', 'j', 'jj', 'j']
result = <not possible, behavior undefined>
правила
- Если входное слово само по себе является палиндромом, оно всегда будет действительным как входное.
- Должна быть возвращена только одна подстрока, которую вы выбираете произвольно, если она действительна.
- Если у входа нет жизнеспособного выхода, ваш код может иметь неопределенное поведение.
- Входы будут содержать только ASCII-печатные символы между ними
0x20-0x7E
. - Это код-гольф , самый низкий счетчик байтов является победителем.
code-golf
array-manipulation
permutations
palindrome
Урна волшебного осьминога
источник
источник
"abbccdd"
неверен: последние две буквы должны быть"bb"
, а не"dd"
.Ответы:
Брахилог , 10 байт
Попробуйте онлайн!
Сбои (т.е. печатает
false.
), если это невозможно.объяснение
источник
Кокос , 140 байт
Попробуйте онлайн!
источник
JavaScript (ES6), 193 байта
«Смотри, мама, никакой перестановки нет!» (Так что да ... это долго ...)
Возвращает пустой массив, если нет решения.
демонстрация
Показать фрагмент кода
Как?
Давайте разделим код на более мелкие части.
Мы определяем P () , функцию, которая возвращает s, если s - палиндром, или false в противном случае.
Мы вычисляем все подстроки входной строки s . Используя P () , мы изолируем непустые палиндромы и сохраняем их в массиве a .
Основная рекурсивная функция f () принимает в качестве входных данных и вычисляет все ее перестановки. Он обновляет S всякий раз , когда сама перестановка палиндром (один раз присоединился), и в конце концов возвращается окончательное значение S .
источник
Желе , 13 байт
Попробуйте онлайн!
Печать
0
в неверном случае.источник
05AB1E ,
1312 байтПопробуйте онлайн!
-1 байт благодаря Волшебной Урне Осьминога и Энигме.
источник
J
автоматически факторизуется, поэтому вам не нужно€J
простоJ
; Кроме того, вы должны вернуть один из палиндромов, а не все. Попробуйте онлайн! действителен для того же количества байтов.Ùć
может быть¤
(или ряд других вариантов)Ù
этом не было необходимости.Stax , 13 байт
Выполнить тестовые случаи (на моем текущем компьютере это займет около 10 секунд)
Это соответствующее представление ascii той же программы.
Это не совсем чистый перебор, но он такой же маленький, как и реализация перебора, которую я написал. Тот разбил мой браузер примерно через 10 минут. Во всяком случае, вот как это работает.
источник
Рубин ,
131123120 байтПопробуйте онлайн!
Лямбда, принимающая строку и возвращающая строку. Возвращает,
nil
когда решения не существует.-5 байт: заменить
select{|t|l[t]}
наselect(&l)
-3 байта: заменить
map{..}.flatten
наflat_map{...}
-1 байт: цикл по длине подстроки и началу подстроки, а не по началу подстроки и концу подстроки
-2 байта: объявлять
z
при первом использовании, а не заранееисточник
Pyth , 13 байт
Попробуйте онлайн!
-1 байт благодаря мистеру Xcoder
источник
h_I#sM.p_I#.:
илиe_IDsM.p_I#.:
для 13 байтов.Python 3 , 167 байт
Попробуйте онлайн!
-2 байта благодаря мистеру Xcoder
источник
a[i:j+1]
если затем используетеfor j in range(i,len(a))
вместо -2 байт.Japt , 19 байт
Помешанный Яптом (пока) не получить все подстроки строки (и частично из-за моих текущих уровней истощения!).
Выводы,
undefined
если нет решения.Попытайся
объяснение
источник
¬
из вашего ответа: P?m¬
но тогда бы мне было нужно,æ_¬êQ
чтобы это не спасло бы байты в любом случае!Шелуха , 12 байт
Попробуйте онлайн!
объяснение
источник
J , 53 байта
Попробуйте онлайн!
источник