ความท้าทาย: เพื่ออ่านอินพุตของความยาวโดยพลการและสร้างROT13ของอินพุต อักขระทั้งหมดที่นอกเหนือจาก AZ ควรคัดลอกไปที่คำต่อคำเอาต์พุตและควรเก็บไว้ในกรณีที่เป็นไปได้
ภาษาใด ๆ ที่สามารถอ่านและเขียนสตรีมมาตรฐานเป็นเกมที่ยุติธรรม
ความท้าทาย: เพื่ออ่านอินพุตของความยาวโดยพลการและสร้างROT13ของอินพุต อักขระทั้งหมดที่นอกเหนือจาก AZ ควรคัดลอกไปที่คำต่อคำเอาต์พุตและควรเก็บไว้ในกรณีที่เป็นไปได้
ภาษาใด ๆ ที่สามารถอ่านและเขียนสตรีมมาตรฐานเป็นเกมที่ยุติธรรม
คำตอบ:
คำตอบที่ยอมรับได้ 23 อักขระ:
tr A-Za-z N-ZA-Mn-za-m
tr A-za-m N-ZA-z
(16 ตัวอักษร)
[\\]^_`
อินพุต มันจะกลับมาNOPQRS
มากกว่า[\\]^_`
อย่างน้อยในเวอร์ชันของtr
ฉัน (ผู้ที่มีหกตัวละครใน ASCII ที่อยู่ระหว่างZ
และa
เห็นได้ชัดว่าตัวละครอื่น ๆ ทั้งหมดจะทำงานอย่างถูกต้อง..)
rot13
bash --version GNU bash, Version 4.0.33(1)-release (i486-pc-linux-gnu)
rot13 - 0 chars
... ;)
print raw_input().encode('rot13')
เวอร์ชั่นสตรีมมิ่งใหม่ที่รองรับตัวพิมพ์ใหญ่และตัวพิมพ์เล็กและควรรองรับอินพุตไม่ จำกัด
v,< << <
^-4-9< >:"A"\`|
>:"a"\`| #>:"Z"`|
>~:0`| # >:"z"`|
, @ | <`"m":<v`"M":<
^ +4+9< ^ <
สิ่งนี้จะเก็บค่าไว้ในซอร์สโค้ดของมันเอง แสดงให้เห็นว่ามันน่ากลัวเพียงใดในการลองและส่งออกค่าที่เก็บไว้ในลำดับเดียวกันกับที่คุณได้รับ รองรับอักขระตัวพิมพ์เล็กเท่านั้น
vp0p11:+1g11< < <
v ^-4-9<
v >:"a"\`|>:"z"`|>:"m"`|
>~:0`| >^ >^#
^+4+9<
>$011g1+0p>12g1+:12p0g:v
^ ,_@
ฉันไม่แน่ใจว่าสิ่งนี้มีข้อ จำกัด เพียงใดโดยใช้http://www.quirkster.com/iano/js/befunge.htmlเป็นล่ามที่ดูเหมือนจะทำลายด้วยอินพุตขนาดใหญ่
แก้ไข: และเพิ่งรู้ว่าสายทับทิมมีtr
วิธี
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
ให้:
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.
puts
นั้นและ 'Az' เป็นทางลัดสำหรับ 'A-Za-z'
'A-z'
เป็นจริง'A-Z[\]^_
a-z' , damn ascii having characters between
Z` a
และ
puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
ตัวอักษร:
gets
ส่งคืนบรรทัดแรกโดยใช้ $ <อ่านเพื่ออ่านจนกว่า EOF คำถามไม่ได้พูดอะไรเกี่ยวกับว่าอินพุตสามารถมีบรรทัดใหม่หรือไม่ดังนั้นฉันจึงผิดพลาดไปข้างๆข้อควรระวัง
สมมติว่าโหมดปกติและข้อความนั้นถูกเขียนไปแล้วในบัฟเฟอร์:
ggg?G
หรือทิ้งการประชุมของ vimgolf:
g?GZZ
คุณสามารถเรียกมันเป็นคำสั่งเทอร์มินัลเช่นนี้:
$ vim -c 'norm g?G' -
< your text here ...
... multiple lines if you want ...
... terminate input with ctrl+D on a blank line >
ฉันเดาว่าหลังจะนับเป็น "โปรแกรม" ของ 8 ตัวอักษร ( norm g?G
)
norm g?G
สั้นสำหรับnormal g?G
ที่ทำให้ 8 ตัวอักษร
gg
จะถูกปล่อยออกไป ฉันจะบอกว่า 3 การกดแป้นเมื่อเปิดไฟล์
g?GZZ
)
main(c,b){while((c=getchar())>=0)b=c&96,putchar(isalpha(c)?b+1+(c-b+12)%26:c);}
รุ่นที่อ่านได้:
#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;
}
นี่เป็นรุ่นหลามที่หลีกเลี่ยงrot13()
-method
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 sys
sys.stdin.read()
[]
จะสร้างกำเนิด: tio.run/…
tr///
วิธีการแก้ปัญหาใน Perl (39 ตัวอักษร) สามารถลบ boilerplate ได้ด้วย-p
:
while(<>){y/a-zA-Z/n-za-mN-ZA-M/;print}
การใช้-p
(23 ตัวอักษรรวมถึงสวิตช์พิเศษ):
perl -pe'y/a-zA-Z/n-za-mN-ZA-M/'
example("chartr");cat(rot(scan(,"")))
example("chartr")
เรียกใช้ตัวอย่างสำหรับchartr
ซึ่งรวมถึงrot
ฟังก์ชั่นซึ่งเป็นROT13
ค่าเริ่มต้น ....
DC ( 111 108 สำหรับ dc เอง)
ตกลงที่นี่มันอยู่ใน (ส่วนใหญ่) dc และบางส่วนและความมหัศจรรย์และความมหัศจรรย์ที่จะได้รับมันในรูปแบบที่เหมาะสมสำหรับรหัส หากคุณไม่นับสิ่งที่อินพุต ( echo -n MESSAGE |
) คือ 160 ไบต์:
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'
ในฐานะที่เป็นจุดสนใจโปรแกรม dcนั้นมีความยาว108 ไบต์ซึ่งสั้นกว่าเวอร์ชันไพ ธ อนที่ไม่ใช่ไลบรารี่ มันยังรักษากรณีและเครื่องหมายวรรคตอนและเต้นจาวาสคริปต์ในการส่งข้างต้น! ถ้าฉันเท่านั้นที่สามารถแยกวิเคราะห์ผลลัพธ์ของ od หรือดีกว่ายังแทนที่มันทั้งหมด
แก้ไข: มันเป็นที่น่าสังเกตว่าคำถามไม่ได้ระบุบรรทัดใหม่ต่อท้าย10P
ซึ่งช่วยให้ฉันสามไบต์ต่อไป
แก้ไข 2: ไม่มีข้อมูลจำเพาะสำหรับรูปแบบของอินพุตดังนั้นฉันจึงถือว่ามันใช้งานได้สะดวกสำหรับโปรแกรมของฉัน: P
นี่เป็นคำถามโบราณ แต่ฉันคิดว่าฉันจะรื้อฟื้นมันเพื่อโพสต์คำตอบ Befunge ที่ดีกว่าเล็กน้อย
#v_~::" "/2%" "*-::"@"`!#v_"Z"#v`#!_1
v> "M"`2*1\-34*1+*+ 1:>$! _:"."-!#@_
>,^
คุณสามารถทดสอบได้ที่นี่ ป้อนอักขระครั้งละหนึ่งตัว มันสิ้นสุดลงเมื่อป้อน.
ตัวอักษร (คุณสามารถเปลี่ยนได้โดยแก้ไข"."
ทางด้านขวาของแถวที่สอง) ใช้งานได้กับตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเช่นเดียวกับเครื่องหมายวรรคตอนและไม่ จำกัด อินพุต
ฉันไม่คาดหวังว่าสิ่งนี้จะได้รับ upvotes หรืออะไรมากมาย แต่ฉันแค่ต้องการแสดงให้เห็นว่า Befunge ยอดเยี่ยมจริงๆแล้วคุณสามารถทำได้ดีกว่าคำตอบอื่น ๆ เล็กน้อย
ฉันอาจทำให้สั้นลงใน Befunge-98
>$! _
เนื่องจากคุณมีศูนย์สองตัวบนสแต็ก ณ จุดนั้นเมื่อคุณคาดหวังว่าค่าที่ไม่เป็นศูนย์
(ไม่ใช้ str_rot13 ())
<?=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.
บันทึกตัวละครตัวหนึ่ง :)
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 chars
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);}}}
ตกลงฉันสัญญาว่าจะหยุดตอบคำถามนี้ในตอนนี้ แต่ฉันรู้สึกว่าถูกบังคับให้เอาชนะคำตอบ DC ใน Python นี่อาจสะท้อนถึงฉันไม่ดีในฐานะบุคคล :)
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()]
เอาล่ะฉันรู้ว่ากระทู้นี้ตายไปนานแล้ว แต่ฉันก็ทนไม่ได้ (ยาว) C-solution ที่ไม่แม้แต่จะรวบรวมบน Clang (แต่ใช้กับ GCC)
main(c){putchar(isalpha(c=getchar())*((c|32)<110?13:-13)+c);main();}
มันอาจจะยังเกือบจะบีบได้ แน่นอนว่ามันสามารถบีบได้ และไม่เพียง แต่สามารถบีบได้ แต่เป็นไปได้ที่จะทำให้เกิดการเรียกซ้ำ
บันทึกเป็นไบต์ด้วยrobbie0630
ADu)øJD2äRJ‡
คำอธิบาย
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
--debug
และดูเหมือนว่า˜
จะไม่มี op ในกรณีนี้และสามารถตัดออกได้
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))}))
วิธีการแก้ปัญหานี้แก้ปัญหาโดยการเพิ่ม 13 ตัวอักษรรหัสถ้าตัวละครที่มีปัญหาอยู่ในช่วงครึ่งแรกของตัวอักษรหรือลบ 13 ถ้ามันอยู่ในช่วงครึ่งหลัง
+(c.toLowerCase()<'n'?13:-13))
-13+26*/[a-m]/i.test(c)
R
คุณเพียงแค่ต้องใช้เครื่องมือที่เหมาะสมสำหรับปัญหา
CHIQRSX9 + C
เป็นทัวริงสมบูรณ์และสามารถอ่านและเขียนจากช่องทางที่มีมาตรฐาน
ฉันไม่เคยรู้สึกเหมือนวิธีแก้ไขปัญหาใด ๆ ของฉันดีพอที่จะโพสต์ที่นี่ แต่ทำเพื่อความสนุกและคิดว่ามันจะเป็นประตูยาเสพติดของฉันในการเขียนโค้ดกอล์ฟ
#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));}
นี่ถือว่ามีสองฟังก์ชั่นพิมพ์และ readLine:
f=String.fromCharCode;print(readLine().replace(/[a-z]/g,function(a){return f((a.charCodeAt(0)-84)%25+97);}).replace(/[A-Z]/g,function(a){return f((a.charCodeAt(0)-52)%25+65);}))
ฉันขอโทษ.
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))))
(lisp (lisp (lisp lisp))))))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp)))))))
((lisp (lisp (lisp lisp)))
(((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))))))))
(lisp (lisp (lisp lisp)))))))
((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp)))))))
((lisp (lisp (lisp lisp)))
(((((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))
((lisp (lisp (lisp lisp))) (lisp lisp))))))
(lisp (lisp (lisp lisp)))))
(((((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))))
(lisp (lisp (lisp lisp))))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp))))
(lisp lisp))
(lisp lisp)))))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(lisp (lisp (lisp lisp))))))))))
((lisp (lisp (lisp lisp))) (lisp lisp))))))))))))
(lisp (lisp (lisp lisp))))))))))))
(lisp lisp))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp))))))))))
(((lisp (lisp (lisp (lisp lisp))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp (lisp lisp))))))
(((lisp (lisp (lisp (lisp lisp))))
((lisp (lisp (lisp lisp)))
(lisp (lisp (lisp lisp)))))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
(lisp lisp)))))
((lisp (lisp (lisp lisp)))
(((lisp (lisp (lisp (lisp lisp)))) (lisp lisp))
((lisp (lisp (lisp lisp)))
((lisp (lisp (lisp lisp))) (lisp lisp))))))))
แต่อย่างใด:
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
สายป้อนในความยาวในSI
บัฟเฟอร์สตริงเอาท์พุทที่CX
DI
ทดสอบเอาต์พุตโปรแกรม IBM PC DOS:
ดาวน์โหลดโปรแกรมทดสอบR13.COM (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