เรียงของตัวเลข


21

ภายในช่องของอักขระ Unicode จะมีบล็อก Unicode ของ (ปัจจุบัน) 63 ตัวอักษรชื่อ "Number Forms" ซึ่งประกอบด้วยอักขระที่มีค่าตัวเลขเช่นตัวเลขโรมันⅫเศษหยาบคายเช่น⅑หรือ↉หรือวัตถุแปลก ๆ เช่น ↊ (10) หรือↈ (100000)

งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อได้รับรายชื่ออักขระ Unicode ที่กำหนดไว้ในบล็อกนี้จะเรียงลำดับรายการตามค่าตัวเลขของอักขระแต่ละตัว

รายการ (จัดเรียง) ของตัวละครและค่านิยมที่สามารถพบได้ในวิกิพีเดียหน้า

เพื่อเป็นตัวเองแม้ว่านี่คือรายการของ codepoints และค่าของพวกเขา:

Hex     Char   Value
0x00BC: ¼   = 1/4 or 0.25
0x00BD: ½   = 1/2 or 0.5
0x00BE: ¾   = 3/4 or 0.75
0x2150: ⅐   = 1/7 or 0.142857
0x2151: ⅑   = 1/9 or 0.111111
0x2152: ⅒   = 1/10 or 0.1
0x2153: ⅓   = 1/3 or 0.333333
0x2154: ⅔   = 2/3 or 0.666667
0x2155: ⅕   = 1/5 or 0.2
0x2156: ⅖   = 2/5 or 0.4
0x2157: ⅗   = 3/5 or 0.6
0x2158: ⅘   = 4/5 or 0.8
0x2159: ⅙   = 1/6 or 0.166667
0x215A: ⅚   = 5/6 or 0.833333
0x215B: ⅛   = 1/8 or 0.125
0x215C: ⅜   = 3/8 or 0.375
0x215D: ⅝   = 5/8 or 0.625
0x215E: ⅞   = 7/8 or 0.875
0x215F: ⅟   = 1
0x2160: Ⅰ   = 1
0x2161: Ⅱ   = 2
0x2162: Ⅲ   = 3
0x2163: Ⅳ   = 4
0x2164: Ⅴ   = 5
0x2165: Ⅵ   = 6
0x2166: Ⅶ   = 7
0x2167: Ⅷ   = 8
0x2168: Ⅸ   = 9
0x2169: Ⅹ   = 10
0x216A: Ⅺ   = 11
0x216B: Ⅻ   = 12
0x216C: Ⅼ   = 50
0x216D: Ⅽ   = 100
0x216E: Ⅾ   = 500
0x216F: Ⅿ   = 1000
0x2170: ⅰ   = 1
0x2171: ⅱ   = 2
0x2172: ⅲ   = 3
0x2173: ⅳ   = 4
0x2174: ⅴ   = 5
0x2175: ⅵ   = 6
0x2176: ⅶ   = 7
0x2177: ⅷ   = 8
0x2178: ⅸ   = 9
0x2179: ⅹ   = 10
0x217A: ⅺ   = 11
0x217B: ⅻ   = 12
0x217C: ⅼ   = 50
0x217D: ⅽ   = 100
0x217E: ⅾ   = 500
0x217F: ⅿ   = 1000
0x2180: ↀ   = 1000
0x2181: ↁ   = 5000
0x2182: ↂ   = 10000
0x2183: Ↄ   = 100
0x2184: ↄ   = 100
0x2185: ↅ   = 6
0x2186: ↆ   = 50
0x2187: ↇ   = 50000
0x2188: ↈ   = 100000
0x2189: ↉   = 0
0x218A: ↊   = 10
0x218B: ↋   = 11

กรณีทดสอบ:

['½','ↆ','ↂ','⅒','Ⅽ','⅑','ⅷ'] -> ['⅒','⅑','½','ⅷ','ↆ','Ⅽ','ↂ']

['¼','↋','↉','ↅ','⅐','⅟','Ⅻ','ⅺ'] -> ['↉','⅐','¼','⅟','ↅ','↋','ⅺ','Ⅻ']

