Абстрактная задача переписывания (Cops)

27

Это несколько -как вызов. Это нить полицейских; нить грабителей здесь.

Менты

Ваша задача - определить абстрактную систему переписывания, в которой трудно определить достижимость одного слова из другого. Вы подготовите следующие вещи:

  1. Набор символов, называемый алфавитом. (Вы можете использовать любые символы Юникода для них, но, пожалуйста, не используйте пробелы или символы, которые трудно отличить друг от друга.)

  2. Исходная строка состоит из символов из вашего алфавита.

  3. Целевая строка состоит из символов из вашего алфавита.

  4. Набор правил переписывания с использованием символов вашего алфавита. (См. Ниже определение правила перезаписи.)

  5. Доказательство того, что исходная строка может быть преобразована в целевую строку путем последовательного применения правил перезаписи. Это доказательство может состоять из фактической последовательности шагов перезаписи, или математического доказательства того, что такая последовательность должна существовать, или математического доказательства того, что такая последовательность не существует.

Вы опубликуете первые четыре из них, сохраняя доказательства в секрете; грабители попытаются взломать ваш ответ, предоставив собственное доказательство того, что ваша целевая строка может или не может быть достигнута из вашей исходной строки. Если ваша заявка не была взломана в течение двух недель , вы можете пометить ее как безопасную и отредактировать в своем доказательстве.

Материалы будут оцениваться в соответствии с количеством символов в их правилах перезаписи, а также их исходной и целевой строками, как описано ниже. Победителем станет не взломанная заявка с самым низким счетом.

Что такое правило перезаписи?

Правило перезаписи - это просто пара строк в вашем алфавите. (Любая из этих строк может быть пустой.) Применение правила перезаписи состоит в том, чтобы найти подстроку, равную первой строке в паре, и заменить ее второй.

Пример должен прояснить это:

Предположим, алфавит есть A, Bи C; исходная строка " A"; целевая строка " C" и правила перезаписи

A:B
B:BB
B:A
AA:C

тогда целевая строка достижима следующим образом:

A
B   (using rule 1)
BB  (using rule 2)
AB  (using rule 3)
AA  (using rule 3)
C   (using rule 4)

счет

Ваша оценка будет

  • длина вашей исходной строки,
  • плюс длина вашей целевой строки,
  • плюс длина всех строк, включенных в ваши правила перезаписи,
  • плюс один дополнительный балл за каждое правило перезаписи.

Если вы напишите свои правила перезаписи с разделителем двоеточий, как указано выше, это будет только общая длина всех правил перезаписи (включая разделитель), плюс длины строк источника и назначения. Чем ниже балл, тем лучше. Количество различных символов в вашем алфавите будет использоваться для разрыва связей, при этом меньшее количество будет лучше.

премия

Я хотел бы видеть ответы, которые действительно идут за низкие оценки. Я присуждаю 200 повторений за первый ответ, который набрал менее 100 баллов в этом задании и не получил трещины.

Натаниель
источник
3
Бах, недостаточно выразительный для загадки MU .
Нил
1
@Neil технически они такие же выразительные, как машины Тьюринга - вы могли бы создать версию головоломки MU, но вам понадобится куча дополнительных символов и правил перехода для реализации этого Mx -> Mxxправила, так что в конечном итоге это будет намного сложнее, чем у Хофштадтера. оригинал.
Натаниэль

Ответы:

9

326 баллов - Трещины по jimmy23013

Уровень - Picokosmos # 13 от Aymeric du Peloux (с тривиальной модификацией). Я попытался найти со вкусом уровень, который мог бы быть реализован с «коробками» и «стенами», являющимися одним и тем же персонажем. Для этого уровня это было возможно, если сделать центральную заслонку двумя столбцами, а не одной.

Правила / начальные / целевые строки могут быть немного лучше, но это просто для удовольствия.

Начальная строка:

___##___####_____##_#_#_##_#_!####______##_#####__####_#_######__###__

Целевая строка:

___##___####_____##_#_#_##_#_#####____!__#_#####__####_#_######__###__

