눈살을 찌푸리고 돌아서


21

APL의 많은 얼굴 축하

아래 표의 열 1 또는 열 2에있는 문자열이 있으면 문자열의 인접 항목을 오른쪽으로 반환하십시오. 다시 말해, 1 열에 문자열이 주어진 경우 해당 행에서 2 열의 문자열을 반환하고, 2 열에 문자열이 제공되면 해당 행에서 3 열의 문자열을 반환합니다.

코드 포인트 (가 아닌 :)는 맨 오른쪽에 나열되어 있습니다.

 열 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

자바 스크립트 (ES6) 108 107 바이트

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

데모



5

C # (. NET 코어) , 148134 바이트

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

온라인으로 사용해보십시오!

  • 약간의 골프 후 14 바이트 절약.

묻고 싶었을 때 바이트 수에서 필요한 명확한 비계 (클래스 프로그램, 정적 void Main)를 생략하는 것이 유효합니까? 나는 일반적으로 JVM 언어를 사용하며 클래스 / 기본 함수 선언을 생략하고 코드의 고기를 계산할 수 있다면 좋을 것입니다. 그러나 이것이 사실인지 확실하지 않습니다.
Matej

1
@Matej 표준 코드 골프 규칙은 기능 / 람다 또는 전체 프로그램의 제출을 ​​허용합니다.
Adam Martin


3

젤리 , 56 바이트

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

전체 프로그램.

온라인으로 사용해보십시오!

참고 : ( ɱaɲ!) :비서 수에 거의 일정한 패턴이 있지만 (중간 열은 거의 연속적이며 많은 좌익과 권리는 동일합니다-하나는 둘씩, 하나는 열씩 10 씩) 동일합니다. 임의의 바이트가 이것을 통해 저장할 수 있도록 작은 데이터 세트.

첫 번째 13 바이트도 가능 “¡Ðɼ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

@ Adám array_flip은 대안으로 1 또는 2 바이트 더 짧 으며이 array_search경우 멀티 바이트는 많은 바이트를 소비합니다. C #보다 길면 좋지 않습니다
Jörg Hü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.