ฉันจะพูดโปรแกรมของคุณเร็วแค่ไหน?


26

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

เพื่อที่จะทำให้โปรแกรมการเขียนตามคำบอกของฉันสอดคล้องกันมากขึ้นฉันตัดสินใจที่จะสลับไปใช้โหมดตัวละครโดยที่ฉันพูดชื่อตัวละครแต่ละตัวแทน แก้ไขปัญหา! แม้ว่าสิ่งนี้จะทำให้วันที่วางจำหน่ายของฉันล่าช้าออกไปเล็กน้อย ...

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

ข้อมูลจำเพาะ

รับสตริงที่ประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้นให้ส่งคืนผลรวมของชื่อ Unicode ของตัวละคร ยกตัวอย่างเช่น/ที่เรียกว่าSOLIDUSมี 7 ตัวอักษรและAเป็นLATIN CAPITAL LETTER A22 ตัวอักษร

แต่จำไว้ว่าฉันต้องพูดโปรแกรมของคุณออกมาดัง ๆ เพื่อให้ได้คะแนนของพวกเขาจะขึ้นอยู่กับว่าฉันใช้เวลานานแค่ไหนในการบอกพวกเขานั่นคือผลรวมของความยาวของชื่อยูนิโค้ดของตัวละครแต่ละตัว

กรณีทดสอบ:

ในรูปแบบที่input => outputไม่มีช่องว่างต่อท้าย / นำหน้าในอินพุต

A      => 22
/      => 7
Once upon a time...           => 304
slurp.uninames>>.comb.sum.say => 530
JoKing => 124
!" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        =>  1591
Double-check your \s on the last test case ;)   => 755
<say "<$_>~~.EVAL">~~.EVAL     => 388
,[.,]  => 58
19     => 19

กฎ:

  • อินพุตไปยังโปรแกรมของคุณจะประกอบด้วยอักขระ ASCII ที่พิมพ์ได้เท่านั้นนั่นคือ codepoints 32 (ช่องว่าง) ถึง 126 (tilde)
    • เพื่อความสะดวกนี่คือรายการความยาวของตัวละครที่คุณต้องจัดการ: [5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5]
  • นี่คือโปรแกรมอ้างอิงที่คุณสามารถใช้เพื่อทำคะแนนโปรแกรมของคุณ
    • Peter Taylor ได้ชี้ให้เห็นว่าโปรแกรมอ้างอิงจะทำให้อักขระยูนิโค้ดมีความปกติ มันควรจะยังคงทำงานสำหรับการแก้ปัญหาส่วนใหญ่ แต่อย่าลังเลที่จะแก้ไขหากคุณต้องการ
  • เมื่อคุณพูดถึงลักษณะของตัวละครที่แท้จริงการแก้ปัญหาของคุณจะถูกทำเครื่องหมายโดยตัวละครที่ปรากฏขึ้นไม่ใช่ไบต์ที่เกี่ยวข้อง สิ่งนี้ถูกชี้นำไปยังภาษาที่มีการเข้ารหัสที่กำหนดเอง
    • คุณสามารถสันนิษฐานได้ว่าฉันจำไลบรารี Unicode ทั้งหมดและสามารถพูดอักขระแปลก ๆ ที่คุณใช้
  • ขออภัย Rogem แต่คำตอบต้องประกอบด้วยอักขระที่แสดงได้ Unprintables ดีฉันแค่ต้องสามารถอ่านตัวละครดัง ๆ
  • สิ่งที่คุณทำอย่าใช้ในโปรแกรมของคุณ

9
ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORMนี่จะเป็นชื่อเต็มของลูกของฉัน
Quintec

1
โปรแกรมนี้ได้คะแนน 6 ในโหมดคำศัพท์: ลองออนไลน์!
Neil

2
โปรแกรมอ้างอิงเป็นบั๊กกี้ พิจารณา [ทดสอบนี้] ( tio.run/##dY5PC4JAEMXvfYphYcNsWcrSi@Ahrx3rlB223FTSXdk/... ) ซึ่งนับเป็น\x[2126] \x[3a9]
Peter Taylor

คำตอบ:


13

Java 8, คะแนน846 838 822 816

ௐ->ௐ.map(ˇ->Character.getName(ˇ).length()).sum()

-8 คะแนนขอบคุณที่@tshแทนที่ด้วย_1 -22 คะแนนขอบคุณที่@ ASCII เท่านั้นแทนที่ด้วยและมี
ˇ$

ลองออนไลน์

คำอธิบาย:

และˇถูกนำมาใช้แทนsและcผมปกติจะใช้เพราะตัวพิมพ์เล็กมีทั้งหมด 20 (คือLATIN SMALL LETTER S) แต่( TAMIL OM) คือ 8 และˇ( CARON) คือ 5

ௐ->                         // Method with IntStream parameter and integer return-type
  ௐ.map(ˇ->                 //  Map each character to:
      Character.getName(ˇ)  //   Get the name of the character
               .length())   //   Get the length of that name
   .sum()                   //  And after the map: sum all lengths together,
                            //  and return it as result

1
ฉันชอบสิ่งที่สิ่งจาวานี้ชนะ 05AB1E ตอบทั้งในแง่ของไบต์และแง่ของคะแนน ...
Erik the Outgolfer

@EriktheOutgolfer Ikr Builtins ftw ฉันเดา ;)
Kevin Cruijssen