Правила:

_wW:!
_<:<_
Vv_:!
V_:_V
R:>>>>>>>>>>>>>
V#:#V
#w<:w#
>v_:_v
_wX:#
_!:!_
!:wLW_
L:<<<<<<<<<<<<<
#W:W#
!#_:_!#
_w<:w_
#<:<#
!:_VRv
>v#:#v
Uv_:#
_W:W_
_X:X_
>#:#>
#X:X#
U_:_U
Vv#:!URv
#wW:wLX!
>_:_>
!_:_!
_#!:#!_
U#:#U
feersum
источник
Трещины.
jimmy23013
8

171 очко, взломанный HyperNeutrino

Источник: YAAAT

Цель: VW626206555675126212043640270477001760465526277571600601

Правила:

T:AAAAAT
T:BBU
U:BU
U:ZW
AB:BCA
CB:BC
AZ:Z
CZ:ZC
YB:Y
YZ:V
V:VD
DCC:CD
DCW:W+
DW:W_
___:0
__+:1
_+_:2
_++:3
+__:4
+_+:5
++_:6
+++:7

Просто что-то очевидное, чтобы сделать. Фактическая последовательность шагов перезаписи, вероятно, не будет соответствовать SE-ответу.

jimmy23013
источник
Должно быть, я где-то запутался, потому что я могу попасть туда, VWxгде xсформирован только из любой двоичной строки _(0) и +(1), которые оцениваются 10*n+6(включая ведущий _; n= неотрицательное целое число), но xданный ( 626...601) формируется из двоичного кода, который оценивает чтобы 10*n+3(для большого n).
Джонатан Аллан
Такие вещи разрешимы чистой логикой?
VortexYT
@HyperNeutrino Драт, я надеялся, что твоя трещина разоблачит, где я наткнулся.
Джонатан Аллан
4

139 баллов (безопасно)

Я хотел, чтобы этот ответ был взломан, и пользователь 202729 в ​​основном решил его в комментариях, но никто не опубликовал ответ в ветке грабителей, поэтому я отмечаю его как «безопасный» и включаю мое доказательство ниже.

(Эти вещи, очевидно, гораздо проще сделать, чем взломать. Никто еще не пытался достичь действительно низкого балла, хотя, возможно, было бы гораздо веселее в этом конце, если этот вызов когда-нибудь взлетит. )


Вот и ответ сам. Это потенциально очень сложно, но должно быть легко, если вы решите, откуда это пришло.

алфавит: ABCDEⒶⒷⒸⒹⒺⒻ⬛⚪️️🎂←→

источник: ←A→

цель: ←🎂→

Правила: (пробел не имеет значения)

← : ←⬛
→ : ⬛→
A⬛ : ⚪B
A⚪ : ⚪Ⓑ
⬛Ⓐ : E⚪
⚪Ⓐ : Ⓔ⚪
B⬛ : ⚪C
B⚪ : ⚪Ⓒ
Ⓑ⬛ : 🎂
Ⓑ⚪ : ⚪Ⓕ
⬛C : D⚪
⚪C : Ⓓ⚪
Ⓒ⬛ : ⬛B
Ⓒ⚪ : ⬛Ⓑ
D⬛ : ⚪E
D⚪ : ⚪Ⓔ
⬛Ⓓ : C⬛
⚪Ⓓ : Ⓒ⬛
⬛E : A⚪
⚪E : Ⓐ⚪
Ⓔ⬛ : ⬛D
Ⓔ⚪ : ⬛Ⓓ
Ⓕ⬛ : ⚪C
Ⓕ⚪ : ⚪Ⓒ
⬛🎂 : 🎂
⚪🎂 : 🎂
🎂⬛ : 🎂
🎂⚪ : 🎂

Вот версия ASCII , на случай, если юникод не будет хорошо отображаться для всех.


доказательство

