Thử thách viết lại trừu tượng (Cops)


27

Đây là một thử thách giống như . Đây là chủ đề của cảnh sát; chủ đề của bọn cướp ở đây.

Cảnh sát

Nhiệm vụ của bạn là xác định một hệ thống viết lại trừu tượng, trong đó khó xác định khả năng tiếp cận của một từ này từ một từ khác. Bạn sẽ chuẩn bị những thứ sau:

  1. Một tập hợp các biểu tượng, được gọi là bảng chữ cái. (Bạn có thể sử dụng bất kỳ ký tự Unicode nào cho những ký tự này, nhưng vui lòng không sử dụng khoảng trắng hoặc ký hiệu khó phân biệt với nhau.)

  2. Một chuỗi nguồn bao gồm các biểu tượng từ bảng chữ cái của bạn.

  3. Một chuỗi mục tiêu bao gồm các biểu tượng từ bảng chữ cái của bạn.

  4. Một tập hợp các quy tắc viết lại bằng cách sử dụng các ký tự từ bảng chữ cái của bạn. (Xem bên dưới để định nghĩa quy tắc viết lại.)

  5. Một bằng chứng cho thấy liệu chuỗi nguồn của bạn có thể được chuyển đổi thành chuỗi mục tiêu của bạn hay không bằng cách áp dụng liên tục các quy tắc viết lại của bạn. Bằng chứng này có thể bao gồm một chuỗi thực tế của các bước viết lại, hoặc bằng chứng toán học rằng một chuỗi như vậy phải tồn tại hoặc một bằng chứng toán học rằng một chuỗi như vậy không tồn tại.

Bạn sẽ đăng bốn cái đầu tiên, giữ bí mật bằng chứng; bọn cướp sẽ cố gắng bẻ khóa câu trả lời của bạn bằng cách cung cấp bằng chứng của riêng chúng rằng chuỗi mục tiêu của bạn có thể hoặc không thể đạt được từ chuỗi nguồn của bạn. Nếu bài nộp của bạn không bị bẻ khóa trong vòng hai tuần , bạn có thể đánh dấu nó là an toàn và chỉnh sửa trong bằng chứng của bạn.

Đệ trình sẽ được tính theo số lượng ký tự trong quy tắc viết lại và chuỗi nguồn và đích của chúng, như chi tiết bên dưới. Người chiến thắng sẽ là người nộp bài không bị đánh cắp với số điểm thấp nhất.

Quy tắc viết lại là gì?

Một quy tắc viết lại chỉ đơn giản là một cặp chuỗi trong bảng chữ cái của bạn. (Một trong hai chuỗi này có thể trống.) Một ứng dụng của quy tắc viết lại bao gồm tìm một chuỗi con bằng với chuỗi đầu tiên trong cặp và thay thế nó bằng chuỗi thứ hai.

Một ví dụ cần làm rõ điều này:

Giả sử bảng chữ cái là A, BC; chuỗi nguồn là " A"; chuỗi đích là " C" và các quy tắc viết lại là

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

sau đó chuỗi đích có thể truy cập theo cách sau:

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

Chấm điểm

Điểm của bạn sẽ là

  • độ dài của chuỗi nguồn của bạn,
  • cộng với độ dài của chuỗi mục tiêu của bạn,
  • cộng với độ dài của tất cả các chuỗi có trong quy tắc viết lại của bạn,
  • cộng thêm một điểm cho mỗi quy tắc viết lại.

Nếu bạn viết các quy tắc viết lại của mình bằng dấu phân cách dấu hai chấm như trên, thì đây chỉ là tổng độ dài của tất cả các quy tắc viết lại (bao gồm cả dấu phân cách), cộng với độ dài của chuỗi nguồn và chuỗi đích. Điểm thấp hơn là tốt hơn. Số lượng các ký tự riêng biệt trong bảng chữ cái của bạn sẽ được sử dụng để phá vỡ mối quan hệ, với ít hơn là tốt hơn.

Tiền thưởng

