คำนี้สั่งอย่างย่อหรือไม่


44

รับสตริงอินพุต S ส่งคืนtruthyถ้าตัวอักษรทั้งหมดใน S ถูกเรียงลำดับอย่างย่อ: ค่า ASCII ของพวกเขาต้องอยู่ในลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย ส่งคืนfalsyในกรณีอื่น

อินพุต

  • อินพุตจะอยู่ในกรณีเดียวกัน (ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กทั้งหมด) การส่งของคุณควรจะสามารถจัดการได้ทั้งสองอย่าง
  • ข้อมูลที่ป้อนจะประกอบด้วย ASCII ในช่วง[A-Za-z]เท่านั้น
  • ความยาวของอินพุตจะต้องมีอย่างน้อย 1 ขึ้นอยู่กับภาษาของคุณที่รองรับได้สูงสุด
  • อินพุตเป็นสตริง - ไม่ใช่รายการอักขระไม่ใช่อาร์เรย์ของ ASCII-codepoints

เอาท์พุต

  • เอาต์พุตควรเป็นtrueหรือfalse, หรือ0/1, หรือtrue / falseเอาท์พุทสไตล์ที่แตกต่างอื่น ๆ ที่ภาษาของคุณสามารถให้
  • เคสจริงทั้งหมดต้องมีเอาต์พุตเหมือนกันรวมถึงเคสเท็จทั้งหมด ไม่มี "เท็จเป็น 0 จริงคือ 1, 2 หรือ 3"

กฎเพิ่มเติม

  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • คำตอบจะต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบไม่ใช่ตัวอย่างหรือรายการ REPL
  • คำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ

กรณีทดสอบ

Truthy

"ABCDEF"
"ZYX"
"no"
"tree"   --> the multiple 'e's don't break the order
"q"

Falsy

"ABCDC"
"yes"
"deed"

โมฆะ

"Hello" --> invalid input - mixed case-, does not have to be handled
""      --> invalid input - length 0-, does not have to be handled
"\n
  "     --> invalid input - newline is not in range [A-Za-z]-, does not have to be handled

1
คุณสามารถชี้แจงเกี่ยวกับผลลัพธ์ได้หรือไม่: ค่าความจริงจำเป็นต้องเหมือนกันโดยไม่คำนึงถึงอินพุตที่ให้มาหรือไม่?
ธุรกิจ Cat

1
@BusinessCat ฉันได้เพิ่มความกระจ่าง
steenbergh

เกิดอะไรขึ้นถ้าการใช้งานสตริงของภาษาของคุณเป็นรายการของอักขระ หลายคำตอบที่โพสต์ที่นี่จะใช้ภาษาเช่น ...
theonlygusti

1
ถ้าคุณอยากที่แตกต่างกันสำหรับค่าจริงและเท็จที่คุณไม่ควรพูดหรือtruthy falsyนี่ก็หมายความว่าค่าใด ๆที่ประเมินtrueหรือfalseอนุญาต
FlipTack

3
ที่เกี่ยวข้อง: ค้นหาคำหยัก!
ติตัส

คำตอบ:


8

05AB1E , 5 ไบต์

