เอาหน้านิ่วคิ้วและหมุนไปรอบ ๆ


21

การเฉลิมฉลองหลาย ๆ ใบหน้าของ APL

กำหนดสตริงในคอลัมน์ 1 หรือ 2 ของตารางด้านล่างให้คืนค่าเพื่อนบ้านของสตริงไปทางขวา กล่าวอีกนัยหนึ่งหากได้รับสตริงในคอลัมน์ 1 จากนั้นส่งคืนสตริงของคอลัมน์ 2 บนแถวนั้นและหากกำหนดสตริงในคอลัมน์ 2 ให้ส่งคืนสตริงของคอลัมน์ 3 ในแถวนั้น

codepoints (นอกเหนือจาก:รายการ) อยู่ทางขวาสุด

 คอลัมน์ 1 คอลัมน์คอลัมน์ 2 3
:⊢  →การ   →การ  ⊣:   U + 22a2 U + 2361 U + 22a3
:▷ →การ   →การ  ◁:   U + 25b7 U + 2362 U + 25c1
:⋆ →การ   →การ  ⋆:   U + 22c6 U + 2363 U + 22c6
:∘ →การ   →การ  ∘:   U + 2218 U + 2364 U + 2218
:○ →การ   →การ  ○:   U + 25cb U + 2365 U + 25cb
:≀ →การ   →การ  ≀:   U + 2240 U + 2368 U + 2240
:∧ →การ   →การ  ∨:   U + 2227 U + 2369 U + 2228

บันทึกย่อ:สัญลักษณ์เหล่านี้ส่วนใหญ่ใช้ได้หรือเสนอในภาษา APL บางตัว (เป็นลิงก์ทั้งหมด)

ตามคำขอเพียงสัญลักษณ์:

:⊢ ⍡ ⊣:
:▷ ⍢ ◁:
:⋆ ⍣ ⋆:
:∘ ⍤ ∘:
:○ ⍥ ○:
:≀ ⍨ ≀:
:∧ ⍩ ∨:

คำตอบ:


8

JavaScript (ES6), 108 107 ไบต์

s=>(S="⊢▷⋆∘○≀∧⍡⍢⍣⍤⍥⍨⍩⊣◁⋆∘○≀∨")[S.search(s[1]||s)+7]+(s[1]?'':':')

การสาธิต



5

C # (. NET Core) , 148 134 ไบต์

s=>{var c="⊢⍡⊣▷⍢◁⋆⍣⋆∘⍤∘○⍥○≀⍨≀∧⍩∨";return c[c.IndexOf(s[s.Length-1])+1]+(s.Length<2?":":"");}

ลองออนไลน์!

  • บันทึก 14 ไบต์หลังจากเล่นกอล์ฟเพียงเล็กน้อย

อยากถามว่ามันถูกต้องหรือไม่ที่จะเห็นเฉพาะ scaffolding (โปรแกรมคลาส, โมฆะคงที่หลัก) ที่คุณต้องการจากการนับไบต์? ฉันมักจะใช้ภาษา JVM และแน่นอนว่ามันจะเจ๋งถ้าฉันสามารถละเว้นการประกาศคลาส / ฟังก์ชั่นหลักและเพียงแค่นับเนื้อของรหัสของฉัน แต่ฉันไม่แน่ใจว่าเป็นกรณีนี้
Matej

1
@Matej กฎรหัสกอล์ฟมาตรฐานอนุญาตให้ส่งฟังก์ชั่น / แลมบ์ดาหรือโปรแกรมเต็มรูปแบบ
Adam Martin

3

Python 3 , 140 137 116 ไบต์

lambda n,x=":⊢⍡⊣:▷⍢◁:⋆⍣⋆:∘⍤∘:○⍥○:≀⍨≀:∧⍩∨:":x[x.find(n)+len(n):x.find(n)+3]

ลองออนไลน์!


ล้มเหลวสำหรับอินพุตคอลัมน์ 1
CalculatorFeline

แปลก. มันไม่ทำงานเมื่อฉันลองก่อนหน้านี้ อย่างไรก็ตามยังคงดำเนินต่อไป
CalculatorFeline

ตัวละครตัวสุดท้ายของคุณสูญเสีย:ดวงตา
xnor

3

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