Это эквивалентно текущему лучшему сопернику для бобра, занятого в шести штатах . Занятый бобер - это машина Тьюринга, которая останавливается после очень долгого времени. Из-за этого исходная строка ←A→действительно может быть преобразована в целевую строку ←🎂→, но только после нескольких 7*10^36534шагов, что займет намного больше времени, чем возраст вселенной для любой физической реализации.

Лента машины Тьюринга представлена ​​символами (0) и (1). Правила

← : ←⬛
→ : ⬛→

означает, что концы ленты всегда могут быть расширены с большим количеством нулей. Если головка машины Тьюринга когда-нибудь окажется рядом с одним концом ленты, мы можем просто применить одно из этих правил, которое позволяет нам делать вид, что лента бесконечна и начинается со всех нулей. (Символы и никогда не созданы или уничтожены, чтобы они всегда были на концах ленты.)

Головка машины Тьюринга представлена ​​символами ABCDEⒶⒷⒸⒹⒺⒻи 🎂. Aозначает, что голова в состоянии, Aа символ под головой - (0), тогда как Ⓐ означает, что он в состоянии, Aа символ под ним - (1). Это продолжается для других состояний, где обведенная буквой буква, представляющая 1 под головкой, и версия, не обведенная кружком, представляющая 0. (Нет символа, Fпотому что случается так, что голова никогда не заканчивается в состоянии Fс 1 под ней.)

Состояние 🎂- состояние остановки. У него есть особые правила

⬛🎂 : 🎂
⚪🎂 : 🎂
🎂⬛ : 🎂
🎂⚪ : 🎂

Если состояние остановки когда-либо достигнуто, мы можем многократно применять эти правила, чтобы «всасывать» всю ленту (включая любые дополнительные нули, которые возникли в результате расширения ленты больше, чем необходимо), оставляя нас в этом состоянии ←🎂→. Поэтому проблема достижимости сводится к тому, 🎂будет ли когда-либо достигнуто государство.

Остальные правила - это правила перехода для машины Тьюринга. Например, правила

A⬛ : ⚪B
A⚪ : ⚪Ⓑ

можно прочитать как «если машина находится в состоянии A, а под головкой есть ноль, то напишите 1, перейдите в состояние B и двигайтесь вправо». Перемещение вправо требует двух правил, потому что ячейка ленты справа может содержать a , и в этом случае машина должна перейти в состояние B, или ячейка может содержать a , и в этом случае она должна перейти в состояние , так как под ней есть.

По аналогии,

⬛Ⓓ : C⬛
⚪Ⓓ : Ⓒ⬛

означает «если машина находится в состоянии D, а под головой есть 1, то напишите 0, перейдите в состояние C и двигайтесь влево».

Используемая машина Тьюринга была открыта Павлом Кропицем в 2010 году. Хотя ее часто упоминают в контексте занятых бобров, ее фактическую таблицу переходов немного сложнее отследить, но ее можно найти, например, здесь . Это можно записать как

    0   1

A   1RB 1LE
B   1RC 1RF
C   1LD 0RB
D   1RE 0LC
E   1LA 0RD
F   1RH 1RC

что может быть прочитано как «если машина находится в состоянии A и под головкой есть ноль, то напишите 1, перейдите в состояние B и двигайтесь вправо» и так далее. Должно быть простым, если трудоемким, проверить, что каждая запись в этой таблице соответствует паре правил, как описано выше.

Единственное исключение - это правило, 1RHкоторое возникает, когда машина находится в состоянии F, превышающем 0, потому что казалось совершенно бессмысленным заставлять машину писать 1 и двигаться вправо, когда она может просто сразу же остановиться, как только она когда-нибудь войдет в состояние F более 0. Таким образом, я изменил правило, которое было бы

Ⓑ⬛ : ⚪F

в

Ⓑ⬛ : 🎂

Вот почему Fв алфавите нет символа . (Есть некоторые другие «гольфы», которые я мог бы сделать, но я не хотел скрывать это слишком.)

Это в основном это. Целевая строка достижима из исходной строки, но только после смешного количества шагов.

Еще один забавный факт: если бы я использовал

←A⚪⚪→

