皱眉,把它转过来


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方言中有效或建议使用(它们都是链接)。

根据请求,仅符号:

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

Answers:


8

的JavaScript(ES6),108个 107字节

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

演示版



5

C#(.NET Core)148134字节

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

在线尝试!

  • 打一点球后节省了14个字节。

想问一下,从字节数中忽略您需要的明显的脚手架(类Program,静态void Main)是否有效?我通常使用JVM语言,但是如果我只想省略类/主函数声明并只计算代码的内容,那当然会很酷,但是我不确定是否是这种情况。
Matej

1
@Matej标准代码高尔夫规则允许提交功能/ lambda或完整程序。
亚当·马丁


3

果冻,56 字节

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

完整的程序。

在线尝试!

注:ɱaɲ虽然有一些图案非!):序(中柱几乎连续的,许多左和权利是相同的-只有两关一式一次性十)它似乎只是不太够了这样的小数据集,允许保存任何字节。

前十三个字节也可以是“¡Ðɼ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

那是一些严重的果冻。啊。
亚当

用短槌轻敲普通物品 “ ...适合您,微笑!”
乔纳森·艾伦,

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#
约尔格Hülsermann

1
从符号字符串中删除引号也将运行,这被认为是具有相同值的未定义常量
Einacio

1

05AB1E58 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个字节的数字,则可以在当前解决方案上节省一个字节。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.