Tôi muốn xem câu trả lời thực sự cho điểm thấp. Tôi sẽ trao 200 đại diện cho câu trả lời đầu tiên đạt ít hơn 100 điểm trong thử thách này và không bị bẻ khóa.


3
Bah, không đủ biểu cảm cho câu đố MU .
Neil

1
@ Về mặt kỹ thuật, chúng biểu cảm như các máy Turing - bạn có thể tạo một phiên bản của câu đố MU, nhưng bạn cần một loạt các biểu tượng và quy tắc chuyển đổi bổ sung để thực hiện Mx -> Mxxquy tắc, vì vậy nó sẽ phức tạp hơn nhiều so với của Hofstadter nguyên.
Nathaniel

Câu trả lời:


9

326 điểm - Cracked bởi jimmy23013

Cấp độ là Picokosmos # 13 của Aymeric du Peloux (với một sửa đổi nhỏ). Tôi đã cố gắng tìm một mức độ trang nhã có thể được thực hiện với "hộp" và "bức tường" là cùng một nhân vật. Đối với cấp độ này, có thể bằng cách làm cho cuộn cảm trung tâm rộng hai cột chứ không phải một.

Các quy tắc / chuỗi ban đầu / chuỗi mục tiêu có thể được đánh gôn nhiều hơn một chút, nhưng điều này chỉ để giải trí.

Chuỗi ban đầu:

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

Chuỗi mục tiêu:

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

Quy tắc:

_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 điểm, bị bẻ khóa bởi HyperNeutrino

Nguồn: YAAAT

Mục tiêu: VW626206555675126212043640270477001760465526277571600601

Quy tắc:

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

Chỉ cần một cái gì đó rõ ràng để làm. Trình tự thực tế của các bước viết lại có lẽ sẽ không phù hợp với câu trả lời SE.


Tôi phải có một nơi nào chùn bước bởi vì tôi chỉ có thể tới VWxnơi xđược hình thành từ bất kỳ chuỗi nhị phân của _(0) và +(1) mà đánh giá đến 10*n+6(bao gồm cả hàng đầu _; n= số nguyên không âm) nhưng các xđịnh ( 626...601) được hình thành từ nhị phân mà đánh giá lại để 10*n+3(cho một lớn n).
Jonathan Allan

Những thứ như thế này có thể giải quyết được bằng logic thuần túy?
VortexYT ngày


@HyperNeutrino Drat, tôi đã hy vọng vết nứt của bạn sẽ lộ ra nơi tôi vấp ngã.
Jonathan Allan


4

139 điểm (an toàn-ish)

Tôi dự định câu trả lời này sẽ bị bẻ khóa và về cơ bản người dùng đã giải quyết nó trong các bình luận, nhưng không ai đăng câu trả lời trong chủ đề của bọn cướp, vì vậy tôi đánh dấu nó là "an toàn-ish" và bao gồm cả bằng chứng của tôi bên dưới.

(Những điều này rõ ràng dễ thực hiện hơn nhiều so với việc bẻ khóa. Mặc dù vậy, chưa có ai cố gắng đạt điểm thấp, và có thể sẽ có nhiều niềm vui hơn ở cuối mọi thứ, nếu thử thách này đã diễn ra. )


Đây là một câu trả lời tự. Nó có khả năng rất khó, nhưng sẽ dễ dàng nếu bạn tìm ra nơi nó đến.

bảng chữ cái: ABCDEⒶⒷⒸⒹⒺⒻ⬛⚪️️🎂←→

nguồn: ←A→

Mục tiêu: ←🎂→

Quy tắc: (khoảng trắng không đáng kể)

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

Đây là phiên bản ASCII , trong trường hợp unicode không hiển thị tốt cho tất cả mọi người.


Bằng chứng

Điều này tương đương với ứng cử viên tốt nhất hiện tại cho một hải ly bận rộn sáu bang . Một con hải ly bận rộn là một cỗ máy Turing tạm dừng sau một thời gian thực sự dài. Bởi vì điều này, chuỗi nguồn ←A→thực sự có thể được chuyển đổi thành chuỗi mục tiêu ←🎂→, nhưng chỉ sau hơn 7*10^36534các bước, sẽ mất nhiều thời gian hơn so với tuổi của vũ trụ cho bất kỳ triển khai vật lý nào.

