ตีกอล์ฟ

Aug 17 2020

กำหนดระยะทางเป็นเมตรเป็นจำนวนเต็ม\$60\le d \le 260\$ให้ส่งคืนจำนวนไม้กอล์ฟที่สามารถใช้ได้ตามแผนผังต่อไปนี้โดยที่ทั้งสอง\$min\$และ\$max\$ รวม:

 club           | min | max
----------------+-----+-----
 Driver         | 200 | 260
 3-wood         | 180 | 235
 5-wood         | 170 | 210
 3-iron         | 160 | 200
 4-iron         | 150 | 185
 5-iron         | 140 | 170
 6-iron         | 130 | 160
 7-iron         | 120 | 150
 8-iron         | 110 | 140
 9-iron         |  95 | 130
 Pitching Wedge |  80 | 115
 Sand Wedge     |  60 |  90

หมายเหตุ

  • รายชื่อสโมสรให้ไว้เพื่อเป็นข้อมูลเท่านั้น

  • แน่นอนว่าการเลือกสโมสรนั้นขึ้นอยู่กับปัจจัยอื่น ๆ อีกหลายประการ ตัวอย่างเช่นSand Wedgeถูกออกแบบมาเพื่อหลบหนีจากบังเกอร์ทราย แต่สำหรับวัตถุประสงค์ของความท้าทายนี้ระยะทางเท่านั้นที่สำคัญ

  • นี่คือความท้าทายในการเล่นกอล์ฟอย่างไม่ต้องสงสัย

ตัวอย่าง

สำหรับ\$d=130\$เราอาจเลือกเหล็ก 6 , 7 เหล็ก , 8 เหล็กหรือ9 เหล็กดังนั้นคำตอบที่คาดหวังคือ\$4\$.

กรณีทดสอบ

Input Output
60    1
79    1
80    2
93    1
105   2
110   3
116   2
129   3
130   4
200   4
201   3
235   2
260   1

หรือเป็นรายการ:

Input : 60, 79, 80, 93, 105, 110, 116, 129, 130, 200, 201, 235, 260
Output: 1, 1, 2, 1, 2, 3, 2, 3, 4, 4, 3, 2, 1

คำตอบ

17 640KB Aug 17 2020 at 23:02

x86-16 รหัสเครื่อง, 47 42 ไบต์

00000000: be14 01b3 01b1 0bad 3ad0 7205 3ad4 7701  ........:.r.:.w.
00000010: 43e2 f4c3 505a 5feb 6e73 78d2 8282 8c8c  C...PZ_.nsx.....
00000020: 9696 a0a0 aaaa b4b9 c8c8                 ..........

รายชื่อ:

BE 0114     MOV  SI, OFFSET CHART   ; SI point to distance chart 
B3 01       MOV  BL, 1              ; start counter at 1 
B1 0B       MOV  CL, 11             ; loop 11 clubs 
        SCORE_LOOP: 
AD          LODSW                   ; load AL = min, AH = max 
3A D0       CMP  DL, AL             ; is d less than min? 
72 05       JB   DONE               ; if so, continue 
3A D4       CMP  DL, AH             ; is d greater than max? 
77 01       JA   DONE               ; if so, continue 
43          INC  BX                 ; otherwise increment counter 
        DONE: 
E2 F4       LOOP SCORE_LOOP         ; loop through end of chart 
C3          RET                     ; return to caller
                 
CHART   DB  80,90,95,235,110,115,120,210,130,130,140,140
        DB  150,150,160,160,170,170,180,185,200,200

ฟังก์ชั่น callable ใส่dในการส่งออกในDXBL

ไม่มีการบีบอัด (ข้อมูลเป็นเพียง 24 22 ไบต์ในไบนารีต่อไป) เพียงแค่การเปรียบเทียบตาราง

แก้ไข:อุปกรณ์ประกอบฉากขนาดใหญ่ถึง@SE - หยุดยิงคนดีเพื่อจัดเรียงรายการใหม่และไม่จำเป็นต้องชดเชยdค่าประหยัด5 ไบต์ !

โปรแกรมทดสอบทำงาน:

เวอร์ชันสำรอง 50 ไบต์

BB 0501     MOV  BX, 0501H          ; init counter to 1 in BL and  
BF 556D     MOV  DI, 0556DH         ; magic number to 0x5556D in BH:DI 
BE 011C     MOV  SI, OFFSET CHART   ; SI point to transition table 
B1 16       MOV  CL, 22             ; loop 22 transitions 
        SCORE_LOOP: 
