Nhíu mày và xoay nó lại


21

Lễ kỷ niệm của nhiều gương mặt của APL

Đưa ra một chuỗi trong số những người trong cột 1 hoặc cột 2 của bảng dưới đây, trả lại hàng xóm của chuỗi về bên phải. Nói cách khác, nếu được cung cấp một chuỗi trong cột 1 thì trả về chuỗi của cột 2 trên hàng đó và nếu được cung cấp một chuỗi trong cột 2 thì trả về chuỗi 3 của cột trên hàng đó.

Các điểm mã (không phải :là) được liệt kê ở phía bên phải.

 cột 1 cột 2 cột 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

Giai thoại: Hầu hết các biểu tượng này là hợp lệ hoặc được đề xuất trong một số phương ngữ APL (chúng đều là các liên kết).

Mỗi yêu cầu, chỉ các ký hiệu:

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

Câu trả lời:


8

JavaScript (ES6), 108 107 byte

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

Bản giới thiệu



5

C # (Lõi .NET) , 148 134 byte

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

Hãy thử trực tuyến!

  • 14 byte được lưu sau khi chơi golf một chút.

Muốn hỏi, có hợp lệ không khi bỏ qua giàn giáo rõ ràng (Chương trình lớp, void void Main) mà bạn cần từ số byte? Tôi thường sử dụng các ngôn ngữ JVM và tất nhiên sẽ rất tuyệt nếu tôi có thể bỏ qua phần khai báo hàm / lớp chính và chỉ đếm phần thịt của mã của mình, nhưng tôi không chắc liệu đây có phải là trường hợp không.
Matej

1
@Matej Quy tắc golf mã tiêu chuẩn cho phép gửi một chức năng / lambda hoặc một chương trình đầy đủ.
Adam Martin

3

Python 3 , 140 137 116 byte

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

Hãy thử trực tuyến!


Thất bại cho đầu vào cột 1
Máy

Lạ thật. Nó không hoạt động khi tôi thử nó trước đó. Dù sao, tiếp tục.
Máy

Nhân vật cuối cùng của bạn bị mất :mắt.
xnor

3

Thạch , 56 byte

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

Một chương trình đầy đủ.

Hãy thử trực tuyến!

Lưu ý: ( ɱaɲ!) Trong khi có một số mẫu không: (cột giữa gần như liên tiếp, nhiều bên trái và quyền giống nhau - chỉ hai lần một và một lần mười) dường như không đủ cho một điều đó dữ liệu nhỏ được thiết lập để cho phép bất kỳ byte nào tiết kiệm được điều này.

Mười ba byte đầu tiên cũng có thể là “¡ÐɼU¹’ṃ“"%#‘.

Làm sao?

“¤'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

Đó là một số Jelly nghiêm túc ngay tại đó. Ừ
Adám

bash thứ tự với vồ "... phù hợp trong đó bạn mỉm cười!"
Jonathan Allan

2

PHP , 147 byte

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

Hãy thử trực tuyến!


+1 chỉ dành cho array_flip!
Adám

@ Adám array_flipngắn hơn một hoặc hai byte thay thế array_searchvà đa bào trong trường hợp này có giá nhiều byte. Thật không hay khi dài hơn C #
Jörg Hülsermann

1
cũng loại bỏ các trích dẫn khỏi chuỗi ký hiệu, nó được coi là hằng số không xác định có cùng giá trị
Einacio

1

05AB1E , 58 56 54 byte

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

Hãy thử trực tuyến!

Giải trình

• î]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

Phương pháp trên sẽ hoạt động với bất kỳ số nào trong phạm vi [8676 ... 8728], vì vậy nếu tôi có thể tìm thấy một số có thể được tạo trong 3 byte, tôi có thể lưu một byte qua giải pháp hiện tại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.