в качестве отправной точки, вместо этого потребуются не 7*10^36534шаги для остановки, а 10^10^10^10^18705352шаги, что на самом деле очень большое число.

Натаниель
источник
1
Это похоже на реализацию машины Тьюринга
NieDzejkob
1
Я думаю, что это «текущий претендент на лучшее из 6 состояний, 2 символа», указанный здесь . Теперь кому-то просто нужно доказать, что они эквивалентны.
user202729
1
@ user202729 Почему бы не опубликовать как ответ?
jimmy23013
3

48 очков, трещины от bb94

Алфавит: abc
Источник: cbaabaabc
Цель: cbacbcabc
Переписать правила:

абы: ба
Ьс: центибар
ча ас
абы: сс
Ьс: аа
ча: бб
boboquack
источник
3

287 баллов, безопасно

Источник: YAAT

Цель:

VW644507203420630255035757474755142053542246325217734264734527745236024300376212053464720055350477167345032015327021403167165534313137253235506613164473217702550435776242713

Правила:

T:AAAAAT
T:BBU
U:BU
U:ZW
AB:BCA
CB:BC
AZ:Z
CZ:ZC
YB:Y
YZ:V
V:VD
DCC:CD
DCW:W+
DW:W_
___:0
__+:1
_+_:2
_++:3
+__:4
+_+:5
++_:6
+++:7

Я обнаружил, что openssl гораздо проще использовать для этой цели, чем gpg.


Посмотрите трещину HyperNeutrino в более слабую версию. В этом случае число Cs:

22030661124527021657244569669713986649562044939414344827127551659400215941242670121250289039666163853124410625741840610262419007778597078437731811349579211

И главные факторы:

220040395270643587721928041668579651570457474080109642875632513424514300377757
100120985046540745657156603717368093083538096517411033964934953688222272684423

Первое число mod 5 = 2, поэтому можно получить финальную строку.

jimmy23013
источник
Предполагая, что это случайный 512-битный полупериод, нынешним компьютерам потребуется несколько недель или месяцев, чтобы это
учесть
Теперь безопасно.
user202729
2

402 балла

Алфавит: abcdefghijklmnopqrstu
Источник: abcdoi
Цель: ioabcdnnnnnnnnnnnnnnnnnn
Переписать правила:

абы: ба
ба: аб
переменный ток: ок
ча ас
добавить
да: объявления
Ьс: центибар
центибар: Ьс
шд: дБ
дб: шд
CD: постоянный ток
постоянный ток: кд
на:
NB: млрд
пс: сп
й: дп
нм: млн
Нью-Джерси: Jn
АОИ: ЕАГ
Boi: EBG
ИСП: электрокардиограф
DOI: EDG
ае: ха
быть: ро
с: Нс
де: HD
ИОА: кам
IOB: КБМ
МОК: KCM
иод: KDM
ма: А.Я.
МБ: Ь
MC: CJ
мкр: ди-джей
Д.Г.: rdnnnnnnnnnn
CG: qcnnnnn
BG: pbnn
AG: вентилятор
кр: Ь
ш: фб
ар: фа
Бк: фб
водно: фа
ар: фа
эр: И.О.
э: И.О.
ер: И.О.
эф: И.О.
ВЧ: И.О.
кД: dunnnnnnnnnn
кс: ctnnnnn
т.п.н.: bsnn
ка: AlN
УНЦ сл
UB: бл
иа: аль
ТБ: бл
та: аль
са: аль
гм: О.И.
тм: О.И.
см: О.И.
лм: О.И.
LJ: О.И.
: п

Последнее правило позволяет вам создавать столько ns, сколько вам нужно.

Уродливо, как кажется, это на самом деле довольно мило, так или иначе ...

boboquack
источник
* В aoi:eogэто eogдолжно быть eag?
Kritixi Lithos
@ Cowsquack да, спасибо, что подняли это
boboquack
2

1337 баллов

Определенно неконкурентоспособен и занял слишком много времени для создания (надеюсь, я не ошибся).

Подсказка:

попытайтесь понять исходную строку, прежде чем смотреть на правила