AC          LODSB                   ; load AL = next transition 
3A C2       CMP  AL, DL             ; is d less than? 
77 0B       JA   EXIT               ; if not, end 
D0 EF       SHR  BH, 1              ; cascade bit shift high word into CF 
D1 DF       RCR  DI, 1              ; bit shift lsb into CF 
43          INC  BX                 ; increment counter 
72 02       JC   NEXT               ; if CF was a 1, continue to next 
4B          DEC  BX                 ; otherwise subtract 2 
4B          DEC  BX 
        NEXT: 
E2 F0       LOOP SCORE_LOOP         ; keep looping 
        EXIT: 
C3          RET 
                 
CHART   DB 80,91,95,110,116,120,130,131,140,141,150,151,160,161,170,171,180,186,200,201,211,236

นี้เป็นแรงบันดาลใจอย่างมากจากคำตอบของโจนาธานอัลลัน นี้ใช้ตารางค่าของdซึ่งมีจำนวนของการเปลี่ยนสโมสรอย่างใดอย่างหนึ่ง+1หรือ-1และสอดคล้องกันไบนารีจำนวนมายากลของ0x5556dที่1บ่งบอกถึงการเปลี่ยนแปลงในเชิงบวกและ0แสดงให้เห็นการเปลี่ยนแปลงในเชิงลบ

น่าเสียดายที่สิ่งนี้ไม่ได้ช่วยอะไรมากนักเนื่องจากการเข้ารหัสตารางต้นฉบับคือ24 ไบต์เทียบกับการเปลี่ยน22 ครั้งบวกกับเลขวิเศษ3 ไบต์ดังนั้นจึงมีขนาดใหญ่กว่า มันสนุกมากที่ได้ลอง!

12 ovs Aug 17 2020 at 22:05

Python 3 , 71 ไบต์

lambda n:sum(a<=n/5<=b for a,b in zip(b'($" ',b'4/*(%" '))

ลองออนไลน์!

สตริงไบต์ประกอบด้วย unprintables บางรูปแบบของพวกเขาคือหนีและb'($" \x1e\x1c\x1a\x18\x16\x13\x10\x0c'b'4/*(%" \x1e\x1c\x1a\x17\x12'


Python 3 , 71 ไบต์

lambda n:sum(b>n-a*5>-1for a,b in zip(b'($"  ',b'=8))$$$'))

ลองออนไลน์!


Python 3.8 , 90 86 ไบต์

lambda x:-~sum([79<x<91,94<x<236,-1<(a:=x-110)<6,9<a<101,69<a<76,a/10in{2,3,4,5,6,9}])

ลองออนไลน์!

เงื่อนไขสุดท้ายสามารถเขียนได้โดยa%10<1<a/10<7,a==90มีความยาวเท่ากัน

7 JonathanAllan Aug 17 2020 at 20:59

เยลลี่ 25 ไบต์

“Ḳœẹ“rɓ?’ḃ5×5“ZO‘;"Ä⁸>§I‘

โปรแกรมเต็มรูปแบบที่พิมพ์ผลลัพธ์ (หรือ monadic Link ซึ่งส่งคืนรายการองค์ประกอบเดียว)

ลองออนไลน์! หรือดูการทดสอบในตัว

อย่างไร?

สำหรับอินพุตที่ถูกต้องใน\$[60,260]\$เราสามารถใช้อย่างน้อยหนึ่งสโมสร สำหรับความระมัดระวังใด ๆ ใน\$[61,260]\$เราสามารถใช้ไม้กอล์ฟแบบเดียวกันอีกหนึ่งสโมสรหรือน้อยกว่าที่เราเคยทำได้ในระยะหนึ่งหลา รหัสด้านล่างนี้เข้ารหัสระยะเวลาที่จำนวนไม้กอล์ฟที่มีอยู่เพิ่มขึ้นและจำนวนสโมสรที่มีอยู่จะลดลงและใช้เพื่อคำนวณผลลัพธ์