Băng của máy Turing được biểu thị bằng các ký hiệu (0) và (1). Những quy định

← : ←⬛
→ : ⬛→

có nghĩa là các đầu của băng luôn có thể được mở rộng với nhiều số không. Nếu đầu của máy Turing nằm gần một đầu của băng, chúng ta có thể áp dụng một trong các quy tắc này, điều này cho phép chúng ta giả vờ rằng băng là vô hạn và bắt đầu chứa đầy các số không. (Các biểu tượng không bao giờ được tạo hoặc hủy, vì vậy chúng luôn ở cuối băng.)

Đầu của máy Turing được biểu thị bằng các ký hiệu ABCDEⒶⒷⒸⒹⒺⒻ🎂. Acó nghĩa là đầu ở trạng thái Avà ký hiệu dưới đầu là (0), trong khi có nghĩa là đầu ở trạng thái Avà ký hiệu dưới đó là (1). Điều này được tiếp tục cho các trạng thái khác, với chữ cái được khoanh tròn đại diện cho số 1 bên dưới đầu và phiên bản không được khoanh tròn đại diện cho số 0. (Không có ký hiệu nào Fvì nó xảy ra rằng đầu không bao giờ kết thúc ở trạng thái Fcó số 1 bên dưới nó.)

Nhà nước 🎂là nhà nước tạm dừng. Nó có các quy tắc đặc biệt

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

Nếu đạt đến trạng thái tạm dừng, chúng ta có thể liên tục áp dụng các quy tắc này để "hút" tất cả các băng (bao gồm mọi số không phát sinh từ việc mở rộng băng nhiều hơn mức cần thiết), khiến chúng ta rơi vào trạng thái ←🎂→. Do đó, vấn đề khả năng tiếp cận tập trung vào việc liệu nhà nước 🎂sẽ đạt được.

Các quy tắc còn lại là quy tắc chuyển đổi cho máy Turing. Ví dụ: các quy tắc

A⬛ : ⚪B
A⚪ : ⚪Ⓑ

có thể được đọc là "nếu máy ở trạng thái A và có số 0 dưới đầu, sau đó viết số 1, thay đổi sang trạng thái B và di chuyển sang phải." Di chuyển sang phải có hai quy tắc, bởi vì ô băng bên phải có thể chứa a , trong trường hợp đó, máy sẽ chuyển sang trạng thái Bhoặc ô có thể chứa a , trong trường hợp đó, nó sẽ chuyển sang trạng thái , vì bên dưới nó có trạng thái .

Tương tự

⬛Ⓓ : C⬛
⚪Ⓓ : Ⓒ⬛

có nghĩa là "nếu máy ở trạng thái D và có 1 dưới đầu, sau đó viết 0, thay đổi sang trạng thái C và di chuyển sang trái."

Máy Turing được sử dụng đã được Pavel Kropitz phát hiện vào năm 2010. Mặc dù nó thường được đề cập trong bối cảnh các đèn hiệu bận rộn, bảng chuyển đổi thực tế của nó hơi khó theo dõi, nhưng có thể tìm thấy nó ở đây . Nó có thể được viết là

    0   1

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

có thể được đọc là "nếu máy ở trạng thái A và có số 0 dưới đầu, sau đó viết số 1, thay đổi sang trạng thái B và di chuyển sang phải", v.v. Nếu cần nhiều công sức, hãy kiểm tra xem mỗi mục của bảng này có tương ứng với một cặp quy tắc như được mô tả ở trên không.

Ngoại lệ duy nhất là quy tắc 1RHxảy ra khi máy ở trạng thái F trên 0, bởi vì dường như khá vô nghĩa khi làm cho máy viết số 1 và di chuyển sang bên phải khi nó có thể dừng ngay lập tức ngay khi nó chuyển sang trạng thái F trên 0. Vì vậy, tôi đã thay đổi quy tắc lẽ ra phải có

