Виклик реферату рефератів (грабіжники)


9

Це дещо -подібно до виклик. Це нитка розбійників; нитка поліцейських тут .

Розбійники

Полиці розмістять абстрактні системи переписування. Ваше завдання полягає в тому, щоб зламати їхні матеріали, довівши, що цільовий рядок можна або не може бути досягнуто з вихідного рядка, застосувавши свої правила перезапису. (Ви можете зробити це або опублікувавши послідовність правил перезапису, що починається з початкового рядка і закінчується ціллю, або довівши математично, що це так чи не існує.)

БАЧИТИ нитка копів для деталей і визначень.


До! Я поставив щедрість за неправильне запитання, це мало бути викликом копів. Так хтось отримає випадкову винагороду.
Натаніель

Не хвилюйтесь, я повернув щедроту.
Джеймс

@DJMcMayhem: Так ... ось чому SE API перераховує це питання як представлене, але без суми винагороди та дати завершення. : o Ну добре, час додати деяку перевірку вводу до мого сценарію користувача.
Ілмарі Каронен

Відповіді:


16

jimmy23013

Давайте попрацюємо з цим назад. Спочатку перетворюємо цифри в їх двійкові уявлення. Ми йдемо з VW626206555675126212043640270477001760465526277571600601до VW++__+_++__+____++_+_++_++_+++_++++_+__+_+_++__+___+_+____+___++++_+______+_+++___+__++++++________++++++____+__++_+_++_+_+_++__+_+++++++_++++__+++_______++______+. Далі ми продовжуємо застосовувати обернену DCW:W+та DW:W_поки не очистимо всі символи. Наш результат зараз VDCDCDDDCDDCDCDDDCDDDDDCDCDDCDDCDCDDCDCDDCDCDCDDCDCDCDCDDCDDDCDDCDDCDCDDDCDDDDCDDCDDDDDCDDDDCDCDCDCDDCDDDDDDDCDDCDCDCDDDDCDDDCDCDCDCDCDCDDDDDDDDDCDCDCDCDCDCDDDDDCDDDCDCDDCDDCDCDDCDDCDDCDCDDDCDDCDCDCDCDCDCDCDDCDCDCDCDDDCDCDCDDDDDDDDCDCDDDDDDDCW. Тепер ми хочемо, щоб цей рядок збігався VD+C+W; тобто ми хочемо перемістити всі Ds вліво від Cs. Це можна зробити заднім ходом DCC:CD. Ми робимо це шляхом повторення наступного алгоритму:

  1. Знайдіть перше, Dщо знаходиться праворуч від блокуC s.
  2. Перемістіть D ліворуч від цього блоку.
  3. Подвоїти кількість Cs.

Через деяку математику ми можемо визначити, що ми закінчимося 123 Dта 4638704741628490670592103344196019722536654143873C s (ви мали рацію з цього приводу, що не відповідає відповіді SE ... Я сумніваюся, що це буде відповідати, якщо зберігати як стани всіх атомів на Землі комбіновані: P).

Якщо ми продовжуємо застосовувати реверс V:VD, ми можемо позбутися від усіх цих Dтепер, так що ми отримаємо VCCC.......CCCW. Ми перетворюємо Vспину в YZ. Зараз у нас є YZCCC.......CCCW.

