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üm hat beslemeleri kozmetik amaçlıdır ve programı etkilemeden çıkarılabilir.
Çevrimiçi deneyin!
açıklama
Lynn {|}
izin verilen karakterler listesinden çıkarıldıktan sonra yeni bir şey denemek zorunda kaldım. Hala rastgele dizeler yapıp bunları kod olarak değerlendirebileceğimiz ortaya çıkıyor.
İlk olarak, yığına biraz değer katmamız gerekiyor. İlk başka bir şey haşhaş olmadan (ve girdi okumadan) bir şey itmek sadece yerleşik ins vardır es
, ea
ve et
. Bunların hepsinden şu ya da bu şekilde başlayabileceğinize eminim, ama es
şu anki zaman damgasını iten gittim . Ben gerçek değeri hakkında herhangi bir varsayımda istemiyordu beri, onun ile asallık sınamak mp
(veren 0
ve 1
) ve değerin asallık yine bir var olmak için o testi 0
yığın. A 1
daha yararlı olacaktır, bu yüzden onu hesaplar ve exp(0)
ile me
bir tamsayıya dönüştürürüz i
. Böylece tüm sayılarla başlar:
esmpmpmei
Şimdi birlikte çalışmamız gereken bir sürü tekil matematik operatörümüz var:
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)
Ayrıca, aşağıdakilerin daha ayrıntılı işlevleri için birkaç yerleşik öğeyi birleştirebiliriz 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.
Bunları kullanarak, 0 <= x < 128
10 adımdan daha az bir sürede herhangi bir sayı (ve diğerleri) elde edebiliriz 1
. Eminim bu komutların çok daha küçük bir alt kümesi de yeterli olacaktır. Tüm bu parçacıkları belirlemek için küçük bir Mathematica programı yazdım (çok okunabilir değil, üzgünüm):
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]
Bununla birlikte, her birini c
daha sonra bir karaktere dönüştürerek rastgele bir karakter kodları listesini itebiliriz . Yürütmek istediğimiz tüm kodu ittikten sonra, 95
( ]
) düğmesine basarız . Birini ~
diğerleriyle bir dizeye sarmak için değerlendiririz ve sonra bu dizeyi~
.
Programın sonunda çalıştırılan gerçek kod tekrar:
ri__2#,:)/2/[1W]f.%:~<p
Bir açıklama için önceki çözümüme bakın .
¦
çalışma şekli beni her seferinde öldürüyor, bunu dün denedim amaṚ
bunun yerineU
veḤ
işe yaramadığına karar verdim .