“Ḳœẹ“rɓ?’ḃ5×5“ZO‘;"Ä⁸>§I‘ - Main Link: integer, Y  e.g. 129
“Ḳœẹ“rɓ?’                 - list of (two) base-250 integers = [11132965,7226564]
         ḃ5               - convert to bijective base five -> [[5,3,2,2,2,2,3,3,2,5],[3,3,2,2,2,2,2,2,2,4]]
           ×5             - multiply by five -> [[25,15,10,10,10,10,15,15,10,25],[15,15,10,10,10,10,10,10,10,20]]
             “ZO‘         - list of code-page indices = [90,79]
                  "       - zip with:
                 ;        -   concatenation -> [[90,25,15,10,10,10,10,15,15,10,25],[79,15,15,10,10,10,10,10,10,10,20]]
                   Ä      - Cumulative values -> [[90,115,130,140,150,160,170,185,200,210,235],[79,94,109,119,129,139,149,159,169,179,199]]
                    ⁸>    - is Y greater than (those)? -> [[1,1,0,0,0,0,0,0,0,0,0],[1,1,1,1,0,0,0,0,0,0,0]]
                      §   - sums -> [2,4]
                       I  - deltas -> [2]
                        ‘ - increment -> [3]
                          - implicit print -> "3"
6 Jonah Aug 17 2020 at 20:56

J , 63 58 55 50 ไบต์

1#.1=(59 90+/\@,|:5*2+4#.inv 2424834 3408207)I."1]

ลองออนไลน์!

-5 ไบต์ขอบคุณ xash

เข้ารหัสรายการเป็นตัวเลขในฐาน 4 สร้างใหม่จากนั้นใช้ดัชนีช่วงเวลาI.เพื่อนับจำนวนช่วงที่อินพุตอยู่ภายใน

5 DominicvanEssen Aug 17 2020 at 23:53

R , 77 76 72 ไบต์

แก้ไข: -4 ไบต์ขอบคุณ Robin Ryder

sum((d=scan()/10-9)>=c(11,9:2,.5,-1,d)&d<=c(d,14.5,12,11,9.5,8:4,2.5,0))

ลองออนไลน์!

วิธีแก้ปัญหาที่ไร้เดียงสาพอสมควรแต่ได้รับประโยชน์จากเวกเตอร์อัตโนมัติของRและ:ตัวดำเนินการลำดับ

5 DanielH. Aug 17 2020 at 20:44

งูหลาม 3 , 180 155 153 97 88 ไบต์

lambda n:sum(a<=chr(n)<b for a,b in zip('<P_nx‚Œ– ª´È','[tƒ—¡«ºÉÓìą'))

ลองออนไลน์!

5 streetster Aug 17 2020 at 20:29

K (oK) , 85 82 ไบต์

วิธีการแก้:

{+/z=x|y&z}.(-3 -1 .5 2 3 4 5 6 7 8 9 11;0 2.5 4 5 6 7 8 9.5 11 12 14.5 17),-9+.1*

ลองออนไลน์!

คำอธิบาย:

ไร้เดียงสาตัดสินใจ; เป็นไปได้สูงว่านี่เป็นแนวทางที่ไม่ดี แม้ว่าการเล่นกอล์ฟที่ดีโดย ngn เพื่อลดความซับซ้อนของตรรกะการเปรียบเทียบ! .

{+/z=x|y&z}.(-3 -1 .5 2 3 4 5 6 7 8 9 11;0 2.5 4 5 6 7 8 9.5 11 12 14.5 17),-9+.1* / the solution
                                                                               .1* / multiply input by 0.1
                                                                            -9+    / subtract 9 from input
                                                                          ,        / append to
            (-3 -1 .5 2 3 4 5 6 7 8 9 11;0 2.5 4 5 6 7 8 9.5 11 12 14.5 17)        / club stats
{         }.                                                                       / call lambda with multiple args
       y&z                                                                         / min of input and min distance
     x|                                                                            / max compared to max distance
   z=                                                                              / is input the same?
 +/                                                                                / sum up

พิเศษ:

  • -3 ไบต์ขอบคุณngn
3 ManishKundu Aug 17 2020 at 20:45

Python 3 , 105 ไบต์

lambda n,a=[1],b=[2],c=[3],d=[4]:(a*20+b*11+a*4+b*15+c*6+b*4+c+(c*9+d)*6+d*5+c*14+d+c*10+b*25+a*25)[n-60]

ลองออนไลน์!

คำอธิบาย: bruteforce อย่างง่ายเพื่อจัดเก็บรายการคำตอบและพิมพ์ดัชนีที่ต้องการ