Ⓑ⬛ : ⚪F

vào

Ⓑ⬛ : 🎂

Đây là lý do tại sao không có biểu tượng Ftrong bảng chữ cái. (Có một số 'golf' khác mà tôi có thể đã thực hiện, nhưng tôi không muốn làm lu mờ nó quá nhiều.)

Về cơ bản là vậy. Chuỗi mục tiêu có thể truy cập được từ chuỗi nguồn, nhưng chỉ sau một số bước vô lý.

Thêm một sự thật thú vị: nếu tôi đã sử dụng

←A⚪⚪→

như là điểm khởi đầu thay vào đó, sau đó sẽ không mất 7*10^36534các bước để dừng lại, mà là 10^10^10^10^18705352các bước, đó thực sự là một con số rất lớn.


1
Điều này trông giống như một triển khai của một máy turing
NieDzejkob

1
Tôi nghĩ rằng đây là "ứng cử viên tốt nhất hiện tại gồm 6 trạng thái, 2 biểu tượng" được liệt kê ở đây . Bây giờ ai đó chỉ cần chứng minh họ tương đương.
dùng202729


1
@ user202729 Tại sao không đăng dưới dạng câu trả lời?
jimmy23013


3

287 điểm, an toàn

Nguồn: YAAT

Mục tiêu:

VW644507203420630255035757474755142053542246325217734264734527745236024300376212053464720055350477167345032015327021403167165534313137253235506613164473217702550435776242713

Quy tắc:

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

Tôi thấy rằng openssl dễ sử dụng hơn nhiều so với gpg cho mục đích này.


Xem bản crack của HyperNeutrino cho phiên bản yếu hơn. Trong trường hợp này, Số Cs là:

22030661124527021657244569669713986649562044939414344827127551659400215941242670121250289039666163853124410625741840610262419007778597078437731811349579211

Và các yếu tố chính là:

220040395270643587721928041668579651570457474080109642875632513424514300377757
100120985046540745657156603717368093083538096517411033964934953688222272684423

Số đầu tiên mod 5 = 2, vì vậy có thể lấy chuỗi cuối cùng.



Giả sử đây là bán kết ngẫu nhiên 512 bit, các máy tính hiện tại sẽ mất vài tuần đến vài tháng để tính đến điều này
didgogns

Bây giờ an toàn rồi.
dùng202729

2

402 điểm

Bảng chữ cái: abcdefghijklmnopqrstu
Nguồn: abcdoi
Mục tiêu: ioabcdnnnnnnnnnnnnnnnnnn
Viết lại quy tắc:

ab: ba
ba: ab
ac: ca
ca: ac
quảng cáo: da
da: quảng cáo
bc: cb
cb: bc
bd: db
db: bd
cd: đc
đc: cd
na: an
nb: bn
nc: cn
thứ hai
bước sóng
nj: jn
aoi: đại bàng
boi:
coi: ecg
doi: edg
ae: ha
được: hb
ce: hc
de: hd
ioa: kam
iob: kbm
ioc: kcm
iốt: kdm
ma: aj
mb: bj
mc: cj
md: dj
dg: rdnnnnnnnnnn
cg: qcnnnnn
bg: pbnn
ag: quạt
cr: fc
br: fb
ar: fa
bq: fb
aq:
ap: fa
er: io
eq: io
ep: io
ef: io
hf: tôi
kd: dunnnnnnnnnn
kc: ctnnnnn
kb: bsnn
ka: aln
uc: cl
ub: bl
ua: al
tb: bl
ta: al
sa: al
ừm
tm: oi
sm: oi
lm: oi
lj: oi
: n

Quy tắc cuối cùng cho phép bạn tạo bao nhiêu ns tùy ý.

Có vẻ xấu, nó thực sự khá đẹp, bằng cách này hay cách khác ...


* Trong aoi:eogđược eogcho là eag?
Kritixi Lithos

@Cowsquack có, cảm ơn vì đã chọn nó
boboquack

2

1337 điểm