['¼','½','¾','⅐','⅑','⅒','⅓','⅔','⅕','⅖','⅗','⅘','⅙','⅚','⅛','⅜','⅝','⅞','⅟'] -> ['⅒','⅑','⅛','⅐','⅙','⅕','¼','⅓','⅜','⅖','½','⅗','⅝','⅔','¾','⅘','⅚','⅞','⅟']

'⅞ⅾ↊ↄⅨⅮⅺↁⅸⅰⅩⅱⅶ¾ⅧↅↃ↋ↆ⅔ⅼⅲ⅘⅒ⅽⅦ⅕ⅤⅭⅳↂⅪⅬⅯↇⅠⅷ⅛Ⅵ½ⅵ¼ⅻ⅐Ⅱ⅜⅗⅝⅚Ⅳ⅓ⅴ↉ⅿⅫⅹↀↈ⅙⅑Ⅲ⅖⅟' -> '↉⅒⅑⅛⅐⅙⅕¼⅓⅜⅖½⅗⅝⅔¾⅘⅚⅞⅟ⅠⅰⅡⅱⅢⅲⅣⅳⅤⅴⅥⅵↅⅦⅶⅧⅷⅨⅸⅩⅹ↊Ⅺⅺ↋ⅫⅻⅬⅼↆⅭⅽↄↃⅮⅾⅯⅿↀↁↂↇↈ'

['Ↄ','ↄ','↊','↋'] -> ['↊','↋','ↄ','Ↄ']

โปรดทราบว่าสัญลักษณ์สี่ตัว (สัญลักษณ์ที่ใช้ในกรณีสุดท้าย) ไม่ใช่ตัวเลข unicode แม้ว่าจะยังมีค่าตัวเลขอยู่ดังนั้นควรตรวจสอบให้แน่ใจก่อนตรวจสอบก่อนโพสต์ในตัว

กฎ:

  • หากมีการกำหนดอักขระเพิ่มเติมให้กับบล็อกนี้อีกในอนาคตคุณไม่จำเป็นต้องอัปเดตโค้ดของคุณเพื่อรองรับพวกเขา
  • ลำดับของตัวละครที่มีค่าเหมือนกันไม่สำคัญ
  • IO ยืดหยุ่นได้
    • ผลลัพธ์จะต้องเป็นตัวอักษรไม่ใช่ค่าตัวเลข
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • ฉันไม่ได้ห้ามบิวด์อินที่สามารถดึงค่าตัวเลขของอักขระได้ แต่ฉันขอแนะนำให้เพิ่มคำตอบที่ไม่ใช่บิวด์อินด้วยถ้าเป็นไปได้
  • นี่คือดังนั้นคำตอบที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาที่ชนะ! โชคดี!