“¤'aẎṚl’b4ạ37ż“ɱaɲṢbḊİcİðdðṖeṖ@h@'i(‘ḅ⁹Ọɓi@€Ṁ‘ị;⁸LḂx@”:¤

โปรแกรมเต็มรูปแบบ

ลองออนไลน์!

บันทึก: (ɱaɲ !) ในขณะที่มีรูปแบบบางอย่างที่ไม่ใช่ - :ordinals (คอลัมน์กลางเกือบต่อเนื่องซ้ายและสิทธิหลายคนเหมือนกัน - เพียงสองปิดโดยหนึ่งและหนึ่งออกโดยสิบ) มันก็ดูเหมือนไม่เพียงพอสำหรับเช่น ชุดข้อมูลขนาดเล็กเพื่อให้สามารถบันทึกไบต์ใด ๆ ได้

ไบต์ที่สิบสามแรกอาจเป็นเช่นกัน “¡ÐɼU¹’ṃ“"%#‘เช่นกัน

อย่างไร?

“¤'aẎṚl’b4ạ37ż“ ... ‘ḅ⁹Ọɓi@€Ṁ‘ị;⁸LḂx@”:¤ - Main link: list of characters, frown
“¤'aẎṚl’                                 - base 250 number = 4064044420859
        b4                               - to base 4 = [3, 2, 3, 0, 2, 0, 3, 2, 3, 3, 2, 3, 0, 2, 0, 3, 2, 3, 3, 2, 3]
          ạ37                            - absolute diffence with 37 = [34, 35, 34, 37, 35, 37, 34, 35, 34, 34, 35, 34, 37, 35, 37, 34, 35, 34, 34, 35, 34]
              “ ... ‘                    - code page indexes = [162, 97, 163, 183, 98, 193, 198, 99, 198, 24, 100, 24, 203, 101, 203, 64, 104, 64, 39, 105, 40]
             ż                           - zip together = [[34, 162], [35, 97], [34, 163], [37, 183], [35, 98], [37, 193], [34, 198], [35, 99], [34, 198], [34, 24], [35, 100], [34, 24], [37, 203], [35, 101], [37, 203], [34, 64], [35, 104], [34, 64], [34, 39], [35, 105], [34, 40]]
                      ⁹                  - literal 256
                     ḅ                   - convert from base = [8866, 9057, 8867, 9655, 9058, 9665, 8902, 9059, 8902, 8728, 9060, 8728, 9675, 9061, 9675, 8768, 9064, 8768, 8743, 9065, 8744]
                       Ọ                 - convert to characters = "⊢⍡⊣▷⍢◁⋆⍣⋆∘⍤∘○⍥○≀⍨≀∧⍩∨"
                        ɓ                - dyadic chain separation, call that smiles
                         i@€             - first index of €ach frown character in smiles
                            Ṁ            - maximum (any ':' was not found so yielded 0)
                             ‘           - increment
                              ị          - index into smiles
                                       ¤ - nilad followed by link(s) as a nilad
                                ⁸        -   chain's left argument, frown
                                 L       -   length
                                  Ḃ      -   mod 2
                                     ”:  -   literal ':'
                                   x@    -   repeat with swapped @rguments
                               ;         - concatenate
                                         - implicit print

นั่นคือเจลลี่ตัวจริงที่นั่น ฮึ.
Adám

ขัดจังหวะโดยใช้ค้อนตีกลอง "... พอดีคุณยิ้ม!"
Jonathan Allan

2

PHP , 147 ไบต์

<?=($f=array_flip($y=str_split(⍣⋆⍤∘⍥○⍨≀∧⍩∨⊢⍡⊣▷⍢◁,3))[trim($argn,":")])>7?$y[$f+1].":"[$f%3>1]:$y[$f^1].":"[$f&1];

ลองออนไลน์!


+1 สำหรับarray_flip!
อดัม

@ Adám array_flipสั้นลงหนึ่งหรือสองไบต์เนื่องจากทางเลือกarray_searchและมัลติไบต์ในกรณีนี้มีค่าใช้จ่ายสูงมาก มันไม่ดีที่จะได้นานกว่านี้ในขณะที่ C #
JörgHülsermann

1
การลบเครื่องหมายคำพูดออกจากสายอักขระสัญลักษณ์ก็ถือว่าเป็นค่าคงที่ที่ไม่ได้กำหนดด้วยค่าเดียวกัน
Einacio

1

05AB1E , 58 56 54 ไบต์

• î]D£Èтн»“¿āp÷ŒRÃÙŽ^мηWX·ć•3ô8728+çJ3ô':ý':.øI¡`3Ig-£

ลองออนไลน์!

คำอธิบาย

• î]D£Èтн»“¿āp÷ŒRÃÙŽ^мηWX·ć•  # push a 63-digit base-255 compressed number
3ô                            # split in pieces of 3
  8728+                       # add 8728 to each
       çJ                     # convert to a string with the corresponding code points
         3ô                   # split in pieces of 3
           ':ý                # merge on ":"
              ':.ø            # surround with ":"
                  I¡          # split on input
                    `         # push as separate to stack, the tail on top
                     3Ig-£    # take the first 3-len(input) characters

วิธีการข้างต้นควรทำงานกับตัวเลขใด ๆ ในช่วง[8676 ... 8728]ดังนั้นหากฉันสามารถหาตัวเลขที่มีที่สามารถสร้างขึ้นใน 3 ไบต์ฉันสามารถบันทึกไบต์มากกว่าการแก้ปัญหาในปัจจุบัน

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