Â)¤{å

ลองออนไลน์!

คำอธิบาย

Â)     # pair the input with it's reverse in a list
  ¤{   # get a copy of the reverse and sort it
    å  # check if the sorted copy is in the list of [input,reverse_input]

{¹åสำหรับ 4 ลบคำตอบของฉัน ไม่ได้สังเกตการใช้งานของ bifurcate ฉันมีลักษณะคล้ายกันมากเกินไป
Magic Octopus Urn

@carusocomputing: น่าเสียดายที่จะตรวจสอบว่าอินพุตอยู่ด้านหลังของอินพุตที่เรียงลำดับหรือไม่
Emigna

หรือเท่ากับอินพุตที่เรียงลำดับ aba => ['aab', 'baa'] => is in? => 0| aab => same => 1
Magic Octopus Urn

@carusocomputing: อินพุตเรียงลำดับจะถูกละเว้นตามด้านล่างกลับบนสแต็ก คุณไม่เคยจับคู่พวกเขาในรายการ
Emigna

อาจสาบานสองชั้นแยกออกไปห่อ; nvm ไม่สนใจฉัน
Magic Octopus Urn


13

Haskell , 33 ไบต์

(%)=scanl1
f s=s==max%s||s==min%s

ลองออนไลน์!

ขอบคุณØrjan Johansen สำหรับ 1 ไบต์พร้อมนามแฝงscanl1มัด

Haskell import Data.Listเป็นภาษาที่น่าสนใจที่จะท้าทายกอล์ฟเรียงลำดับตามเพราะมันไม่ได้มีในตัวในการเรียงลำดับยกเว้นยาว สิ่งนี้กระตุ้นการค้นหาวิธีการทำงานด้วยมือโดยไม่ต้องเรียงลำดับอย่างชัดเจน

รหัสใช้scanl1ซึ่งพับการดำเนินการผ่านรายการจากซ้ายไปขวาติดตามผลกลาง ดังนั้นscanl1 maxมีผลกระทบจากรายการสูงสุดสูงสุดของรายการคือ maxima ของคำนำหน้าอีกต่อไปก้าวหน้า ตัวอย่างเช่นscanl1 max [3,1,2,5,4] == [3,3,3,5,5].

เช่นเดียวกันกับการminตรวจสอบว่ารายการลดลงหรือไม่ รหัสจะตรวจสอบทั้งสองกรณีและรวมเข้าด้วย||กัน

เปรียบเทียบกับการแสดงออกอื่น ๆ :

(%)=scanl1;f s=s==max%s||s==min%s

f s=or[s==scanl1 q s|q<-[min,max]]
f s=s==scanl1 max s||s==scanl1 min s
f s=any(\q->scanl1 q s==s)[min,max]
f s=any((==s).(`scanl1`s))[min,max]
f s=elem s$(`scanl1`s)<$>[min,max]

ที่จริงรุ่นของคุณกับชนะถ้าคุณกำหนด|| (?)=scanl1
Ørjan Johansen

11

Perl 6 , 25 ไบต์

{[le] .comb or[ge] .comb}

มันทำงานอย่างไร:

  • .comb แยกอินพุตเป็นลำดับอักขระ
  • leและgeเป็นตัวดำเนินการเปรียบเทียบสตริง"น้อยกว่าหรือเท่ากับ"และ"มากกว่าหรือเท่ากับ"
  • [ ]รอบตัวดำเนินการมัดลด ("เท่า") รายการอาร์กิวเมนต์ด้วยตัวดำเนินการนั้น (มันฉลาดพอที่จะคืนค่าเป็น True ถ้าอินพุตมีเพียงศูนย์หรือหนึ่งตัวอักษร)
  • or ผลตอบแทนจริงถ้าการแสดงออกของทั้งสองด้านของมันเป็นจริง

10

JavaScript (ES6), 43 ไบต์

([...s],q=s+"")=>q==s.sort()|q==s.reverse()

ไม่ทราบว่าคุณสามารถแก้ไขตัวแปรในอาร์กิวเมนต์เองได้ ดี!
ลุค

1
@Luke นี่เป็นเพียงการใช้พารามิเตอร์เริ่มต้นที่ยุ่งยากหากคุณต้องเรียกใช้ฟังก์ชันที่มีอาร์กิวเมนต์ที่สองqจะถูกตั้งค่าเป็นค่านั้นแทน
ETHproductions

ฉันหมายถึงผู้ดำเนินการแพร่กระจายซึ่งในกรณีนี้จะแปลงเป็นอาร์เรย์ทันที
ลุค

โอวตกลง. ใช่การมอบหมายการทำลายล้างก็มีประโยชน์เช่นกัน ;-)
ETHproductions

ฉลาดใช้การกลายพันธุ์.sort()เพื่อจัดเรียงโดยปริยายในการreverseตรวจสอบ
Cyoce

7

MATL , 7 ไบต์

dZSuz2<

ลองออนไลน์! หรือตรวจสอบกรณีทดสอบทั้งหมด

d     % Implicitly input string. Push array of consecutive differences of code points
ZS    % Sign. Transforms each entry into 1, 0 or -1
u     % Unique
z     % Number of nonzeros
2<    % Is it less than 2? Implicit display

มันจะกลับมาจริงสำหรับกรณีที่ไม่ถูกต้อง
Patrick Bard

1
@PatrickBard ตามที่บอกไว้ไม่จำเป็นต้องจัดการกับสิ่งเหล่านั้น
Suever

6

Clojure, 47 ไบต์

#(let[c(map int %)a apply](or(a <= c)(a >= c)))

ไม่สามารถหาวิธีการตัดสินใจว่าโอเปอเรเตอร์ใดที่จะใช้อย่างกระชับ มันเยี่ยมมาก
Carcigenicate

คุณสามารถใส่ชื่อฟังก์ชันบิวอินเป็นตัวแปรใน Clojure ได้หรือไม่ นั่นเจ๋งมาก มันทำให้<=และ>=ดูมัด แต่ซึ่งแปลกจริงๆ
clismique

(let[+ *](+ 2 3))= 6: D ใช้งานได้กับทุกฟังก์ชั่น แต่ไม่ได้อยู่ในมาโคร: "ไม่สามารถรับค่ามาโครได้"
NikoNyrh

6

C (gcc) , 70 ไบต์

o(s,a)char*s;{for(a=0;s[1];s++)a|=s[1]-*s&64|*s-s[1]&32;return a!=96;}

ฉันหวังว่าจะหาวิธีแก้ปัญหาที่สั้นกว่าโดยใช้ฟังก์ชั่นวนซ้ำ แต่มันก็ไม่ได้ผลเนื่องจากความต้องการเอาท์พุท ดังนั้นนี่คือวิธีการที่จำเป็น อย่างน้อยความสำคัญของโอเปอเรเตอร์ของ C ทำงานได้ดีสำหรับคำสั่งลูปภายใน

ลองออนไลน์!


6

R, 48 50 61ไบต์

เป็นฟังก์ชั่นที่ไม่มีชื่อ

function(s)sd(range(sign(diff(utf8ToInt(s)))))<1

ขอขอบคุณ @guiseppe สำหรับการเพิ่มพิเศษอีกสองสามไบต์

charToRawใช้เวลาsและแยกเป็นเวกเตอร์ดิบ สิ่งนี้ถูกแปลงเป็นจำนวนเต็มและdiffนำไปใช้ signทำให้ diffs เป็นหน่วยเดียว rangeลดเวกเตอร์ลงให้น้อยที่สุดและสูงสุด ถ้าค่าเบี่ยงเบนมาตรฐานsdน้อยกว่า 1 จะเป็น TRUE

ลองออนไลน์!


คุณสามารถบันทึก 9 ไบต์โดยใช้function(s,d=utf8ToInt(s))all(d==sort(d))หรือfunction(s,d=utf8ToInt(s))!is.unsorted(d)
mnel

หรือลดลงเหลือ 34 ไบต์ด้วย!is.unsorted(utf8ToInt(scan(,'')))
mnel

@mnel โชคร้ายเหล่านี้ไม่ได้จัดการกับการจัดเรียงเช่นย้อนกลับcbaและสุดท้ายจะต้องมีการcat()จะทำให้มันเป็นโปรแกรมเต็มรูปแบบ
MickyT

บันทึก 5 ไบต์ด้วยfunction(s)all(!diff(order(utf8ToInt(s)),,2))(ทำงานกับการเรียงลำดับย้อนกลับด้วย!)
mnel

@mnel ขออภัยอีกครั้งนั่นล้มเหลวสำหรับtree
MickyT

5

MATL, 8 ไบต์

tPvGSXma

ลองออนไลน์!

คำอธิบาย

        % Implicitly grab the input as a string
tP      % Create a copy that is reversed
v       % Vertically concatenate these
GS      % Grab the input again and sort it
Xm      % Check if each row of the normal and reversed matrix is equal to the sorted one
a       % Check if either row matched
        % Implicitly display the result

ดี แต่มันกลับมาจริง'\n'และ'Hello': /
Patrick Bard

1
@PatrickBard การป้อนข้อมูลจะเป็นกรณีเดียวกันทั้งหมดและจะเป็นไป[A-Za-z]ตามที่ระบุไว้ในโพสต์เริ่มต้นเท่านั้น พวกเขาอยู่ในส่วน "ไม่ถูกต้อง" เพราะไม่จำเป็นต้องจัดการอย่างชัดเจน
Suever

5

เยลลี่ , 4 5 ไบต์

Ṣm0ẇ@

ลองออนไลน์!

แต่เดิมอยู่Ṣm0wที่สี่ไบต์

คำอธิบาย

Ṣm0ẇ@  Input: string S
Ṣ      Sort S
 m0    Concatenate sort(S) with reverse(sort(S))
   ẇ@  Sublist exists? Check if S is contained in the previous result

ฉันแน่ใจว่ามีสี่ byter แต่ไม่สามารถคิดได้!
Jonathan Allan

1
... น่าเสียดายที่ OP ได้ชี้แจงผลลัพธ์ไม่ใช่ความจริง / เท็จ แต่มีค่าที่แตกต่างกันสองค่า ฉันเชื่อว่าสี่ไบต์ยังคงเป็นไปได้ แก้ไข: Ṣm0ẇ@ฮึ
Jonathan Allan

@JanathanAllan โชคไม่ดีเนื่องจากมันมีคุณสมบัติตรงตามกฎดั้งเดิมในการใช้รูปแบบของภาษาที่แท้จริง / เท็จ Ṣẇm0$อีกรูปแบบหนึ่งอาจจะมี หากการสั่งซื้อการโต้แย้งไม่ได้แตกต่างกันสำหรับwและ...
ไมล์

ดี แต่ผลตอบแทนจริงจากค่าที่ไม่ถูกต้อง
Patrick Bard

@PatrickBard Huh? '\n'และ'Hello'เป็นค่าที่ใช้ได้อย่างสมบูรณ์แบบ
Erik the Outgolfer


4

PowerShell , 61 ไบต์

param($a)$a-in-join(($b=[char[]]$a)|sort),-join($b|sort -des)

ลองออนไลน์!

รับอินพุต$aจากนั้นตรวจสอบว่า-inเป็นอาร์เรย์สององค์ประกอบหรือไม่ อาเรย์ถูกสร้างขึ้นโดยการจับ$aมันเป็น - charเรย์เก็บไว้ใน$bภายหลังท่อไปsort-objectที่เรียงลำดับศัพท์ องค์ประกอบอื่น ๆ จะถูก$bจัดเรียงตามลำดับการส่ง-desมอบ


4

Perl , 35 ไบต์

บันทึก 4 ไบต์ต้องขอบคุณ@Xcaliโดยตรงและอีก 4 ทางอ้อม

รหัสไบต์ 31 + -pFธง

@b=reverse@a=sort@F;$_=/@a|@b/x

ลองออนไลน์!

รหัสจะเรียงลำดับอินพุตและตรวจสอบว่าอินพุตตรงกับตัวเองที่เรียงลำดับ (หรือเรียงกลับกัน)


วิธีการที่แตกต่างกันเล็กน้อย แต่ลดลงเหลือ 38 ไบต์: ลองออนไลน์!
Xcali

@ Xcali ดีมากขอบคุณ จากนั้นเราสามารถกำจัด$"=$,และใช้/xตัวดัดแปลงแทนเพื่อบันทึกอีก 5 ไบต์
Dada


3

Bash + coreutils, 59 ไบต์

f()(sed 's/\(.\)/\1\
/g'<<<$s|grep .|sort -c$1)
s=$1
f||f r

สตริงอินพุตถูกส่งผ่านเป็นอาร์กิวเมนต์

เอาท์พุทจะถูกส่งกลับในรหัสทางออก (0 สำหรับ truthy, 1 สำหรับ falsy ตามปกติ) เช่นได้รับอนุญาตจากPPCG ฉันวิธีการ


3

PHP, 66 ไบต์

$a=$s=$r=str_split($argv[1]);sort($s);rsort($r);echo$s==$a|$r==$a;

รับอินพุตจากอาร์กิวเมนต์บรรทัดคำสั่ง -rทำงานด้วย



3

แร็กเก็ต , 93 ไบต์

(define(f s)(let([t(string->list s)])(or(equal?(sort t char<=?)t)(equal?(sort t char>=?)t))))

ลองออนไลน์!

Ungolfed:

(define (lex-sorted? string)
  (let ([char-list (string->list string)])
    (or
     (equal? (sort char-list char<=?) char-list)
     (equal? (sort char-list char>=?) char-list))))

ใช้การเรียงลำดับแล้วเปรียบเทียบกับวิธีการดั้งเดิม


3

Brachylogขนาด 5 ไบต์

ฉันพยายามหาโซลูชัน 4 ไบต์ไม่สำเร็จดังนั้นตอนนี้นี่เป็นโซลูชัน 5 ไบต์ที่น่าสนใจที่สุดที่ฉันพบ:

:No₎?

ลองออนไลน์!

oฟังก์ชั่นการสั่งซื้อสามารถใช้พารามิเตอร์: 0หมายถึงลำดับจากน้อยไปมาก1หมายถึงลำดับจากมากไปน้อย เราตั้งค่าพารามิเตอร์นั้นเป็นตัวแปรที่ไม่ได้ผูกNไว้ Brachylog จะลองใช้ค่าที่แตกต่างกันสำหรับN(เท่านั้น0หรือ1เป็นไปได้) พยายามรวมผลลัพธ์เข้าด้วยกัน


ดูเหมือนว่าจะไม่ทำงานอีกต่อไป :( o?|o₁?ทำงานเพื่อเพิ่มไบต์พิเศษ
hakr14

ดูเหมือนว่าจะทำงานหากคุณแทนที่เครื่องหมายโคลอนด้วยเครื่องหมายอัฒภาค o{|↔}?อีกตัวแปรหนึ่งไบต์จะได้ไม่ต้อง
สตริงที่ไม่เกี่ยวข้อง


2

JavaScript (ES6) 74 62 50 47 43 ไบต์

([...a],b=a+'')=>b==a.sort()|b==a.reverse()

หลังจากการเล่นกอล์ฟและ bugfixing คำตอบนี้จบลงด้วยการที่สวยมากเช่นเดียวกับ ETHProduction +1ดังนั้นโปรดตรวจสอบคำตอบของเขาออกมาและให้มัน


แก้ไขข้อผิดพลาด ..
ลุค

1
คุณจับฉันฉันโพสต์ความคิดเห็นก่อนที่จะแก้ไข ...
ลุค

ผมพบว่าสาเหตุของการเกิดข้อผิดพลาดและตอนนี้ฉันคงได้อย่างถูกต้องโดยการจัดทุกอย่างชาญฉลาด ...
ลูกา

ข้อผิดพลาดกลับมาแล้ว ... repl.it/FZrs/2
steenbergh

1
ทีนี้นี่เป็นคำตอบของ @ ETHProduction ที่ค่อนข้างมากในตอนนี้ดังนั้นฉันจึงเพิ่มประกาศ ได้โปรด+1ตอบเขา
ลุค

2

Haskell, 54 50 ไบต์

t a=or[and(zipWith(<=)`f`tail$a)|f<-[(=<<),(<*>)]]

ตัวอย่างการใช้งาน: ->t "defggh" ลองออนไลน์! .True

อาจจะใช้sortเหมือนคำตอบอื่น ๆ import Data.Listอาจจะสั้นกว่าแม้ว่ามันจะต้องใช้ นี่คือวิธีการที่แตกต่าง:

สำหรับฟังก์ชั่นทุกfจาก[(=<<),(<*>)]การคำนวณand(zipWith(<=)`f`tail$a)และต้องใด ๆ Trueของผลที่จะ มีฟังก์ชั่นดังนี้

((=<<) (zipWith(<=)) tail) a
((<*>) (zipWith(<=)) tail) a

ซึ่งทั้งสองดำเนินการเปรียบเทียบองค์ประกอบเพื่อนบ้านของรายการการป้อนข้อมูลaด้วยแต่อย่างหนึ่งที่มีการขัดแย้งพลิกผลในการ<= ตรวจสอบว่ามีการเปรียบเทียบทั้งหมด >=andTrue


2

มีขนาด 7 ไบต์

ogoGo|#

ลองออนไลน์!

คำอธิบาย:

      \ Implicit: Input on stack as charcodes
og    \ Check if the stack is sorted ascendingly (Push 0/1)
oG    \ Check if the stack is sorted descendingly (Push 0/1)
      \   - Note that this will work regardless of the first check, as input
      \     is guaranteed to be /[A-Za-z]+/
o|    \ Bitwise OR
#     \ Print the result

สิ่งนี้ไม่ส่งคืนค่าจริงที่แตกต่างกันหนึ่งรายการ
steenbergh

1
@steenbergh ไม่มี แต่มันตอบสนองของเราฉันทามติเมตากับสิ่งที่นับเป็น truthy หรือ falsy - 1และ2มีTrueในการขับในขณะที่มี0 False
FlipTack

หาก Pushy มีตัวดำเนินการระดับบิตหรือบิตนั่นควรใช้งานแทน
ETHproductions

@FlipTack ฉันคิดว่ามันชัดเจนในความท้าทาย แต่ตอนนี้ฉันได้ทำให้มันเจาะจงมากขึ้น: TRUE ต้องส่งออกค่าเดียวกันในทุก testcases กันไปสำหรับ FALSE
steenbergh

@steenbergh ฉันทามติ meta อยู่ที่นั่นด้วยเหตุผลและสมเหตุสมผล แต่ถ้าคุณยืนยัน ...
FlipTack

2

Pyth, 5 ไบต์

}Q_BS

โปรแกรมที่รับอินพุต"quoted string"และพิมพ์TrueหรือFalseตามความเหมาะสม

ชุดทดสอบ

มันทำงานอย่างไร

}Q_BS   Program. Input: Q
}Q_BSQ  Implicit variable fill
 Q      Is Q
}       in
    SQ  Q sorted
   B    or
  _     Q sorted reversed?
        Implicitly print

