esmpmpmeimtmemqmememqicelic
esmpmpmeimememqmlmtmemoc
esmpmpmeimememqmtmtmtmtmeic
esmpmpmeimememqmtmtmtmtmeic
esmpmpmeimeiscic
esmpmpmeimemeimfsic
esmpmpmeisciscimqmtmemeic
esmpmpmeiscimlmqmqmemeic
esmpmpmeimemomqmqmemeic
esmpmpmeisciscimfsimqic
esmpmpmeimeiscic
esmpmpmeisciscimfsimqic
esmpmpmeimemomqmemqmemtmemoc
esmpmpmeiscic
esmpmpmeimemomeimqmeic
esmpmpmeimemeimqmlmtmeic
esmpmpmeimtmtmqmemtmtmeic
esmpmpmeimemomqmqmtmeic
esmpmpmeimemqmqmemeic
esmpmpmeiscimlmqmqmemeic
esmpmpmeiscimqmtmtmtmqmemeic
esmpmpmeimeimemtmqmemeic
esmpmpmeimeiscimlmlmtmlmtic
esmpmpmeimemeimqmlmtmeic
~~
모든 줄 바꿈은 미용 목적을위한 것이며 프로그램에 영향을주지 않고 제거 할 수 있습니다.
온라인으로 사용해보십시오!
설명
Lynn {|}
이 허용 된 문자 목록에서 제거한 후 새로운 것을 시도해야했습니다. 우리는 여전히 임의의 문자열을 구성하고 코드로 평가할 수 있습니다.
먼저 스택에 가치를 부여해야합니다. 먼저 다른 뭔가를 보여주고없이 (그리고 입력을 읽지 않고) 뭔가를 밀어 수있는 유일한 내장 된 기능은 es
, ea
와 et
. 나는 당신 이이 모든 방법으로 시작할 수 있다고 확신하지만, 나는 es
현재 타임 스탬프를 밀어 넣었습니다 . 실제 가치에 대해 어떤 가정도하고 싶지 않았기 때문에 mp
( 0
와 1
)을 사용 0
하여 그 우선 성을 테스트하고 그 가치의 우선 성을 다시 테스트 하여 스택에 있는지 확인하십시오 . A는 1
우리가 계산할 수 있도록, 더 유용 할 것 exp(0)
와 me
와와의 정수로 돌려 i
. 따라서 모든 숫자는 다음으로 시작합니다.
esmpmpmei
이제 우리는 다양한 단항 수학 연산자를 가지고 있습니다 :
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)
다음과 같은보다 정교한 기능을 위해 몇 가지 내장 기능을 결합 할 수도 있습니다 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.
이를 사용하여 0 <= x < 128
에서 10 단계 미만으로 임의의 숫자를 얻을 수 있습니다 1
. 이 명령의 훨씬 작은 하위 집합도 충분할 것입니다. 나는이 모든 스 니펫을 결정하기 위해 작은 Mathematica 프로그램을 작성했습니다 (매우 읽기 쉽지 않습니다, 죄송합니다).
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
나중에 각 문자를 문자로 변환 할 수 있습니다. 실행하려는 전체 코드를 푸시하면 95
( ]
)를 누릅니다 . 우리는 그 ~
문자열을 다른 모든 문자열로 감싸기 위해 평가 한 다음 그 문자열을로 평가합니다 ~
.
프로그램 끝에서 실행되는 실제 코드는 다음과 같습니다.
ri__2#,:)/2/[1W]f.%:~<p
설명은 이전 솔루션 을 참조하십시오 .
¦
일하는 방식 이 매번 나를 죽이고, 어제 이것을 시도했지만Ṛ
오히려 와 함께 작동하지U
않기로 결정Ḥ
했습니다.