Zorluk: İsteğe bağlı uzunluktaki bir girişi okumak ve girişin ROT13'ünü üretmek . AZ dışındaki tüm karakterler çıktıya kopyalanmalı ve mümkünse büyük harfleri korunmalıdır.
Standart akışları okuyabilen ve yazabilen herhangi bir dil adil bir oyundur.
Zorluk: İsteğe bağlı uzunluktaki bir girişi okumak ve girişin ROT13'ünü üretmek . AZ dışındaki tüm karakterler çıktıya kopyalanmalı ve mümkünse büyük harfleri korunmalıdır.
Standart akışları okuyabilen ve yazabilen herhangi bir dil adil bir oyundur.
Yanıtlar:
Kanonik 23 karakterli cevap:
tr A-Za-z N-ZA-Mn-za-m
tr A-za-m N-ZA-z
[\\]^_`Girdiyi yazın. O kadar geri gelecektir NOPQRSziyade [\\]^_`sürümünde, en azından trben var. (Bunlar ASCII'de Zve arasında kalan altı karakterdir a. Açıkçası, diğer tüm karakterler düzgün çalışacaktır.)
rot13
bash --version GNU bash, Version 4.0.33(1)-release (i486-pc-linux-gnu)
rot13 - 0 chars...;)
print raw_input().encode('rot13')
Hem küçük hem de büyük harfleri destekleyen ve sınırsız girişi desteklemesi gereken yeni akış sürümü.
v,< << <
^-4-9< >:"A"\`|
>:"a"\`| #>:"Z"`|
>~:0`| # >:"z"`|
, @ | <`"m":<v`"M":<
^ +4+9< ^ <
Bu, değerleri kendi kaynak kodunda saklar. Saklanan değerleri aldığınız sırayla çıkarmanın ve denemenin ne kadar korkunç olduğunu gösterir. Sadece küçük harf karakterleri destekler.
vp0p11:+1g11< < <
v ^-4-9<
v >:"a"\`|>:"z"`|>:"m"`|
>~:0`| >^ >^#
^+4+9<
>$011g1+0p>12g1+:12p0g:v
^ ,_@
Bunun ne gibi sınırlamaları olduğunu tam olarak bilmiyorum, http://www.quirkster.com/iano/js/befunge.html adresini kullanarak büyük girdilerle kırıldığı anlaşılıyor.
Düzenleme: Ve sadece fark edildi Ruby dizelerinin bir trmetodu var.
puts$<.read.tr'A-Za-z','N-ZA-Mn-za-m'
input = "The challenge: To read an input of arbitrary length and produce the ROT13 of the input. All characters besides A-Z should be copied to the output verbatim, and case should be preserved if possible.
Any language that can read and write standard streams is fair game."
output = `echo '#{input}' | ruby golf-rot13.rb`
puts "Input:"
puts input
puts "-------"
puts "Output:"
puts output
verir:
Input:
The challenge: To read an input of arbitrary length and produce the ROT13 of the input. All characters besides A-Z should be copied to the output verbatim, and case should be preserved if possible.
Any language that can read and write standard streams is fair game.
-------
Output:
Gur punyyratr: Gb ernq na vachg bs neovgenel yratgu naq cebqhpr gur EBG13 bs gur vachg. Nyy punenpgref orfvqrf N-M fubhyq or pbcvrq gb gur bhgchg ireongvz, naq pnfr fubhyq or cerfreirq vs cbffvoyr.
Nal ynathntr gung pna ernq naq jevgr fgnaqneq fgernzf vf snve tnzr.
putsve 'Az' 'A-Za-z' için bir kısayol
'A-z'aslında 'A-Z[\]^_bir-z ' , damn ascii having characters between Z` ve a.
puts gets.tr'A-Za-z','N-ZA-Mn-za-m'.
getsSadece ilk satırı döndürür, EOF'a kadar $ <. Soru, girdilerin yeni satırlar içerip içeremeyeceği ile ilgili hiçbir şey söylemiyor, bu yüzden dikkatli olduğum için yanıldım.
Normal mod varsa ve metnin zaten arabellekte yazılı olduğunu varsayalım:
ggg?G
Ya da yanıltıcı vimgolfun sözleşmelerini:
g?GZZ
Bunu bir terminal komutu olarak da çağırabilirsiniz:
$ vim -c 'norm g?G' -
< your text here ...
... multiple lines if you want ...
... terminate input with ctrl+D on a blank line >
Sanırım ikincisi 8 karakterden oluşan bir program olarak sayılır ( norm g?G).
norm g?GBunun için kısa normal g?G8 karakter yapar.
ggbırakılabilir. Dosya açıkken 3 tuş vuruşunu söyleyebilirim.
g?GZZ) alırız .
main(c,b){while((c=getchar())>=0)b=c&96,putchar(isalpha(c)?b+1+(c-b+12)%26:c);}
Okunabilir sürüm:
#include <ctype.h>
#include <stdio.h>
int main(void)
{
int c, base;
while ((c = getchar()) >= 0) {
if (isalpha(c)) {
base = (c & 96) + 1; /* First letter of the upper or lower case. */
c = base + (c - base + 13) % 26;
}
putchar(c);
}
return 0;
}
İşte rot13()-method'u önleyen bir Python versiyonu .
import sys
print"".join([chr(x/32*32+1+(x%32+12)%26if 64<x<91or 96<x<123 else x)for x in map(ord,sys.stdin.read())])
import sysve kullanmanız gerekir sys.stdin.read().
[]Listeyi bir jeneratör haline getirmek için ortadan kaldırırsanız -2 bayt : tio.run/…
DC ( DC'nin kendisi için 111 108)
Tamam, burada (çoğunlukla) dc'de ve kod için doğru formata getirmek için biraz sed ve od'da. Girilen şeyi ( echo -n MESSAGE |) saymazsanız 160 bayttır:
od -An -t dC|sed 's/^\ *//;s/\ \{2,3\}/\n/g'|dc -e'[13+26%]sm[65-lmx65+]su[97-lmx97+]sl[96<b64<dPc]sa[91>c]sd[123>e]sb[lux]sc[llxdd]se[ddddlaxlrx]sy[?z0<y]dsrx'
Bir ilgi alanı olarak, dc programının kendisi kütüphane dışı python versiyonundan daha kısa , sadece 108 byte uzunluğundadır. Davayı ve noktalama işaretlerini bile korur ve yukarıdaki başvuruda Javascript'i yener ! Keşke od'un çıktısını daha iyi çözümleyebilseydim, ya da daha iyisi de olsa onu tamamen değiştirebilirim.
EDIT: Sorunun 10Pbana üç bayttan tasarruf sağlayan yeni bir satır göstermediğine dikkat etmek gerekir.
DÜZENLEME 2: Girişin formatı için spesifikasyon yoktur, bu yüzden programım için uygun bir şekilde alındığını kabul ediyorum: P
Bu eski bir soru, ancak biraz daha güzel bir Befunge cevabı göndermeyi canlandırdığımı düşündüm.
#v_~::" "/2%" "*-::"@"`!#v_"Z"#v`#!_1
v> "M"`2*1\-34*1+*+ 1:>$! _:"."-!#@_
>,^
Burada test edebilirsiniz . Bir seferde tek bir karakter girin; .karakter girdikten sonra sona erer (bunu "."ikinci sıranın sağ tarafına yakın olarak değiştirerek değiştirebilirsiniz ). Büyük ve küçük harf, noktalama işaretleri ve giriş sınırlaması olmadan çalışır.
Bunun bir ton fazla oy almasını beklemiyorum ya da başka bir şey almayı beklemiyorum, ama sadece Befunge'nin gerçekten ne kadar harika olduğunu diğer cevabından biraz daha iyi yapabileceğini göstermek istedim .
Befunge-98’de daha da kısaltabilirim.
>$! _Sırada olmayan bir değer beklerken, o noktada yığında iki tane sıfır bulunduğundan, dizideki sonsuz bir döngüye girer .
(str_rot13 () kullanmıyor)
<?=preg_replace('#[a-zA-Z]#e','chr(($x=ord("\0"))-$x%32+1+($x%32+12)%26)',`cat`);
var c:Char;begin repeat Read(c);Write(Chr(Ord(c)+(Ord(c in['A'..'M'])-Ord(c in['N'..'Z']))*13));until EOF;end.
var c:Char;begin repeat Read(c);Write(Chr(Ord(c)+(Ord(c in['A'..'M'])-Ord(c in['N'..'Z']))*13));until EOF;end.bir karakter kaydeder :)
a%b=([a..b]++)
main=interact$map$toEnum.((0%64$78%90$65%77$91%96$110%122$97%109$[123..])!!).fromEnum
Perl6 (54)
$*IN.lines».trans("a..zA..Z"=>"n..za..mN..ZA..M").say
Java 251 karakter
public class r{public static void main(String[] a){String s = a[0];for(int i=0;i<s.length();){char c=s.charAt(i++);if(c>='a'&&c<='m')c+=13;else if(c>='n'&&c<='z')c-= 13;else if(c>='A'&&c<='M')c+=13;else if(c>='A'&&c <='Z')c-=13;System.out.print(c);}}}
Tamam, şimdi bu soruyu cevaplamayı bırakacağına söz veriyorum, ancak Python'daki DC cevabını yenmek zorunda kaldım. Bu muhtemelen bana kişi olarak kötü yansıyor :).
import sys;[print(x.isalpha()and chr((ord(x)&96)+1+(ord(x)%32+12)%26)or x,end='')for x in sys.stdin.read()]
Tamam, bu iş parçacığının uzun ölü olduğunu biliyorum, ama Clang'da bile derlemeyen (ama GCC'de) (uzun) C-çözümüne dayanamıyorum.
main(c){putchar(isalpha(c=getchar())*((c|32)<110?13:-13)+c);main();}
Muhtemelen neredeyse hala sıkılabilir. Kesinlikle sıkılabilirdi. Ve sadece sıkılabilir değildi, özyinelemeli hale getirmek de mümkündü.
Robbie0630 sayesinde bir bayt kaydedildi
ADu)øJD2äRJ‡
açıklama
ADu # push lower-case and uppercase alphabet
)øJ # zip, flatten and join, producing aAbB..zZ
D2äRJ # split a copy in 2 pieces, reverse and join producing nNoO..mM
‡ # translate input by replacing members of the alphabet
# with the corresponding member of the rot-13 alphabet
# implicitly display
--debugve ˜bu durumda no-op yok gibi görünüyor ve kesilebilir.
JavaScript 1.8, 106
alert(prompt().replace(/\w/g,function(c)String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))))
JavaScript, 115
alert(prompt().replace(/\w/g,function(c){return String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))}))
Bu çözüm, söz konusu karakter alfabenin ilk yarısındaysa karakter koduna 13 ekleyerek veya ikinci yarıda ise 13 çıkarılarak sorunu çözer.
+(c.toLowerCase()<'n'?13:-13))ile -13+26*/[a-m]/i.test(c).
R
Sadece problem için doğru aleti kullanmalısın.
CHIQRSX9 + Turing tamamlandı ve ile standart kanallardan okuyabilir ve yazabilir C.
Hiçbir çözümümün burada yayınlanacak kadar iyi olmadığını hiç hissetmemiştim, ancak bunu eğlenmek için yaptım ve kod golfüne benim geçit ilacım olacağını düşündüm.
#define z(x) c>=x&&c<x+13
#define q(w) c>=w&&c<w+13
main(c){for(;(c=getchar())>=0;putchar(z('A')||z('a')?c+13:q('M')||q('m')?c-13:c));}
Üzgünüm.
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))))
(lisp (lisp (lisp lisp))))))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp)))))))
((lisp (lisp (lisp lisp)))
(((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))))))))
(lisp (lisp (lisp lisp)))))))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp)))))))
((lisp (lisp (lisp lisp)))
(((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))))
(lisp (lisp (lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))
(lisp lisp)))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp))))))))))
((lisp (lisp (lisp lisp))) (lisp lisp))))))))))))
(lisp (lisp (lisp lisp))))))))))))
(lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp))))))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp)))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp))))))))
unassembled:
STLOOP:
AC LODSB ; load byte from SI into AL, advance SI
8B D0 MOV DX, AX ; save original char in DL
0C 20 OR AL, 020H ; lowercase the char
3C 61 CMP AL, 'a' ; is char less than 'a'?
7C 0F JL STCHR ; if so, do not rotate
3C 7A CMP AL, 'z' ; is char greater than 'z'?
7F 0B JG STCHR ; if so, do not rotate
B6 0D MOV DH, 'n'-'a' ; add or subtract 13
3C 6E CMP AL, 'n' ; is char less than 'n'?
7C 02 JL ADD13 ; if so, add positive 13
F6 DE NEG DH ; otherwise add -13
ADD13:
92 XCHG AX, DX ; original char back to AL
02 C4 ADD AL, AH ; add 13 or -13 to original char
STCHR:
AA STOSB ; store converted byte into DI, advance DI
E2 E5 LOOP STLOOP ; continue loop through string
Girdi dizgisi SI, uzunluğu gir CX. Konumunda çıkış dizesi arabelleği DI.
IBM PC DOS program çıktısını test edin:
İndir R13.COM test programı (PC DOS).
r l=drop 13 l++take 13 l
t=['a'..'z']
s=['A'..'Z']
main=interact$map(\x->maybe x id$lookup x$zip(t++s)$r t++r s)
package require [set c tcl::transform::rot];$c 13 stdin;fcopy stdin stdout