คุณสามารถบันทึกไบต์ (และกลายเป็นคำตอบที่สั้นที่สุด) โดยการแทนที่}Qด้วยซึ่งใช้โดยปริยาย/ Q
isaacg


2

GNU sed, 97 + 1 (แฟล็ก r) = 98 ไบต์

ถ้าตัวอักษรที่มีการสั่งซื้อผลตอบแทนสคริปต์มิฉะนั้น1 0ใน sed ไม่มีประเภทข้อมูล

s:$: zyxwvutsrqponmlkjihgfedcba:
s:(.*(.)(.).* ).*\2.*\3.*:\1abcdefghijklmnopqrstuvwxyz:i
//c0
c1

เพื่อตรวจสอบว่าตัวอักษรทั้งหมดเรียงตามลำดับจากน้อยไปมากฉันทำการค้นหาตารางของตัวอักษรต่อเนื่องแต่ละคู่ในตัวอักษรเรียงลำดับจากมากไปหาน้อยนั่นคือฉันพยายามค้นหาตัวอย่างตัวนับ โปรดทราบว่า//จริงๆแล้วการจับคู่นิพจน์ทั่วไปครั้งสุดท้ายซ้ำ! (ดูบรรทัดที่ 2 และ 3)

เรียกใช้ตัวอย่าง:สคริปต์สามารถทดสอบคำที่ป้อนได้หลายคำหนึ่งคำต่อบรรทัด

