Анотація Переписування виклику (Cops)


27

Це дещо схожих на . Це нитка копів; нитка грабіжників тут.

Копи

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

  1. Набір символів, що називається алфавітом. (Ви можете використовувати для цього будь-які символи Unicode, але не використовуйте пробіли чи символи, які важко відрізнити один від одного.)

  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, щоб це в кінцевому підсумку було набагато складніше, ніж Hofstadter's оригінальний.
Натаніел

Відповіді:


9

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

Рівень - Пікокосмос №13 від Аймерик дю Пелу (з тривіальною модифікацією). Я намагався знайти рівень смаку, який можна було б реалізувати, коли "коробки" та "стіни" мають однаковий характер. Для цього рівня можна було зробити центральну дросельну точку двома колонами шириною, а не однією.

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

Початковий рядок:

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

Цільовий рядок:

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

Правила:

_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


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.


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

Такі речі вирішуються чистою логікою?
VortexYT


@HyperNeutrino Drat, я сподівався, що твій тріск виявить, де я натрапив.
Джонатан Аллан


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 , якщо Unicode не відображається добре для всіх.


Доказ

Це еквівалентно нинішньому найкращому претенденту на шістьох зайнятих бобрами . Зайнятий бобр - це машина Тюрінга, яка зупиняється після дуже тривалого часу. Через це вихідний рядок ←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
Це виглядає як реалізація машини для
твердіння

1
Я думаю, що це "поточний 6-державний, 2-символьний кращий суперник", машина Тьюрінга, перелічена тут . Тепер комусь просто потрібно довести, що вони рівноцінні.
користувач202729


1
@ user202729 Чому б не написати як відповідь?
jimmy23013


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, тому можна отримати заключний рядок.



Якщо припустити, що це випадковий напівпринцип 512 біт, для поточних ПК знадобиться тиждень-місяць, щоб це
врахувати

Зараз це безпечно.
користувач202729

2

402 бали

Алфавіт: abcdefghijklmnopqrstu
Джерело: abcdoi
Мета: ioabcdnnnnnnnnnnnnnnnnnn
Перепишіть правила:

аб: ба
ба: аб
ac: ca
ca: ac
оголошення: так
да: оголошення
bc: cb
cb: bc
bd: db
db: bd
cd: dc
постійний струм: cd
na: an
nb: bn
nc: cn
nd: дн
нм: мн
nj: jn
аоі: ег
boi: ebg
coi: екг
doi: edg
ае: га
бути: hb
ce: hc
де: hd
іоа: кам
iob: kbm
ioc: ксм
йод: кдм
ma: aj
mb: bj
mc: cj
md: dj
dg: rdnnnnnnnnnn
cg: qcnnnnn
bg: pbnn
ag: вентилятор
кр: fc
br: fb
ар: фа
bq: fb
aq: fa
ап: фа
ер: іо
екв: іо
еп: іо
еф: іо
hf: іо
kd: dunnnnnnnnnn
kc: ctnnnnn
kb: bsnn
ка: альн
uc: кл
уб: бл
ua: al
тб: бл
та: ін
sa: al
гм: ой
тм: ой
см: ой
лм: ой
lj: oi
: n

Останнє правило дозволяє створити стільки ns, скільки вам потрібно.

Потворно, як здається, насправді це дуже приємно, так чи інакше ...


* У aoi:eogце eogповинно бути eag?
Kritixi Lithos

@Cowsquack так, дякую за те, що підняв
boboquack

2

1337 балів

Однозначно не конкурентоспроможний, і зайняв занадто довго, щоб створити (сподіваюся, я не помилився).

Підказка:

спробуйте зрозуміти вихідний рядок, перш ніж дивитися на правила

Алфавіт: ABEILRSTabcdefijlr

Джерело: SIbbbbbbbdbffacebbfadbdbeecddfaeebddcefaddbdbeeecddaaaaadfaeeebdddcefbbfadbdbdbeeecdddfaeeebdddcefaddbdbeeecddaaaadfaeeebdddcefbfadbdbdbeeecdddfaeeebdddcbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaceefacdffacebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaaceefacdffacebdcecefacE

Ціль: SE

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

Ab: bA
bA: Ab
Aa: aA
aA: Аа
Оголошення: dA
dA: Оголошення
Ae: eA
eA: Ae
Af: fA
fA: Af
Ac: cA
cA: Ac
І.А .: AI
AI: IA
Bb: bB
bB: Bb
Ба: аБ
aB: Ба
Bd: дБ
eB: Будь
Будьте: eB
дБ: Bd
Bf: fB
fB: Bf
Bc: cB
cB: Bc
E: BE
S: SB
Ib: AbI
AIa: aI
IdB: dBI
BIe: eIB
AIf: AfI
BIfB: BfiLB
Lb: bL
La: aL
Le: eL
Лд: дл
Lf: fL
Lc: кл
ib: bi
ia: ай
тобто: ei
id: di
якщо: філ
фунт: бл
la: al
ле: ел
ld: dl
lf: fl
лк: кл
icl: ci
icL: cI
Ic: jRc
bj: jb
aj: ja
dj: jd
ej: je
br: rb
ар: ра
dr: rd
ер .: пере
fr: rf
кр: rc
bR: Rb
aR: Ра
д.р .: Rd
eR: Re
fR: Rf
cR: Rc
cj: jrc
fjr: jf
fjR: Якщо
Я: Т
ТБ: Т
BT: T
bT: T
aT: T
dT: T
eT: T
fT: T
cT: T
T:

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.


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, значення залишаються однаковими. Тому цього досягти неможливо.



Якщо ви хочете, ви можете редагувати це рішення.
Натаніел

@Nathaniel, добре, звичайно
VortexYT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.