@KevinCruijssen มันประหยัดไม่กี่ไบต์ที่คุณไม่ต้องpush compressed integer 87235805968599116032550323044578484972930006625267106917841: P
Quintec

1
ใช้แทน_1จะบันทึกบางจุด
tsh

1
@KevinCruijssen Peter Taylor's ( OHM SIGN) มีความยาว 8 ตัวอักษร ฮ่าฮ่าฉันไม่ทราบว่ามันไม่ถูกต้องแค่สันนิษฐานว่ามันใช้ได้ใน C # และ Peter _1ก็ใช้เช่นกัน ( โปรแกรมเพื่อค้นหาชื่อตัวแปรแบบสั้นไม่สามารถใช้อักขระช่องได้)
ASCII- เท่านั้น


7

Japt v2.0a1 -xคะแนน926 908 875 865 829 791 789

รับอินพุตเป็นอาร์เรย์ของอักขระ

®cg`061742//0.450./..//.2/5117385`c+51 r\A_p26}  n# 

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

( APOSTROPHEถูกตัดออกจากกรณีทดสอบที่ 6 บน TIO เนื่องจาก Japt ไม่สามารถจัดการทั้งเครื่องหมายคำพูดเดี่ยวและคู่ในสตริงอินพุตเดียวกัน)


คำอธิบาย

®cg`...`c+51 r\A_p26}  n#      :Implicit input of character array
®                              :Map
 c                             :  Character code
  g                            :  Index into (0-based, with wrapping)
   `...`                       :    The string described below
        c+51                   :    Increment the codepoint of each by 51 (="8cKidj55gebbc9agh895c97a99baa9bba59ebhddMjfkh")
                               :    (Space closes the above method)
             r                 :    Replace
              \A               :      RegEx /[A-Z]/g
                _              :      Pass each match through a function
                 p26           :        Repeat 26 times
                    }          :      End function
                               :    (Space closes the replace method)
                               :  (Space closes the indexing method)
                       n       :  Convert to integer
                        #      :    From base 32 (note the trailing space)
                               :Implicitly reduce by addition and output

อาคารสายอักขระ

(คะแนนรวมขั้นตอนและอักขระพิเศษที่จำเป็นในการย้อนกลับการแก้ไขแต่ละครั้ง)

  1. อาร์เรย์ให้คะแนนพื้นฐานของ2161
  2. แปลงแต่ละตัวเดียวในฐาน>=23และเข้าร่วมเป็นสตริงคะแนน1,832
  3. การเปลี่ยนการทำงานของทั้งสองmและkมีเพียงหนึ่งเดียวตัวอักษรตัวพิมพ์ใหญ่คะแนน963
  4. ยังมีจดหมายราคาแพงมากเกินไปดังนั้นต่อไปฉันพยายามกำจัดพวกเขาโดยลด codepoints ของตัวละครทั้งหมด 5เป็นตัวละครที่มี codepoint ต่ำสุด ( 53) ดังนั้นฉันจึงเริ่มต้นด้วย 52 ซึ่งได้คะแนน756
  5. หลังจากลองตัวเลขทั้งหมดที่ไม่ทิ้งตัวอักษรไว้ในสตริง51ให้คะแนนที่ดีที่สุด738
  6. สุดท้ายเปลี่ยนเครื่องหมายคำพูดกับ backticks เล็กน้อยถูกให้คะแนนของ734 Backticks ใน Japt มักจะใช้ในการล้อมและคลายการบีบอัดสตริง แต่โชคดีที่ไม่มีตัวอักษรในสายนี้อยู่ในห้องสมุดของ Shoco

สตริงสุดท้ายดังนั้นมีอักขระที่ codepoints ต่อไปนี้:

[5,48,24,54,49,55,2,2,52,50,47,47,48,6,46,52,53,5,6,2,48,6,4,46,6,6,47,46,46,6,47,47,46,2,6,50,47,53,49,49,26,55,51,56,53]

4

05AB1Eคะแนน963

Îv•Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21вεD3‹i22α₂и}}˜yÇ32-è+

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

คำอธิบาย:

Î               # Push 0 and the input-string
 v              # Loop `y` over the characters of this input-string:
  Fδà‚<0?9½mΣ@×ƶCvc-™uΔ_ε'•
               '#  Push compressed integer 87235805968599116032550323044578484972930006625267106917841
   21в          #  Converted to Base-21 as list: [5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5]
    ε           #  Map over this list:
     D3i       #   If the value is smaller than 3:
         22α    #    Take the absolute difference of this value with 22
            ₂и  #    Repeat it 26 times as list
    }}          #  Close the if-statement and map
      ˜         #  Flatten the list
       yÇ       #  Get the unicode value of the current character
         32-    #  Subtract 32
            è   #  Index it into the list of integers
             +  #  And add it to the sum
                # (and output the sum implicitly as result after the loop)

ดู 05AB1E นี้เคล็ดลับของฉัน (ส่วนวิธีการบีบอัดจำนวนเต็มขนาดใหญ่?และวิธีการบีบอัดรายการจำนวนเต็ม? )จะเข้าใจว่าทำไมเป็น•Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21в[5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5]


4

C # (Visual C # Interactive Compiler) (คะแนน1627 1116 1096 1037 1019 902)

Ω=>Ω.Sum(ˇ=>(31&-ˇ)>5&ˇ>62?22-ˇ/91*2:"♁♌♊♇♇♈♅♆♌♍♄♅♁♈♅♃♆♅♅♇♆♆♅♇♇♆♁♅♊♇♍♉♉♏♋♐♍♄♈♎♉♏♁"[ˇ-6-ˇ/33*26]-9788)

สิ่งนี้ใช้ฐานข้อมูลในตัวไม่ได้: เพียงตัวอักษรพิเศษบางอย่างสำหรับตัวอักษรและตารางการค้นหา

ชุดทดสอบออนไลน์

ไม่สามารถให้คะแนนตัวเองได้เพราะตัวละครส่วนใหญ่ไม่ได้อยู่ในช่วงรวมทั้งตัวแปรCARONและOHM SIGNสัญลักษณ์จักรราศีที่ใช้เข้ารหัสตารางการค้นหา

ขอบคุณASCII-onlyสำหรับคำแนะนำมากมาย


คุณใช้โปรแกรมการให้คะแนนแบบใด
ASCII- เท่านั้น

tio.run/##NZDrdpNAFIX/z1OMY0wgwhCg0NAEanpT22jVaquGiAQnYbgMhIHWGJO36gv0xSJrBf@cdS57r72@E3A54HR3UbFgyMuCsoVEWenM7d3To@08PeKbKhU82xG2suDJdgd2xLauikPNbLc9R9eONU32FFPtakeI5CyOExrly5CShC4iSuMoonEcEcriZZryrFyGSZFygiZebdP1rmZOZcsUdwMwzwriB6Fw7xfQh5RBRh4m0zVAIyRBRYGaBpCybw8BumYBgVWesVpb0pRgjPc3vXcAEE@qIscVo8xPCXccHGTpDPMqxdxf7XWG3gPoMruqifcLVauNz1wEn7detDuC2H0pyVjpqZp@YJiHfetoMLSd41ejk9Oz84vXb95eXo3fvb/@8PHTzecvt3dfv32fuO70h/fTnwW/yHwR0ihOUpbly4KX1f3D79Wf9d/NtskyLBWgs6yaJUQOQhLEcJVVBXRdDmukMiQw8XkJS1KXwOcEDsQG3TAAGtYU0EXDludst/j8djR20f@u@UK/D5A0wdK0oa1H1WrCLbARwV1BSzKmjAgttPYly9hAaDsQrueCL26QONj9Aw
ASCII เท่านั้น

2
@ ASCII เท่านั้นฉันใช้คำตอบของ Python ด้านล่าง คำตอบ Java ยังให้ 1627 ปัญหาดูเหมือนว่าเป็นวิธีการแก้ปัญหาการอ้างอิงเป็นรถ: Ωคือ U + 2126, สัญญาณOHMไม่ใช่ GREEK CAPITAL LETTER OMEGA
Peter Taylor

1
ชื่อคะแนน 5: ˇ, ไม่มีชื่ออื่นที่สั้นกว่า 8 ที่ C # ยอมรับ, ไม่ได้ตรวจสอบกับโปรแกรม Java
ASCII เท่านั้น