3 Neil Aug 18 2020 at 02:16

ถ่าน 44 ไบต์

NθIΣE¹²⁻›θ⁺⁵⁹×⁵Σ…”)⊞⊟‹G↔”ι›θ⁺⁹⁰×⁵Σ…”)⊟+.D↥”ι

ลองออนไลน์! ลิงก์คือรหัสเวอร์ชันที่ละเอียด คำตอบของ Port of @JonathanAllen คำอธิบาย:

Nθ

อินพุตd.

IΣE¹²⁻

ทำแผนที่มากกว่า 12 สโมสรและพิมพ์ผลรวมของผลลัพธ์ที่ส่งไปยังสตริงเพื่อรับความแตกต่างระหว่าง ...

›θ⁺⁵⁹×⁵Σ…”)⊞⊟‹G↔”ι

... dเปรียบเทียบกับการ59บวกเป็นจำนวน5ครั้งของผลรวมดิจิทัลของคำนำหน้าของสตริงบีบอัด43322222224และ ...

›θ⁺⁹⁰×⁵Σ…”)⊟+.D↥”ι

... dเมื่อเทียบกับ90การเพิ่มในครั้งรวมดิจิตอลของคำนำหน้าของสตริงที่ถูกบีบอัด553222233235

คำตอบ 48 ไบต์ก่อนหน้า:

NθIΣEI⪪”)¶∧!✂η}⌊⍘⪫⪫⊕#<e⌊W[qY9¤…”²∧›θ⁻×⁵ι﹪κ²⊖⊗﹪κ²

ลองออนไลน์! ลิงก์คือรหัสเวอร์ชันที่ละเอียด คำอธิบาย: จุดสิ้นสุดและระยะทางเริ่มต้นของ 12 ไม้กอล์ฟจะถูกแยกออกจากสตริงที่บีบอัดของจำนวนเต็มจาก 12 ถึง 52 ซึ่งคูณด้วย 5 dจะถูกเปรียบเทียบกับพวกเขาทั้งหมดโดยให้คะแนน1สำหรับระยะทางที่มากกว่าหรือเท่ากันในตำแหน่งคี่และ-1สำหรับระยะทางที่มากขึ้นในตำแหน่งคู่ ตำแหน่งและผลรวมสุดท้ายจะถูกพิมพ์

3 flornquake Aug 19 2020 at 07:08

Python 3 , 62 60 ไบต์