Ми хочемо, щоб ми могли позбутися всіх Cі мати це у формі YAAA...AAABBB...BBBZW. На щастя, це можна зробити наступним методом. По-перше, ми обернено застосовуємо YB:Y587912508217580921743211 разів, щоб отримати YBBB.......BBBZCCC.......CCCW. Потім ми повторюємо наступну послідовність кроків (де [?*]означає будь-яке число ?, не обов'язково більше нуля):

  1. Зворотній застосувати CZ:ZC587912508217580921743211 разів, щоб отриматиY[A*]BBB.......BBBCCC.......CCCZCCC.......CCCW
  2. Зворотне - застосовувати CB:BCбагато разів, щоб отриматиY[A*]BCBCBC.......BCBCBCZCCC.......CCCW
  3. Зворотне - застосовувати AZ:Zі AB:BCAбагато разів отримуватиY[A*]ABBB.......BBBZCCC.......CCCW

За допомогою індукції ми бачимо, що ми можемо перемістити BZкомбінацію до кінця (за винятком до початку W), і тоді число As становить 1/587912508217580921743211 числа Cs, залишивши нас з 7890127658096618386747843A s. Зараз у нас є YAAA.......AAABBB.......BBBZW. Перетворіть ZWспинку в a U, а потім оберніть U:BUбагато разів, щоб зберегти лише 2 Bс, а потім перетворите BBUна a T, і тепер у вас є YAAA.......AAAT. Тоді ви можете зворотно застосувати T:AAAAATбагато разів, щоб отримати, YAAATоскільки число As було на 3 більше, ніж кратне 5.

Дякую за виклик!


Чи десь зазначено десь чи за замовчуванням дозволено зворотне застосування?
Вейджун Чжоу

2
@WeijunZhou Я маю в виду, якщо застосування A:Bдо ABCдає BBC, очевидно , що застосування зворотного A:Bдо BBCможе дати ABC. Спеціально не сказано, що це дозволено, але я можу легко просто змінити свої кроки і мати "звичайне" рішення, просто простіше йти назад ІМО.
HyperNeutrino

Я маю на увазі, наприклад, якщо є лише одне правило, A:Bі не зазначено, що дозволено застосовувати зворотне застосування, то я не думаю, що ви можете переходити BBCдо ABC. Цей конкретний випадок може бути різним, і є певний шлях в іншому напрямку. Я перевірю це пізніше.
Вейджун Чжоу

2
@HyperNeutrino ^^
Вейджун Чжоу

1
Яку програму ви використали для факторизації цього і скільки часу це зайняло?
користувач202729

9

бобокак

Для заданого рядка візьміть усі літери (a = 0, b = 1, c = 2), підсумуйте їх і візьміть модуль 3. Тоді жодне з правил перезапису не змінює цього значення. Джерело-рядок має значення 1, а цільове значення 2. Отже, жодна комбінація правил не перетворить вихідний рядок у цільовий рядок.


9

feersum

Це загадка сокобан. Вихідна позиція:

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

Кінцева позиція:

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

Це можна вирішити за допомогою наступної послідовності ключів:

← життя → ↓↓ ← ↑ ← впевнено підтримуватимуть ↓↓ → ↑ ← ↑↑↑ ← громада ↓ → ↑ → ↓↓ → секундинтитюріння ↓ → ↑↑ ↓↓ ← ↓ ← ↑ ← ↑ → ↑ ← інтересу ← ↑ ← інтересу ↓ → секундоміріння, що → → постійно ↑↑ → ↑↑ ← ↓ ← міста ↓↓ → ↑ ← ↑ →05 ↑ →:19 ↓ ← ↓ ← впевнено ↓↓ → ↑ ← цікавиться, що існує ↑ ↑ ← інтересу ↓ → постійно ↓ → ↓↓ ← ↑ ← ↑ → ↑↑ ← діяльності ↓ → ↑ → ↓↓ ← ↓ → ↑ → постійнопереджаючого ↓↓ ← ↑ → ↑ ← має бути впевненим →розгадування ↑↑ ← ↓ → ↓ ← ↑↑ →• ↑ →vince ↓ ← ↓ ← → ↑↑ ← ↓ ← ↓ ↑ →:19 ↓ ← ↑ ← інтересу ↓↓↓ → постійно ↑↑ ↓↓ ← інтересу ↑↑ → ↓ ↑↑ → ↑ → постійно ↓ ← ↓ ← ↓ ← свідомості ↑ → → ↑ → ↓ ← ↓↓ ← існувати доводиться ↓↓ ← ↑ → постійно постійно

Ось програма bash, яка перетворює послідовність клавіш у команди sed та застосовує їх. Команди sed містять лише заміну команд за допомогою правил перезапису, визначених у відповіді копії, та команди мітки та розгалуження, які не змінюють рядок. Це підтверджує, що ви можете отримати цільовий рядок, використовуючи лише правила перезапису.

s="___##___####_____##_#_#_##_#_!####______##_#####__####_#_######__###__"
input=

while
    printf '\n%80s\n' "$s"|fold -w14
    read -n 1
    [ "$REPLY" = $'\e' ]
do
    read -n 2
    case "$REPLY" in
    [A)
        s="$(sed '
s:!:wLW_:
        :a
s:L:<<<<<<<<<<<<<:
s:#w<:w#:
s:_w<:w_:
s:_<:<_:
s:#<:<#:
s:#wW:wLX!:
s:_W:W_:
s:#W:W#:
s:_wW:!:
s:_X:X_:
s:#X:X#:
s:_wX:#:
        ta' <<<"$s")";;
    [B)
        s="$(sed '
s:!:_VRv:
        :a
s:R:>>>>>>>>>>>>>:
s:>v#:#v:
s:>v_:_v:
s:>_:_>:
s:>#:#>:
s:Vv#:!URv:
s:U_:_U:
s:U#:#U:
s:Uv_:#:
s:V_:_V:
s:V#:#V:
s:Vv_:!:
        ta' <<<"$s")";;
    [C)
        s="$(sed '
s:!#_:_!#:
        te
s:!_:_!:
        :e' <<<"$s")";;
    [D)
        s="$(sed '
s:_#!:#!_:
        te
s:_!:!_:
        :e' <<<"$s")";;
    esac
    input="$input${REPLY:1}"
done

echo "$input"

Спробуйте в Інтернеті!

Спробуйте в Інтернеті (з видаленим кодом втечі)!

Для вгору і вниз, !:wLW_або !:_VRvзастосовується одноразово відповідно, і відповідні правила застосовуються повторно, поки не !з’являться знову. Для права, один з !#_:_!#і !_:_!застосовується. Для лівої застосовується один із _#!:#!_і _!:!_застосовується.

Дивіться вихід у посиланнях для позиції після кожного переміщення.


6

xnor

Правило 1 x:xn Правило 2 no:oon Правило 3 nr:r Правило 4ooooooooooo:

Ми використовуємо [X,Y]для позначення пробігу Y Xs

Починаючи з xn[o,A]r,

  1. Застосування Правила 2, як тільки ми маємо x[o,2]n[o,A-1]r.
  2. Застосування Правила 2 ще раз x[o,4]n[o,A-2]r
  3. Застосовуючи, поки os між nі не rстане 0, ми маємо x[o,2*A]nr.
  4. Застосування Правила 3, як тільки ми маємо x[o,2*A]r.
  5. Застосування Правила 1, як тільки ми маємо xn[o,2*A]r.

Отже, у нас є алгоритм для генерації з xn[o,A]rдо xn[o,2*A]r.

Починаючи з xnor = xn[o,1]r, повторюючи алгоритм 10 разів - за винятком 10-го циклу, ми зупиняємося на кроці 4, маючи x[o,1024]r.

Застосовуючи правило 4, це очищає 1023 = 11 * 93 oс, залишаючи xor.


2

VortexYT

Не можна усунути Fs без створення / використання інших символів; таким чином, ми повинні використовувати I:Fяк останній крок, щоб дістатися до цілі. Жодне правило не дає жодного Iбез інших небажаних символів, тому ви не зможете дістатися до цільового рядка.

Якщо ви намагаєтеся зіставити назад від джерела, ви можете перейти лише Fдо того, Iяк у вас більше не буде можливостей.


Ой, це боляче. Але є ще одне рішення ...
VortexYT

@VortexYT о, справді, є? гм, не знав. але так, ціль не може відобразити більше ніж один крок, який, мабуть, полегшив це на тону: P
HyperNeutrino

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