1
@ เควินตามข้อคิดเห็นของฉันก่อนหน้านี้การใช้งานอ้างอิงนั้นมีค่า ฉันคิดว่าการใช้การทำให้เป็นมาตรฐานเพื่อเปลี่ยนอักขระต้นฉบับ OHM SIGN ให้กลายเป็น GREEK CAPITAL LETTER OMEGA
Peter Taylor

4

R; คะแนน: 3330 1586 1443

ความท้าทายใน R ก็เนื่องมาจากการขาดในตัว

ตอนนี้โค้ดส่วนใหญ่เป็น @ Giuseppe แต่ไม่เป็นไร ฉันสามารถแก้ไขกอล์ฟขนาดเล็กเพิ่มเติมได้โดยแทนที่ * ด้วย ~ และ s ด้วยจุด

ขอขอบคุณ @Nick Kennedy ที่ทำให้เรื่องนี้ลดลงไปอยู่ที่ 1443 โดยใช้อาร์เคนเวทย์มนตร์ "UTF8 หมายเลขลำดับของตัวเลขที่เข้ารหัส"

function(.)sum((c(+",752230178/0,30.1002110221,052844",61~26,+":6;8/3",59~26,+"94:,")-39)[+.-31]);`+`=utf8ToInt;`~`=rep

ลองออนไลน์


1,709 คะแนน - ทำให้พยายามบีบอัดค่าน้อยที่สุด ...
Giuseppe

2
ยังutf8ToIntเป็นคำสั่งที่เป็นประโยชน์อย่างมากสำหรับการเล่นกอล์ฟ :-) ฉันไม่ได้ใช้ PPCG มาหนึ่งเดือนหรือมากกว่านั้นดังนั้นจึงเป็นเรื่องดีที่ได้เห็นผู้เล่นกอล์ฟคนใหม่ใน R!
Giuseppe

อ่าฉันมีวิธีบีบอัด แต่ไม่ทราบถึง utf8ToInt ฉันจะต้องทำงานกับเรื่องนี้ในคืนนี้ / พรุ่งนี้
CT Hall

1
มันเป็นโค้ดเพิ่มเติมอีกหลายรายการภายใต้โปรแกรม / ตัวอย่างที่ไม่ส่งผลกระทบต่อจำนวนไบต์ - มีประโยชน์ในการทำการทดสอบใน
เท่านั้น

1
ลงไปที่ 1443: tio.run/##xc09DoIwFADgu3ShTR/…การใช้ UTF8 เวอร์ชันที่เข้ารหัสของลำดับหมายเลข
Nick Kennedy


2

Perl 5 -pl , คะแนน723

s,\N{OX}*.,_charnames'viacode ord$&,ge,$_=y,,,c

ลองออนไลน์!

คำอธิบาย

s,        ,                        ,ge  # Replace globally
  \N{OX}*   # zero or more OX characters 🐂, loads the
            # _charnames module as side effect,
         .  # any character
           _charnames'viacode ord$&  # with its Unicode character name
                                     # (using old package delimiter).
                                      ,$_=y,,,c  # Set $_ to its length

2

Attache , 1934

Sum@{ToBase[FromBase[Ords@"!ZByru=#9fBYb$a3Si0^pU,ZP#3$cd'(c-_lhu]h(]5;!W|?M4:<_^sU;N&XFN`t:u"-32,95],23][Ords@_-32]}

ลองออนไลน์!

การบีบอัดและการจัดทำดัชนีอย่างง่าย


: P ดูเหมือนว่าใช้การค้นหาอย่างชาญฉลาด (ดูคำตอบ C #) จะช่วยให้คะแนน หรือแม้แต่ใช้ชุดอักขระที่ไม่มีตัวอักษรที่จะบีบอัด
ASCII เท่านั้นเท่านั้น

1

C # (Visual C # Interactive Compiler)คะแนน: 4007 3988 3759 3551 2551

ˇ=>ˇ.Sum(_=>new[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_-32])

ฉันรู้สึกว่าถูกบดขยี้โดยวิธีแก้ปัญหาของ Peter Taylor ด้านบน ขอบคุณ Peter Taylor ที่ชี้ให้เห็นตารางการค้นหาอย่างง่ายดีกว่าโซลูชันพจนานุกรมก่อนหน้าของฉัน

ลองออนไลน์!


นี่แย่กว่าตารางการค้นหาโดยตรงมาก: _1=>_1.Select(_2=>new int[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_2-32]).Sum()คะแนน 2786
Peter Taylor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.