这有点 证明高尔夫球-喜欢 警察和强盗挑战。这是强盗的线索。警察的线在这里。
强盗
警察将发布摘要重写系统。您的任务是通过应用重写规则来证明从源字符串可以到达或不能到达目标字符串,从而破解他们的提交。(您可以通过发布一系列以源字符串开头并以目标字符串结尾的重写规则,或者通过数学方式证明该规则存在或不存在来执行此操作。)
有关详细信息和定义,请参见警察的线程。
这有点 证明高尔夫球-喜欢 警察和强盗挑战。这是强盗的线索。警察的线在这里。
警察将发布摘要重写系统。您的任务是通过应用重写规则来证明从源字符串可以到达或不能到达目标字符串,从而破解他们的提交。(您可以通过发布一系列以源字符串开头并以目标字符串结尾的重写规则,或者通过数学方式证明该规则存在或不存在来执行此操作。)
有关详细信息和定义,请参见警察的线程。
Answers:
让我们为这一步倒退。我们首先将数字转换为二进制表示形式。我们从VW626206555675126212043640270477001760465526277571600601
到VW++__+_++__+____++_+_++_++_+++_++++_+__+_+_++__+___+_+____+___++++_+______+_+++___+__++++++________++++++____+__++_+_++_+_+_++__+_+++++++_++++__+++_______++______+
。接下来,我们将不断的倒数DCW:W+
和DW:W_
,直到我们清除所有符号。我们的结果是现在VDCDCDDDCDDCDCDDDCDDDDDCDCDDCDDCDCDDCDCDDCDCDCDDCDCDCDCDDCDDDCDDCDDCDCDDDCDDDDCDDCDDDDDCDDDDCDCDCDCDDCDDDDDDDCDDCDCDCDDDDCDDDCDCDCDCDCDCDDDDDDDDDCDCDCDCDCDCDDDDDCDDDCDCDDCDDCDCDDCDDCDDCDCDDDCDDCDCDCDCDCDCDCDDCDCDCDCDDDCDCDCDDDDDDDDCDCDDDDDDDCW
。现在我们要使这个字符串匹配VD+C+W
;也就是说,我们要将所有D
s 移到所有s的左侧C
。这可以通过反转来完成DCC:CD
。我们通过重复以下算法来做到这一点:
D
块右侧的第一个C
。D
移到该块的左侧。C
s 的数量加倍。通过一些数学运算,我们可以确定我们将以123 D
s和4638704741628490670592103344196019722536654143873 C
s结束(您认为这不适合SE答案是正确的……我怀疑这是否适合作为地球上所有原子的状态存储) :P)。
如果继续应用相反的V:VD
,我们现在可以摆脱所有D
s,因此得到VCCC.......CCCW
。我们将V
背面转换成YZ
。现在我们有了YZCCC.......CCCW
。
我们希望能够摆脱所有C
s并使其具有形式YAAA...AAABBB...BBBZW
。幸运的是,这可以通过以下方法完成。首先,我们对YB:Y
587912508217580921743211进行逆运算得到YBBB.......BBBZCCC.......CCCW
。然后,我们重复以下步骤序列(其中[?*]
表示任意数量的?
,不一定大于零):
CZ:ZC
587912508217580921743211次Y[A*]BBB.......BBBCCC.......CCCZCCC.......CCCW
CB:BC
多次逆向获取Y[A*]BCBCBC.......BCBCBCZCCC.......CCCW
AZ:Z
并AB:BCA
多次获得Y[A*]ABBB.......BBBZCCC.......CCCW
通过归纳,我们可以看到将BZ
组合一直移动到末尾(之前的除外W
),然后A
s 的数量是s 数量的1/587912508217580580743743211 C
,剩下7890127658096618386747843 A
s。我们现在有YAAA.......AAABBB.......BBBZW
。将ZW
back 转换为a U
,然后反向应用U:BU
多次以仅保留2 B
s,然后将其转换BBU
为a T
,现在有了YAAA.......AAAT
。然后,由于s 的数目比5的倍数大3 ,因此您可以反向应用T:AAAAAT
多次以得到。YAAAT
A
感谢您的挑战!
A:B
到ABC
给BBC
,很明显,应用的倒数A:B
来BBC
可以给ABC
。没有明确说明允许这样做,但是我可以轻松地扭转自己的步伐,并拥有一个“常规”解决方案,只是倒退IMO更容易。
A:B
,并且没有说明允许反向应用,那么我认为您不能从BBC
转到ABC
。这种特定情况可能有所不同,并且在其他方向上还有一些路要走。稍后再检查。
这是一个推箱子难题。起始位置是:
___#
#___####_____#
#_#_#_##_#_!##
##______##_###
##__####_#_###
###__###__
结束位置是:
___#
#___####_____#
#_#_#_##_#_###
##____!__#_###
##__####_#_###
###__###__
可以使用以下键序列解决此问题:
←←→↓↓←↑←←←←←上←↓↓→↑←↑↑↑←↓→↑→↓↓→→→→→→↓→↑↑↓↓←↓←↑→↑←←← ←↑←←↓→→→→→↓→→↑↑→↑↑←↓←↓↓→↑←↑→→↑→→↓←↓←↓↓→↑←←←←←←←←↑↑ ↑←←↓→→↓→↓↓←↑←↑→↑↑←←↓→↑→↓↓↓↓↑↑→→→→→→↓↓←↑→↑←←←←←←→→→→ →→→↑↑←↓→↓←↑↑→→↑→→↓←↓←→↑↑←↓←↓↑→→↓←↑←←↓↓↓→→↑↑↓↓←←←↑→ ↓↑↑→↑→→↓←↓←↓←←↑↑→→↑→↓↓↓↓←←←←←←←↓→→→→→←←←←←↑↑←←↓→→→ ↓↓←↑→→→→
这是一个bash程序,它将键序列转换为sed命令并应用它们。sed命令仅包含使用cop答案中定义的重写规则的替换命令,以及不修改字符串的标签和分支命令。它确认您仅可以使用重写规则来获取目标字符串。
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
相应地应用一次,并且重复应用相关规则,直到!
再次出现。对于权利,应用!#_:_!#
和之一!_:_!
。对于左侧,应用_#!:#!_
和中的一个_!:!_
。
每次移动后,请查看链接中的输出以获取位置。
规则1
x:xn
规则2no:oon
规则3nr:r
规则4ooooooooooo:
我们[X,Y]
用来表示Y X
的游程
从开始
xn[o,A]r
,
- 一旦有了,就适用规则2
x[o,2]n[o,A-1]r
。- 再次应用规则2
x[o,4]n[o,A-2]r
- 应用直到
o
S之间n
,并r
变为0,我们有x[o,2*A]nr
。- 一旦有了,就适用规则3
x[o,2*A]r
。- 一旦有了,就适用规则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
s,离开xor
。