Алфавит: ABEILRSTabcdefijlr

Источник: SIbbbbbbbdbffacebbfadbdbeecddfaeebddcefaddbdbeeecddaaaaadfaeeebdddcefbbfadbdbdbeeecdddfaeeebdddcefaddbdbeeecddaaaadfaeeebdddcefbfadbdbdbeeecdddfaeeebdddcbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaceefacdffacebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaaceefacdffacebdcecefacE

Цель: SE

Перепишите правила:

Ab: ЪА
ЪА: Ab
Аа: аА
аА: Aa
Добавить
дА: Ad
Ae: еА
еА: Ae
М: фА
фА: М
Ac: сА
сА: Ac
IA: AI
AI: И.А.
Bb: ЬВ
ББ: Bb
Ба: ав
ав: Ва
Bd: дБ
ЭБ: ​​Be
Be: еВ
дБ: Bd
Bf: Ф.Б.
Fb: Bf
Bc: сВ
сВ: Bc
Е: ВЕ
S: SB
Ib: ABI
AIA: Ài
IDB: DBI
МЫ: EIB
ОЕсли: АФИ
BIfB: BfiLB
Lb: Б.Л.
La: аь
Le: ее
Ld: дл
Lf: фл
Lc: сЬ
И.Б.: би
Анджелес: д.в.
а именно: е
ID: ди
если: фил
фунт: бл
л: аль
ль: Эль
л.д.: дл
ЛФ: фл
ЖХ: сл
ICL: CI
ICL: či
Ic: JRC
Ъ: Ю.Б.
А.Я.: JA
ди-джей: юлианский день
EJ: JE
ш: Р.Б.
соток: ра
др: й
эр: повторное
пт: ВЧ
кр: гс
Марка: Rb
аЯ: Ra
дК: Rd
Е.Р.: Re
Fr: Rf =
Сr: Rc
CJ: JRC
FJR: JF
FJR: Если
ЭТО
TB: T
BT: T
БТ: Т
аТы: T
дТ: Т
ВЭ: Т
фТл: Т
СТ: Т
T:
ManfP
источник
2

Обратите внимание, что изначально я допустил некоторые ошибки, поэтому счет изменился. Тем не менее, идея та же самая. Я надеюсь, что ошибок больше нет.


154 балла

Алфавит: P.!xABC[{mD<
Источник: [x!P.P...P..P.P....P..P.P.....P.P....P......P.P..P...P.P...Pm(61 символ)
Цель: {CCCCC<(есть 5 Cс, поэтому 7 символов)

Правила:

P.  →  .PP
!.  →  !
x   →  AxB
x   →  
AB  →  BAC
CB  →  BC
CA  →  AC
[B  →  [
[A  →  {
{A  →  {
!   →  !m
mP  →  PmD
Dm  →  mD
DP  →  PD
!P  →  ?
?P  →  ?
!m  →  <
<m  →  <
C<D →  <

Есть 19 правил, общее количество символов = 67.

user202729
источник
1

106 баллов - взломанный HyperNeutrino

Алфавит: ABCDEFGHIJ

Источник: FIABCJAGJDEHHID

Цель: F

Переписать правила:

B:DCIE
A:IFBA
D:EEFJ
C:GFIC
E:HBJG
F:FEBG
G:HFCJ
H:DIGB
I:FCAH
J:BHEA

EJGI:FF
FFF:J
FF:E
EE:D
DDEA:FI
I:F

Хорошо, HyperNeutrino доказал, что это неразрешимо. Однако есть и другое решение.


Возьмите:

I E C D H G J A F B
1 2 3 4 5 6 7 8 9 10

Ценность источника четная. Значение цели нечетное. Если мы возьмем каждую сторону, суммируем значение и примем значение до мода 2, значения останутся прежними. Следовательно, это не может быть достигнуто.

VortexYT
источник
трещины
HyperNeutrino
Вы можете редактировать в своем предполагаемом решении, если хотите.
Натаниэль
@Nathaniel, хорошо, конечно
VortexYT