9
Monopacing ของ RIP :(
Jo King

คำตอบ:


6

Python 3 , 216 213 ไบต์

-3 ไบต์ขอบคุณ TFeld

lambda l:sorted(l,key='⅒⅑⅐⅙⅕¼⅓⅖½⅗⅔¾⅘⅚⅟ⅠⅰⅡⅱⅢⅲⅣⅳⅤⅴⅥⅵↅⅦⅶⅧⅷⅨⅸⅩⅹ↊Ⅺⅺ↋ⅫⅻⅬⅼↆⅭⅽↃↄ⅛⅜Ⅾⅾ⅝⅞Ⅿⅿↀↁↂↇↈ'.find)

ลองออนไลน์!

ด้วยบิวด์อินที่ดึงค่าตัวเลข 111 ไบต์

lambda l:sorted(l,key=lambda c:[10,11,100,100,0]['↊↋Ↄↄ'.find(c)]or numeric(c))
from unicodedata import*

ลองออนไลน์!


4
คุณสามารถบันทึก 3 ไบต์โดยการลบออกจากสตริง (ค้นหาผลตอบแทน-1ที่มีขนาดเล็กที่สุด)
TFeld

4

Perl 6 , 57 ไบต์

*.sort: {%(<Ↄ 100 ↄ 100 ↊ 10 ↋ 11>){$_}//.unival}

ลองออนไลน์!

เพียงแค่ค้นหาอักขระพิเศษสี่ตัวในแฮชหรือย้อนกลับไปที่univalวิธีการในตัว


คุณไม่ต้องการช่องว่างหลังเครื่องหมายจุดคู่ นอกจากนี้ลิงก์ของคุณยังคงอยู่ในบล็อคโค้ดแทนที่จะเป็นแลมบ์ดาอะไรก็ตาม
โจคิง

4

05AB1E (ดั้งเดิม) , 192 74 63 61 ไบต์

Σ•Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ
,λ₂ϦP(Ì•65в₂+sÇт%k

-118 ไบต์โดยใช้อักขระของโค้ดเพจของ 05AB1E เท่านั้นดังนั้นเราจึงไม่จำเป็นต้องใช้การเข้ารหัส UTF-8
-11 ไบต์ขอบคุณที่@Adnan
-2 ไบต์ขอบคุณที่@Grimy

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

คำอธิบาย:

Σ            # Sort the input by:
 Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ
 ,λ₂ϦP(Ì•65в₂+
             #  List of ASCII values modulo-100 of the characters we want to sort
 sÇ          #  Get the ASCII value of the current input-character
   т%        #  Take modulo 100 of this ASCII value
 k           #  And get the index in the list of ASCII values, as sorting order

แล้วอะไร•Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ\n,λ₂ϦP(Ì•65в₂+ล่ะ?

ขึ้นอยู่กับคำสั่งของตัวละคร modulo-100 เราได้รับรายการต่อไปนี้:

[85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]

สิ่งเหล่านี้สร้างขึ้นโดยโปรแกรมต่อไปนี้:

"↉⅒⅑⅛⅐⅙⅕¼⅓⅜⅖½⅗⅝⅔¾⅘⅚⅞⅟ⅠⅰⅡⅱⅢⅲⅣⅳⅤⅴⅥⅵↅⅦⅶⅧⅷⅨⅸⅩⅹ↊Ⅺⅺ↋ⅫⅻⅬⅼↆⅭⅽↃↄⅮⅾⅯⅿↀↁↂↇↈ"Çт%

ลองออนไลน์

•Bšā¿ÑáζΔÕæ₅"®GÙ₂®°ƶío"§óÏ4¸bćÔ!₃ùZFúÐìŸ\n,λ₂ϦP(Ì•65в₂+เป็นรูปแบบที่สั้นกว่าของรายการนี้โดยรับหมายเลขที่บีบอัด 1485725021600091112740267145165274006958935956446028449609419704394607952161907963838640094709317691369972842282463จากนั้นแปลงเป็นฐาน 65 และเพิ่มเข้าไปอีก 26 รายการ

ลองมันออนไลน์และตรวจสอบว่ารายชื่อจะเหมือนกัน


1
ใช่ตัวละครทั้งหมดนั้นไม่ได้อยู่ในการเข้ารหัสของ 05AB1E ดังนั้นมันจึงเป็น 192 ไบต์
Okx

2
ใช่มันเป็นไปไม่ได้ที่จะแสดงรหัสนี้เป็นไฟล์ 68- ไบต์ซึ่งบังคับให้เราถอยกลับไปที่ UTF-8 ซึ่งเป็น192 ไบต์แน่นอน
Adnan

1
@JoKing ดังนั้นตอนนี้ฉันแค่ใช้ตัวอักษรจากหน้ารหัสของ 05AB1E เท่านั้น ;) ยังคงเป็นวิธีที่น่าเบื่อ แต่จะดูว่าฉันสามารถหารูปแบบทางคณิตศาสตร์ได้ไหม
Kevin Cruijssen

1
ฉันคิดว่าคุณสามารถแทนที่"]&%/$-)`'0*a+1(b,.234D5E6F7G8H9IY:J;K<L=M^>N_?O@PZAQWXBRCSTUV[\"Ç8-ด้วย•4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в
Adnan

1
อืมดูเหมือนว่าจะเป็นข้อผิดพลาดในการวิเคราะห์คำ แต่ไม่ลงทะเบียนวงเล็บปิด ฉันจะตรวจสอบเรื่องนี้
Adnan

3

Retina , 1 93 ไบต์ (UTF-8)

2{O`.
T`¼-¾⅐-↋\LI ^]Q@TU\\[ZYWSPNK\HFDB?=;975X\VR\OMJG\ECA><:86432\-)#1%0,*&.(!"$/+'`Ro

ลองออนไลน์! คำอธิบาย: เรียงลำดับอักขระตามลำดับจุดโค้ดจากนั้นแม็พระหว่างอักขระตัวเลขและอักขระ ASCII เพื่อให้อักขระตัวเลขที่มีค่าต่ำสุดแม็พอักขระ ASCII ด้วยจุดโค้ดต่ำสุดและในทางกลับกัน จากนั้นทำซ้ำแบบฝึกหัดเพื่อให้อักขระเรียงลำดับตามการแมป ASCII นี้ซึ่งสอดคล้องกับลำดับตัวเลขที่ต้องการก่อนที่จะถูกแปลงกลับ แก้ไข: บันทึก 100 (!) ไบต์โดยระบุลำดับของอักขระ ASCII แทนที่จะเป็นอักขระตัวเลข


3

เยลลี่ , 55 ไบต์

O%70‘“$Żz*ṀḢD⁹VṢaʠƝ lẹkƝʋ9⁽ƭXmż4#⁺3ç%|ọṢLxƈ⁽}ÞƇ2’Œ?¤iµÞ

ลิงก์ monadic ยอมรับรายการของอักขระที่ให้รายการของอักขระ

ลองออนไลน์!

อย่างไร?

ง่ายกว่าที่คิดไว้มากนักเนื่องจาก“$Żz*ṀḢD⁹VṢaʠƝ lẹkƝʋ9⁽ƭXmż4#⁺3ç%|ọṢLxƈ⁽}ÞƇ2’มีเพียงจำนวนมากในฐาน 250 โดยใช้รหัสหน้าของ Jelly เป็นหลักฉันจะใช้“...’แทน

O%70‘“...’Œ?¤iµÞ - Link: list of characters
               Þ - sort by:
              µ  -   the monadic function (i.e. f(character)):
O                -     get the ordinal value of the character
 %70             -     modulo by 70 (get the remainder after dividing by 70)
                 -       - giving integers in [0,69] excluding [52,58]
    ‘            -     increment (below code pattern can't have anything but '↉' map to 0)
            ¤    -     nilad followed by link(s) as a nilad:
     “...’       -       literal 7826363328008670802853323905140295872014816612737076282224746687856347808481112431487214423845098801
          Œ?     -       get the permutation of natural numbers [1,N] with minimal N such
                 -         that this permutation would reside at the given index in a
                 -         sorted list of all permutations of those same numbers
                 -         -> [46,52,53,54,55,56,57,58,61,60,70,59,68,64,49,62,1,65,50,66,2,63,51,67,69,3,4,5,21,6,22,7,23,8,24,9,25,10,26,42,11,27,12,28,13,29,14,30,47,15,31,48,16,32,17,33,43,18,34,40,41,19,35,20,36,37,38,39,44,45]
             i   -     first index of (the ordinal mod 70 plus 1) in that list

นอกเหนือ

ค่อนข้างแดกดันที่ใกล้ที่สุดเพื่อ "ใช้วิธีการในตัว" ฉันสามารถรวบรวมได้85 ไบต์นี้ใช้สตริงอัด:

from unicodedata import*; copy_to( atoms['
'], numeric( atoms['
'].call()))

ซึ่งแบ่งเป็นบรรทัดใหม่และเข้าร่วมกับs เพื่อให้รหัสหลาม:

from unicodedata import*; copy_to( atoms['⁸'], numeric( atoms['⁸'].call()))

ซึ่งสามารถเรียกใช้งานได้ภายในล่ามของ Jelly - มันจะวางค่าตัวเลขของอักขระ Unicode ลงในอาร์กิวเมนต์ nilad ด้านซ้ายเพื่อใช้ในภายหลัง


3

Japt , 72 ไบต์

ñ@`'%!x("y#) z$&*+,<-=.>/?0@1aq2b3c4d5ev6fw7g8hr9iop:j;klmn¡`u bXcuL

ลองใช้หรือเรียกใช้กรณีทดสอบทั้งหมด


คำอธิบาย

ñ@                 :Sort by passing each X through a function
  `...`            :  A compressed string, which itself contains a bunch of unprintables (See below for codepoints of original string)
       u           :  Uppercase
         b         :  Index of
          Xc       :   Charcode of X
            uL     :   Mod 100 and get character at that codepoint

Codepoints

30,29,39,28,37,33,120,31,40,34,121,35,41,32,122,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,97,113,50,98,51,99,52,100,53,101,118,54,102,119,55,103,56,104,114,57,105,111,112,58,106,59,107,108,109,110,115,116

โซลูชันดั้งเดิม, 90 89 88 ไบต์

ñ!b`(&" )#$*!%'+,-=.>/?0@1a2br3c4d5e6fw7gx8h9:jpq;k<lmÍ/`®iv u nLõd)dÃi6'¼ iA'½ iE'¾

ลองใช้หรือเรียกใช้กรณีทดสอบทั้งหมด


คำอธิบาย

   `...`                                :A compressed string, which itself contains a bunch of unprintables (See below for codepoints of original string)
        ®                               :Map
         iv                             :  Prepend "v"
            u                           :  Convert to uppercase
               Lõ                       :  Range [1,100]
                 d                      :  Characters at those codepoints
              n   )                     :  Convert from that base to base-10
                   d                    :  Get the character at that codepoint
                    Ã                   :End map
                     i6'¼               :Insert "¼" at (0-based) index 6
                          iA'½          :Insert "½" at index 10
                               iE'¾     :Insert "¾" at index 14
ñ                                       :Sort the input array
 !b                                     :  By finding the index of the current element in the string above

Codepoints

31,30,40,29,38,34,32,41,35,36,42,33,37,39,43,44,45,61,46,62,47,63,48,64,49,97,50,98,114,51,99,52,100,53,101,54,102,119,55,103,120,56,104,57,105,115,58,106,112,113,59,107,60,108,109,110,111,116,117

3

05AB1E, 56 53 51 50 49 48 ไบต์

ΣÇ©1ö•Ω‘~Èr–Õî5®Î¼ÓÂ∍_OûR•42в•мjāl†£•₂°*S>ÅΓ®Íè+

ลองออนไลน์!

ที่เป็นแกนหลักของการแก้ปัญหานี้คือการเข้ารหัสการแมปรหัสรายการ unicode ชี้ไปที่คีย์การเรียงลำดับ อักขระที่ตรงกับหมายเลขเดียวกันจะถูกแมปกับคีย์เดียวกันดังนั้นเราจึงต้องการ 40 คีย์ที่แตกต่างกัน

70 เป็นจำนวนที่เล็กที่สุดซึ่งเราสามารถปรับเปลี่ยน codepoints อินพุตทั้งหมดและรับผลลัพธ์ที่แตกต่าง เนื่องจากการจัดทำดัชนีใน 05AB1E ถูกล้อมรอบเราไม่จำเป็นต้องระบุอย่างชัดเจน70%เพียงตรวจสอบให้แน่ใจว่ารายการนั้นมีความยาว 70

ขอให้สังเกตว่ามีจุดรหัสต่อเนื่องกันยาวเหยียดพร้อมกับแป้นต่อเนื่องกัน ดังนั้นการเข้ารหัส (คีย์ - codepoint) แทนที่จะเป็นเพียงแค่ (คีย์) ให้การยืดยาวของตัวเลขที่เหมือนกันซึ่งสามารถเข้ารหัสความยาวรันได้ อย่างไรก็ตามช่วงของคะแนนรหัสมีขนาดใหญ่มาก (ไอ้ 0xBC เหล่านั้น .. 0xBE) ซึ่งจะเป็นปัญหา ดังนั้นแทนที่จะเป็น (key - codepoint) เราเข้ารหัส (key - sum_of_digits (codepoint)) ซึ่งน่าเสียดายที่จำกัดความยาวของการยืดไว้ที่ 10 แต่ทำได้ค่อนข้างดีในการลดช่วงของค่าที่เข้ารหัส (ฟังก์ชั่นอื่น ๆ เป็นไปได้แน่นอนเช่น codepoint% คงที่ แต่ผลรวมของตัวเลขให้ผลลัพธ์ที่ดีที่สุด)

นอกจากนี้มันกลับกลายเป็นว่าการหมุนรายการด้วยการเล่น 2 ครั้งด้วยการเข้ารหัสแบบรันไทม์ดังนั้นเราจึงลบ 2 จาก codepoint ก่อนการทำดัชนี

•Ω‘~Èr–Õî5®Î¼ÓÂ∍_OûR•42в    # compressed list [25, 34, 27, 36, 30, 38, 29, 35, 41, 0, 28, 16, 19, 31, 7, 4, 11, 17, 22, 13, 16, 17, 20, 8, 19, 4, 18, 21]
•мjāl†£•                    # compressed integer 79980000101007
        ₂°*                 # times 10**26
           S                # split to a list of digits
            >               # add 1 to each
             ÅΓ             # run-length decode, using the first list as elements and the second list as lengths

Σ                           # sort by
 Ç©1ö                       # sum of digits of the codepoint
           +                # plus
     ...  è                 # the element of the run-length decoded list
        ®Í                  # with index (codepoint - 2) % 70


1

T-SQL, 207 ไบต์

SELECT*FROM t ORDER BY
CHARINDEX(c,N'⅒⅑⅛⅐⅙⅕¼⅓⅜⅖½⅗⅝⅔¾⅘⅚⅞⅟ⅠⅰⅡⅱⅢⅲⅣⅳⅤⅴⅥ
              ⅵↅⅦⅶⅧⅷⅨⅸⅩⅹ↊Ⅺⅺ↋ⅫⅻⅬⅼↆⅭⅽↃↄⅮⅾⅯⅿↀↁↂↇↈ'COLLATE Thai_BIN)

ส่งคืนตรงกลางของสตริงสำหรับการอ่านเท่านั้น ฉันคิดว่าฉันได้จำนวนไบต์ที่ถูกต้อง (3 ตัวอักษรตัวเลขคือ 1 ไบต์ส่วนที่เหลือคือ 2 ไบต์) จำนวนตัวอักษรคือ 148

ฉันเรียงลำดับสตริงตามลำดับจากน้อยไปมากโดยปล่อย(ซึ่งคืนค่า 0) ตามคำแนะนำอื่น ๆ

การเปรียบเทียบไบนารีใด ๆ ก็ใช้งานได้ฉันใช้Thai_BINเพราะมันมีชื่อที่สั้นที่สุด (การเปรียบเทียบใน SQL กำหนดวิธีการเรียงลำดับ / การเปรียบเทียบอักขระฉันต้องการไบนารีดังนั้นอักขระแต่ละตัวจะจับคู่เท่านั้นเอง)

ตามมาตรฐาน IO ของเราใส่จะได้รับการผ่านทางที่มีอยู่ก่อนตารางทีกับNCHAR(1)สนามค

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

CREATE TABLE t(c NCHAR(1) COLLATE Thai_BIN)

อักขระใดที่จะจับคู่กันถ้าคุณไม่ได้ใช้การเปรียบเทียบไบนารี
Neil

1
@Neil ดีขึ้นอยู่กับที่เปรียบเทียบอื่น ๆ ที่คุณใช้จริง! :) สิ่งที่ชัดเจนที่สุดที่ฉันสังเกตเห็น (โดยใช้ค่าเริ่มต้นเซิร์ฟเวอร์ของฉันคือ SQL_Latin1_General_SP1_CI_AS) ก็คือตัวเลขโรมันส่วนบนและล่างจะจับคู่กัน อันไหน .... อืม ... อาจใช้งานได้จริงสำหรับฉันที่นี่เนื่องจากพวกเขาแก้ไขเป็นหมายเลขเดียวกัน แต่ถ้าชื่อการเรียงต่อไปนั้นยาวขึ้นมาก BRB, ต้องทดสอบมากกว่านี้ ...
BradC

1
@Neil Nope ไม่ดี ด้วยการเปรียบเทียบที่ไม่ใช่ไบนารี 10 ตัวอักษรร่วมน้อย ( ⅐⅑⅒Ↄↄↅↆↇↈ↉↊↋ถ้าคุณอยากรู้) ทั้งหมดตรงกับแต่ละอื่น ๆ
BradC

อานั่นเป็นความอัปยศ แต่ขอบคุณที่แจ้งให้เราทราบ!
Neil


1

Perl 6 , 13 52 ไบต์

*.sort:{%(<Ↄ 99  99  10  11>){$_}//.EVAL}

ลองออนไลน์!


2
การใช้ eval ไม่ใช่การโกง แต่การทำเช่นนี้ไม่สามารถแก้ปัญหาได้ 52 ที่ใช้งานได้จริง:*.sort:{%(<Ↄ 99 ↄ 99 ↊ 10 ↋ 11>){$_}//.EVAL}
Grimmy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.