Ambil kerutan itu dan balikkan


21

Perayaan banyak wajah APL

Diberikan string di antara mereka di kolom 1 atau kolom 2 dari tabel di bawah ini, kembalikan tetangga string ke kanan. Dengan kata lain, jika diberi string di kolom 1 maka kembalikan string kolom 2 di baris itu, dan jika diberi string di kolom 2 maka kembalikan string kolom 3 di baris itu.

Codepoints (selain dari :) tercantum di paling kanan.

 kolom 1 kolom 2 kolom 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

Anekdot: Sebagian besar simbol ini valid atau diusulkan dalam beberapa dialek APL (semuanya adalah tautan).

Per permintaan, hanya simbol:

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

Jawaban:


8

JavaScript (ES6), 108 107 byte

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

Demo



5

C # (.NET Core) , 148 134 byte

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

Cobalah online!

  • 14 byte disimpan setelah bermain golf sedikit.

Ingin bertanya, apakah valid hanya menghilangkan perancah yang jelas (Program kelas, static void Main) yang Anda butuhkan dari jumlah byte? Saya biasanya menggunakan bahasa JVM dan tentu saja akan lebih keren jika saya bisa menghilangkan deklarasi fungsi kelas / utama dan hanya menghitung daging kode saya, tapi saya tidak yakin apakah ini masalahnya.
Matej

1
@Matej Aturan standar kode golf memungkinkan pengiriman fungsi / lambda atau program lengkap.
Adam Martin


3

Jelly , 56 byte

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

Program lengkap.

Cobalah online!

Catatan: (ɱaɲ !) Walaupun ada beberapa pola pada non- :ordinals (kolom tengah hampir berurutan, banyak yang kiri dan haknya sama - hanya dua dengan satu dan satu dari sepuluh), sepertinya tidak cukup untuk set data kecil untuk memungkinkan byte mana pun menyimpan lebih dari ini.

Tiga belas byte pertama juga bisa “¡ÐɼU¹’ṃ“"%#‘ .

Bagaimana?

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

Itu beberapa Jelly serius di sana. Ugh.
Adám

bashes ordinals dengan palu "... pas di sana kamu tersenyum!"
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];

Cobalah online!


+1 hanya untuk array_flip!
Adám

@ Adam array_flipadalah satu atau dua byte lebih pendek sebagai alternatif array_searchdan multibyte dalam hal ini membutuhkan banyak byte. Tidak menyenangkan untuk menjadi lebih lama karena C #
Jörg Hülsermann

1
menghapus tanda kutip dari simbol string berjalan juga, itu dianggap sebagai konstanta tidak terdefinisi dengan nilai yang sama
Einacio

1

05AB1E , 58 56 54 byte

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

Cobalah online!

Penjelasan

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

Metode di atas harus bekerja dengan angka apa pun dalam jangkauan [8676 ... 8728], jadi jika saya dapat menemukan nomor di sana yang dapat dihasilkan dalam 3 byte saya bisa menyimpan byte di atas solusi saat ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.