Chắc chắn không cạnh tranh, và mất quá nhiều thời gian để tạo ra (tôi hy vọng tôi đã không phạm sai lầm).

Dấu:

cố gắng hiểu chuỗi nguồn trước khi xem các quy tắc

Bảng chữ cái: ABEILRSTabcdefijlr

Nguồn: SIbbbbbbbdbffacebbfadbdbeecddfaeebddcefaddbdbeeecddaaaaadfaeeebdddcefbbfadbdbdbeeecdddfaeeebdddcefaddbdbeeecddaaaadfaeeebdddcefbfadbdbdbeeecdddfaeeebdddcbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaceefacdffacebdceeeeefadddddbdbeeeeeecddddddfaeeeeeebddddddceeefaddaeecdddbdbffacebfadbdbeecddfaeebddceeefadddbdbeeeecddddfaeeeebddddceefaddbdbeeecdddfaeeebdddceefadadbefadfacdbeecddfaeebddcefaeeefaddbdbeeecdddfaeeebdddcceecdfaeeaddceecefaeadcbefadfacecdfaebdcefaefaeeebdddcdcefaceeaaaaceefacdffacebdcecefacE

Mục tiêu: SE

Viết lại quy tắc:

Ab: bA
bA: Ab
Aa: aA
aA: Aa
Quảng cáo: dA
dA: Quảng cáo
Ae: eA
eA: Ae
Phi: fA
fA: Af
Ac: cA
cA: Ac
IA: AI
AI: IA
Bb: bB
bB: Bb
Ba: aB
aB: Ba
Bd: dB
eB: được
Được: eB
dB: Bd
Bf: fB
fB: Bf
Bc: cB
cB: Bc
E: ĐƯỢC
S: SB
Ib: Abi
AIa: tôi
IdB: dBI
BIe: eIB
AIf: AfI
BIfB: BfiLB
Lb: bL
La: aL
Lê: eL
Ld: dL
Lf: fL
Lc: cL
ib: bi
ia: ai
tức là: ei
id: di
nếu: phim
lb: bl
la: al
le: el
ld: dl
lf: fl
lc: cl
icl: tôi
icL: tôi
Ic: jRc
bj: jb
aj: ja
dj: jd
ej: je
br: rb
ar: ra
dr:
er: tái
fr: rf
cr: RC
bR: Rb
aR: Ra
dR: Rd
eR
fR: Rf
cR: Rc
cj: jrc
fjr: jf
fjR: Nếu
Tôi: T
Lao: T
BT: T
bT: T
aT: T
dT: T
eT:
fT: T
cT: T
T:

2

Lưu ý rằng tôi đã phạm một số sai lầm ban đầu, vì vậy điểm số đã được thay đổi. Tuy nhiên, ý tưởng là như nhau. Tôi hy vọng không có sai lầm nữa bây giờ.


154 điểm

Bảng chữ cái: P.!xABC[{mD<
Nguồn: [x!P.P...P..P.P....P..P.P.....P.P....P......P.P..P...P.P...Pm(61 ký tự)
Mục tiêu: {CCCCC<(có 5 Cs, vì vậy 7 ký tự)

Quy tắc:

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 →  <

Có 19 quy tắc, tổng số ký tự = 67.


1

106 điểm - bị bẻ khóa bởi HyperNeutrino

Bảng chữ cái: ABCDEFGHIJ

Nguồn: FIABCJAGJDEHHID

Mục tiêu: F

Quy tắc viết lại:

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

Được rồi, HyperNeutrino đã chứng minh rằng điều này là không thể giải quyết được. Tuy nhiên, có một giải pháp khác cho việc này.


Lấy:

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

Giá trị của nguồn là chẵn. Giá trị của mục tiêu là số lẻ. Nếu chúng ta chọn mỗi bên, tổng giá trị và lấy giá trị cho mod 2, các giá trị giữ nguyên. Do đó, điều này không thể đạt được.



Bạn có thể chỉnh sửa trong giải pháp dự định của bạn, nếu bạn muốn.
Nathaniel

@Nathaniel, được rồi, chắc chắn rồi
VortexYT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.