esmpmpmeimtmemqmememqicelic
esmpmpmeimememqmlmtmemoc
esmpmpmeimememqmtmtmtmtmeic
esmpmpmeimememqmtmtmtmtmeic
esmpmpmeimeiscic
esmpmpmeimemeimfsic
esmpmpmeisciscimqmtmemeic
esmpmpmeiscimlmqmqmemeic
esmpmpmeimemomqmqmemeic
esmpmpmeisciscimfsimqic
esmpmpmeimeiscic
esmpmpmeisciscimfsimqic
esmpmpmeimemomqmemqmemtmemoc
esmpmpmeiscic
esmpmpmeimemomeimqmeic
esmpmpmeimemeimqmlmtmeic
esmpmpmeimtmtmqmemtmtmeic
esmpmpmeimemomqmqmtmeic
esmpmpmeimemqmqmemeic
esmpmpmeiscimlmqmqmemeic
esmpmpmeiscimqmtmtmtmqmemeic
esmpmpmeimeimemtmqmemeic
esmpmpmeimeiscimlmlmtmlmtic
esmpmpmeimemeimqmlmtmeic
~~
Tất cả các dòng sản phẩm là cho mục đích thẩm mỹ và có thể được gỡ bỏ mà không ảnh hưởng đến chương trình.
Hãy thử trực tuyến!
Giải trình
Sau khi Lynn loại {|}
khỏi danh sách các nhân vật được phép, tôi phải thử một cái gì đó mới. Hóa ra chúng ta vẫn có thể xây dựng các chuỗi tùy ý và đánh giá chúng dưới dạng mã.
Đầu tiên, chúng ta cần nhận được một số giá trị trên ngăn xếp. Các phần dựng sẵn có duy nhất đẩy một cái gì đó mà không bật cái gì khác trước (và không đọc đầu vào) là es
, ea
và et
. Tôi chắc chắn rằng bạn có thể bắt đầu từ tất cả các cách này hay cách khác, nhưng tôi đã đi theo es
đó đẩy dấu thời gian hiện tại. Vì tôi không muốn đưa ra bất kỳ giả định nào về giá trị thực của nó, tôi đã kiểm tra tính nguyên thủy của nó với mp
(cung cấp 0
và 1
) và kiểm tra tính nguyên thủy của giá trị đó một lần nữa để đảm bảo tôi đã có được một 0
ngăn xếp. Một 1
sẽ hữu ích hơn, vì vậy chúng tôi tính toán exp(0)
với me
và biến nó thành một số nguyên với i
. Vì vậy, tất cả các số bắt đầu bằng:
esmpmpmei
Bây giờ chúng ta đã có một loạt các toán tử đơn nguyên để làm việc với:
i int(x) (floor for positive numbers, ceiling for negative)
me exp(x)
ml ln(x)
mq sqrt(x)
mo round(x)
mt tan(x)
Chúng tôi cũng có thể kết hợp một vài tích hợp cho các chức năng phức tạp hơn của x
:
sci Extract first digit of x and add 48 (convert to string, convert
to character, convert to integer).
ceui Convert to character, convert to upper case, convert to integer.
celi Convert to character, convert to lower case, convert to integer.
mfsi Get a sorted list of prime factors of x and concatenate them into
a new number.
mfseei Get a sorted list of prime factors, interleave it with 1,2,3,..., and
concatenate the result into a new number.
Sử dụng những số này, chúng tôi có thể nhận được bất kỳ số nào trong 0 <= x < 128
(và nhiều số khác) trong chưa đầy 10 bước từ 1
. Tôi chắc rằng một tập hợp con nhỏ hơn nhiều của các lệnh này cũng sẽ đủ. Tôi đã viết một chương trình Mathicala nhỏ, để xác định tất cả các đoạn mã này (nó không dễ đọc lắm, xin lỗi):
codes = SortBy[
Select[Nest[Select[DeleteDuplicatesBy[SortBy[Join @@ (Through[{
List,
If[1 <= # < 50, {Exp@#, #2 <> "me"}, Nothing] &,
If[# >= 1, {Log@#, #2 <> "ml"}, Nothing] &,
If[# > 1, {Sqrt@#, #2 <> "mq"}, Nothing] &,
{If[# > 0, Floor@#, Ceiling@#], #2 <> "i"} &,
{Floor[# + 1/2], #2 <> "mo"} &,
{Tan@#, #2 <> "mt"} &,
If[NumberQ@# && # >= 0, {First@
ToCharacterCode@ToString@#, #2 <> "sci"},
Nothing] &,
If[IntegerQ@# &&
32 < # < 65536, {First@
ToCharacterCode@
ToUpperCase@FromCharacterCode@#, #2 <> "ceui"},
Nothing] &,
If[IntegerQ@# &&
32 < # < 65536, {First@
ToCharacterCode@
ToLowerCase@FromCharacterCode@#, #2 <> "celi"},
Nothing] &,
If[IntegerQ@# && # > 0, ## & @@ {
{FromDigits[
"" <> (ToString /@ (f =
Join @@ Table @@@ FactorInteger@#))], #2 <>
"mfsi"},
{FromDigits[
"" <> (ToString /@
MapIndexed[## & @@ {#2[[1]] - 1, #} &, f])], #2 <>
"mfeesi"}
}, Nothing] &
}@##] &) @@@ #, StringLength@*Last],
First], #[[1]] < 1000000 &] &, {{1, "esmpmpmei"}}, 9],
IntegerQ@# && 0 <= # < 128 &@*First], First]
Cùng với đó, chúng ta có thể chỉ cần đẩy một danh sách mã ký tự tùy ý, chuyển đổi từng ký tự thành ký tự c
sau đó. Khi chúng tôi đã đẩy toàn bộ mã mà chúng tôi muốn thực thi, chúng tôi sẽ đẩy 95
( ]
). Chúng tôi eval rằng một với ~
để bọc tất cả những người khác trong một chuỗi, và sau đó chúng tôi eval chuỗi đó với ~
.
Mã thực tế chạy ở cuối chương trình là một lần nữa:
ri__2#,:)/2/[1W]f.%:~<p
Xem giải pháp trước đây của tôi để được giải thích.
¦
làm việc giết chết tôi mỗi lần, tôi đã thử điều này ngày hôm qua nhưngṚ
thay vìU
và quyết định việcḤ
đó không hiệu quả.