lambda d:sum(b//25<=b%25+23-d/5<=7for b in b'BUNSWYQ+-}')+1

ลองออนไลน์!

มี\x18อักขระที่มองไม่เห็น (ใน Stack Exchange) ที่ท้ายสตริง

2 Arnauld Aug 18 2020 at 21:10

ฉันคิดว่าเป็นไปได้ที่จะบรรลุอัตราส่วนการบีบอัดที่ก้าวร้าวมากขึ้นในส่วนที่ไม่ใช่ esolang

เพื่อเป็นแรงจูงใจเล็กน้อยนี่คือคะแนนของฉันเองใน Python และ Node

ฉันจะเปิดเผยข้อมูลโค้ดทั้งสองด้านล่างทันทีที่มีการโพสต์คำตอบที่สั้นกว่าหรือยาวเท่ากัน (หรืออัปเดต) ในภาษาใดภาษาหนึ่งหรือเวลา 14.00 น. UTC ของวันศุกร์ที่ 21 สิงหาคม 2020 ในกรณีที่ไม่น่าจะเป็นไปได้ที่จะไม่มีการเผยแพร่คำตอบดังกล่าว

แก้ไข (2020-08-19):ขอแสดงความยินดีกับ@flornquake ที่เป็นคนแรกที่โพสต์คำตอบ Python ที่มีขนาดต่ำกว่า 70 ไบต์โดยใช้แนวคิดที่คล้ายกับของฉัน แต่ผลักดันไปอีกขั้นด้วยจำนวน 62 ไบต์!


Python 3.8 (รุ่นก่อนวางจำหน่าย) 70 ไบต์

lambda d,n=12:sum((n:=n+x//8-4)<=d/5<=n+x%8+6for x in b' A980001225F')

ลองออนไลน์!


JavaScript (Node.js) , 74 ไบต์

d=>Buffer(' A980001225F').map(x=>t-=d/5<(n+=x-32>>3)|d/5>n+x%8+6,n=t=12)|t

ลองออนไลน์!

2 DomHastings Aug 19 2020 at 18:55

Perl 5 , 70 ไบต์

ไบต์แรกในสตริงถูกเพิ่มใน\x##สัญกรณ์เพื่อการทดสอบที่ง่าย แต่เป็นไบต์ตามตัวอักษร

$_=grep"@F">=($k+=(ord>>4)*5)&"@F"<=$k+(15&ord)*5,"\xc6G76&&&'((+L"=~/./g

เก็บรายละเอียดสำหรับแต่ละคลับ (หารด้วย 5) เป็นไบต์โดยที่สี่บิตแรกเป็นความแตกต่างจากจุดเริ่มต้นของช่วงก่อนหน้าและจุดเริ่มต้นของช่วงนี้และสี่บิตที่สองคือความแตกต่างระหว่างจุดเริ่มต้นของช่วงนี้และ ตอนจบ.

start  end =>     / 5   =>   binary    #
--------------------------------------------
 60     90 => 12      6 => 11000110    # counter starts at 0
 80    115 => 4       7 => 00100100    # counter is 12 from before so we only need an extra 4
 95    130 => 3       7 => 00110111 
110    140 => 3       6 => 00110110

ลองออนไลน์!

1 rtpax Aug 17 2020 at 23:18

C (gcc) , 83 75 ไบต์

(อักขระบางตัวไม่แสดงอย่างถูกต้องในการแลกเปลี่ยนสแต็ก แต่ถูกต้องใน TIO)

*i;c;f(d){c=0;for(i=L"ÈĄ´ëªÒ È–¹Œª‚ x–nŒ_‚Ps<Z";*i;c+=d/ *i++&*i++/d);d=c;}

ลองออนไลน์!

1 Noname Aug 18 2020 at 08:04

Io , 89 ไบต์

method(a," \"$("asList select(i,v,v at(0)<=a/5and a/5<=" \"%(*/4"at(i))size)

ลองออนไลน์!

1 Mukundan314 Aug 18 2020 at 10:55

Pyth 36 ไบต์

s/RC-QTrV"2FUdnx‚Œ– ª¾""Qjyƒ—¡°¿Éâû

ลองออนไลน์!

คำอธิบาย

              "...   # String literal with end of ranges minus 10 as characters
         "..."       # String literal with start of ranges minus 10 as characters
       rV            # Generate the ranges
 /R                  # Count occurrences of 
   C-QT              # input minus 10 converted to a characters (based on ascii value)
                     # in each of the ranges
s                    # sum
1 Matsyir Aug 18 2020 at 01:04

JavaScript (V8) , 142 132 117 113 ไบต์

-10 ไบต์: ใช้ -9 กับช่วงและอินพุตหลังการหารแทนที่จะหารด้วย 10 เท่านั้น (ได้รับแรงบันดาลใจจากคำตอบอื่น ๆ เข้าใจว่าทำไมจึงคุ้มค่าหลังจากสังเกตช่วงของฉัน / 10 ตัวเลข)

-15 ไบต์ขอบคุณการปรับปรุงของ Arnauld

-5 ไบต์ขอบคุณการปรับปรุงเพิ่มเติมของ Shaggy

d=>[11,17,9,14.5,8,12,7,11,6,9.5,...'58473625',.5,4,-1,2.5,-3,t=0].map((e,i,r)=>t+=++i%2&d>=e&d<=r[i],d=d/10-9)|t

ลองออนไลน์!

วิธีแก้ปัญหาที่ไร้เดียงสาสวย ๆ แต่ฉันไม่สบายใจที่จะลองใช้วิธีที่ซับซ้อนกว่านี้ในคำตอบอื่น ๆ (ไม่ต้องพูดถึงฉันไม่แน่ใจว่ามันเป็นไปได้ / คุ้มค่ากับการเล่นกอล์ฟใน JS! ฉันจะรับคำแนะนำ / การปรับปรุงอย่างมีความสุข

Unminified & อธิบาย (ล้าสมัยเล็กน้อย แต่ยังคงอธิบายกระบวนการโดยรวม):

f = (distance) => {
    // divide input by 10 and subtract 9 since the hardcoded ranges are shorter when those operations are done.
    distance = distance / 10 - 9

    // hardcoded ranges divided by 10 then subtracted 9 to save bytes (probably can be done better).
    // Will be used in pairs, only processing even indexes and using i & i+1
    //ranges = [20,26,18,23.5,17,21,16,20,15,18.5,14,17,13,16,12,15,11,14,9.5,13,8,11.5,6,9] // /10
    //ranges = [14,20,12,17.5,11,15,10,14,9,12.5,8,11,7,10,6,9,5,8,3.5,7,2,5.5,0,3] // /10 -6
    ranges = [11,17,9,14.5,8,12,7,11,6,9.5,5,8,4,7,3,6,2,5,0.5,4,-1,2.5,-3,0] // /10 -9 (winner! inspired by other answers)

    // .map used as .reduce
    ranges.map((e, i)=> { // e: current element, i: current index
        totalValidClubs += ( // increment total 'valid' counter if within range
            i%2 == 1 ? 0 : // skip odd indexes, will use i & i+1 on even indexes only
            distance>=e && distance<=ranges[i+1] ? 1 : 0) // if even index and distance is between ranges[i] & [i+1] (inclusive), increment by 1.
    }, totalValidClubs=0); // initialize valid club counter as 0
    return totalValidClubs;
}
1 SomoKRoceS Aug 18 2020 at 05:05

05AB1E , 38 36 ไบต์

38 ไบต์

"ÈĄ´ëªÒ È–¹Œª‚ x–nŒ_‚Ps<Z"Ç2ôε.SOÄ2‹}O

ฉันบีบอัดไม่ดี :( สิ่งที่ดีที่สุดที่ฉันคิดได้คือการแปลงตัวเลขแต่ละตัวเป็นอักขระ ASCII

คำอธิบาย:

"ÈĄ´ëªÒ È–¹Œª‚ x–nŒ_‚Ps<Z"Ç2ôε.SOÄ2‹}O
"ÈĄ´ëªÒ È–¹Œª‚ x–nŒ_‚Ps<Z"                Ranges of clubs as ASCII chars
                            Ç               Convert to values
                             2ô             Split into chunks of two
                               ε       }    Map on pairs
                                .S          -1 if lower than input, 1 if greater, 0 it equal
                                  O         Sum the result of the pair
                                   Ä        Absolute value
                                    2‹      Is it lower than 2? (The only cases the absolute value is 2 are when the input is out of range)
                                        O   Now we have list of 0 and 1 for each range. Sum it up :)

ลองออนไลน์!

36 ไบต์ (ขอบคุณ @ovs)

"ÈĄ´ëªÒ È¹ª xn_Ps<Z"Ç2ôε-P(d}O

ใช้-P(dแผนที่ภายในซึ่งจะลบทั้งคู่มีการป้อนข้อมูลผลิตภัณฑ์มัน (จากค่าช่วงจะเป็นบวก) จากนั้นนำไปใช้negativeกับและตรวจสอบว่ามีค่าเป็นที่ไม่ใช่เชิงลบโดยใช้(d

ลองออนไลน์!

1 SE-stopfiringthegoodguys Aug 21 2020 at 03:10

> <> , 51 ไบต์

"Çɳº©«Ÿ¡•—‹ƒwÓmt^ìO["1&{:})${:}(*&+&55*0l3)?.&n;

(มี 7 ที่พิมพ์ไม่ได้)

ลองออนไลน์!

เนื่องจากมีอย่างน้อย 1 คลับสำหรับทุกอินพุตจึงอาจจัดเรียงช่วงใหม่เพื่อกำจัดช่วงหนึ่งซึ่งมีประโยชน์เพิ่มเติมในการลบส่วน "260" ซึ่งแทบจะไม่อยู่นอกช่วงของไบต์

1 CarterSande Aug 24 2020 at 15:46

Desmos , 106 ไบต์:

f(d)=total(\left\{join([18...11],[9.5,8,6,20])*10<=d<=[47,42,40,37,34,32,30,28,26,23,18,52]*5:1,0\right\})

ดูกราฟออนไลน์

ลบf(d)=และลบ 5 ไบต์หากคุณพอใจกับการใช้แถบเลื่อนเป็นอินพุต

MBaas Aug 20 2020 at 17:31

APL, 52 45 50 ไบต์:

{+⌿1=(↓12 2⍴⎕ucs'Èą´ìªÓ Éº«¡xn_Pt<[')∘.⍸⍵}

ลองออนไลน์!