me@LCARS:/PPCG$ echo -e "tree\nABCDC" | sed -rf word_ordered.sed
1
0

2

CJam , 12 11 ไบต์

q_$_W%+\#)g

ลองออนไลน์!

คำอธิบาย

q            Push the input
 _$          Duplicate and sort
   _W%       Duplicate and reverse
      +      Concatenate the sorted and the reversed strings
       \     Bring input to the top
        #    Find the index of the input in the other string; returns -1 if not found
         )   Increment
          g  Signum (coerces to 0 or 1)

2

รหัสเครื่อง 8086, 68 61 48 46 45 39 ไบต์

00000000  b2 31 be 82 00 ac 9f 88  c3 ac 3c 0d 74 14 38 c3  |.1........<.t.8.|
00000010  74 f5 e3 03 b1 00 9f 77  05 9e 76 ea eb 03 9e 77  |t......w..v....w|
00000020  e5 4a b4 02 cd 21 c3                              |.J...!.|
00000027

ประกอบจาก:

org 0x100
use16
    mov dl, 0x31
    mov si, 0x82
    lodsb
a:  lahf
b:  mov bl, al
    lodsb
    cmp al, 0x0d
    je y
    cmp bl, al
    je b
    jcxz @f
    mov cl, 0
    lahf
@@: ja @f
    sahf
    jbe a
    jmp n
@@: sahf
    ja a
n:  dec dx
y:  mov ah, 0x02
    int '!'
    ret

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.