String — Самый Палиндромный Код Для Вычисления Чисел-Палиндромов

  • Автор темы Koct9ih90
  • Обновлено
  • 22, Oct 2024
  • #1

Строка

 
 
 
 
 a -> 0
aba -> 0
ababa -> 0
abababa -> 0
ffffffff -> 0
xyz -> 1
abaa -> 1
abaaa -> 1
abaaaaa -> 1
ooooooops -> 1
kvxb -> 2
kayak -> 2
abaaba -> 2
abaaaba -> 2
avakava -> 2
aaaaakykaaaaa -> 2
abaaaaba -> 3
ababab -> 4
abababab -> 8
 

Это палиндром, то есть он не меняется при переворачивании. Однако мы можем разделить его пополам и получить два палиндрома.

z

Мы также могли бы разделить это следующим образом:

a

И все три из них являются палиндромами.

На самом деле есть только два способа разбить строку на более мелкие строки, так что никто из них палиндромы:

abaa ba ab aaba

При любом другом способе разделения будет хотя бы один палидром.

Итак, мы скажем, что эта строка имеет палиндромное число из 2. В более общем смысле число палиндромности строки — это количество способов разделить ее на смежные подстроки, так что ни одна из них не является палиндромом.

Ваша задача будет взять на вход строку и определить ее число-палиндром. Ваш ответ должен корректно работать для входных данных, содержащих строчные буквы ( a baab a - aba aba ) вместе со всеми символами, используемыми в исходном коде вашей программы.

Подсчет очков

Ваш ответ будет оценен по его собственному числу-палиндрому. Целью является наименьший балл. В случае ничьей решающим фактором является

Эта оценка означает, что если вы решите эту задачу в Brainfuck, вы можете получить ответ по языку с основной оценкой 0. Так что, если вы энтузиаст языка, это просто игра в гольф.

Вот программа для оценки вашего кода.

Тестовые случаи

abaaba

#code-golf #string #source-layout #palindrome #самооценка

Koct9ih90


Рег
26 Feb, 2013

Тем
63

Постов
188

Баллов
533
  • 26, Oct 2024
  • #2

Желе, оценка 3, 755962277730462996760664 байт

 
 
 
 
 
 
 
 
 
 
 {{ 

Попробуйте онлайн!

-5 баллов и +тонны байт благодаря идее @ovs.

f!f part contains exactly 755962277730462996760660 copies of Æ₧ⁿ+Ü█>la символ, длина которого кодирует следующую программу в базе 256:

Желе, 10 байт

L # Length ṄvṖ # All permutations of partitions ⁽J? # Flatten by 1 level U # Uniquify ƛ ; # Foreach vɾ:?f$• # Mold input to those pieces (see above link) ' ;L # Number of values where ƛḂ≠;A # All aren't palindromes.

Попробуйте онлайн!

Основной код представляет собой небольшую вариацию Ответ чувака (использование альтернативных встроенных модулей и метод ввода изменены на «одну строку из стандартного ввода»), поэтому вместо этого приводится объяснение части кодирования:

LṄvṖ⁽J?Uƛvɾ:?f$•;'ƛḂ≠;A;L

3 непалиндромных раздела O_O are:

Q]O_O ||answer||

Желе, оценка 14 12,9 байт

Ê]PO

Попробуйте онлайн!

Я думал, что это будет скорее базовый претендент, но любые изменения, которые я вношу в него, чтобы попытаться сделать его более палиндромным, вместо этого только увеличивают его. Итак, это просто прямая реализация.

-2 балла благодаря ксигои

Как это работает

.œ # Get all partitions of the (implicit) input-string ε # Map over each partition: ε # Map over each part in this partition: # Check that it's NOT a palindrome by:  # Bifurcating it (short for Duplicate & Reverse copy) Ê # And check that this reversed copy is not equal to the original string ] # Close both nested maps P # Check for each partition whether no part was a palindrome O # Sum to get the amount of truthy values # (after which the result is output implicitly) ||answer||

05AB1E, оценка 18 (9 байты)

.œεεÂÊ]PO

Попробуйте онлайн или проверить все тестовые примеры, включая самого себя.

Объяснение:

ŒṖŒḂ€€§¬§ - Main link. Takes a string S on the left ŒṖ - Get all partitions of S € - Over each partition: € - Over each substring in the partition: ŒḂ - Is the substring a palindrome? § - Get the sum of each (counting how many substrings are palindromic) ¬ - Logical not. Map zeros to one, everything else to zero § - Sum, counting the zeros

Я не думаю, что этот показатель или количество байтов можно улучшить, но мне бы хотелось, чтобы меня опровергли. Увеличение размера программы в целом увеличивает оценку, в противном случае ŒṖŒḂ€€§¬§ to ...aaaabcde ...aaaabc|de ...aaaab|cde было бы достойным изменением с палиндромом ...aaaabcde (this scores 22 at 10 bytes btw).

 

Gertor


Рег
27 Jan, 2007

Тем
85

Постов
196

Баллов
651
  • 26, Oct 2024
  • #3

Виксал, 25 байт, оценка 46368

...‘‘‘‘ṃØJV Main link (niladic). ...‘‘‘‘ Increment from zero 755..whatever..660 times ṃØJ Base decompress into Jelly's code page V Eval as a nilad (input is handled in the code itself)

Попробуйте онлайн!

-3 спасибо Аарону Миллеру.

Большой беспорядок. Часть кода бесстыдно украдено у Ликсала.

ɠŒṖŒḂ€€§¬S ||answer||

Стакс, оценка 21 (9 байты)

Запустите и отладьте его

упакованное представление имеет меньшие результаты, как показано в тестах.

Несмотря на существование ...‘‘‘‘ and ...‘‘‘‘ṃØJV в распакованной версии количество символов просто удваивает счет.

 

Mehran72


Рег
07 Jun, 2014

Тем
67

Постов
194

Баллов
539
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно