当前的十二生肖是什么?


15

根据给定国家/地区显示给定时间东部生肖的表情符号。

东部十二生肖是一种分类方案,它将动物及其知名的属性分配给重复的12年周期中的每一年。它也分配给小时。

规则:

  1. 必须使用ISO 3166-1 alpha-3代码指定国家/地区。清单在这里。

  2. 输入格式必须是这样的:<ISO code> HH:MM。输入必须是单个字符串。任何不适合此格式的输入均属于无关情况。

  3. 如果给定时间在以下给定图表的边界内,则可以输出任一个十二生肖。

  4. 因为这是代码高尔夫,所以以字节为单位的最短代码获胜。

黄道十二宫:

没有指定国家/地区的黄道带是默认设置。

  • 第一个十二生肖(23:00 – 01:00):

    • 🐀(U + 1F400)
    • 波斯(IRN)的Mouse🐁(U + 1F401)
  • 第二个十二生肖(01:00 – 03:00):

    • 牛🐂(U + 1F402)
    • 越南(VNM)的水牛(U + 1F403)
    • 波斯的(U + 1F404)
  • 第三十二生肖(03:00 – 05:00):

    • 虎🐅(U + 1F405)
    • 波斯豹(U + 1F406)
  • 第四十二生肖(05:00 – 07:00):

    • 兔子🐇(U + 1F407)
    • 越南的猫🐈(U + 1F408)
  • 第五十二生肖(07:00 – 09:00):

    • 龙🐉(U + 1F409)
    • 波斯的鳄鱼🐊(U + 1F40A)/鲸鱼🐋(U + 1F40B)(可以输出)
    • 蜗牛🐌(U + 1F40C)在哈萨克斯坦(KAZ)
  • 第六十二生肖(09:00 – 11:00):

    • 蛇🐍(U + 1F40D)
  • 第七十二生肖(11:00 – 13:00):

    • 马🐎(U + 1F40E)
  • 第八十二生肖(13:00 – 15:00):

    • 拉姆(U + 1F40F)
    • 越南山羊🐐(U + 1F410)
    • 波斯羊🐑(U + 1F411)
  • 第九十二生肖(15:00 – 17:00):

    • 猴子🐒(U + 1F412)
  • 第十届十二生肖(17:00 – 19:00):

    • 公鸡🐓(U + 1F413)
    • 波斯鸡🐔(U + 1F414)
  • 第十一十二生肖(19:00 – 21:00):

    • 狗🐕(U + 1F415)
  • 第十二届十二生肖(21:00 – 23:00):

    • 猪🐖(U + 1F416)
    • 日本(JPN)的野猪(U + 1F417)
    • 泰国(THA)的大象🐘(U + 1F418)

代码点从这里开始。

例:

给出以下输入:

KOR 19:42

输出必须是:

🐕

有趣-我知道这些每12年循环一次。我从未听说过24小时周期。尽管如此,挑战仍然是明确指出的。“更正”到12年可能会导致混乱。
Level River St

有这么多不同版本的波斯怎么了?有什么具体原因吗?
Caird coinheringaahing

@cairdcoinheringaahing我不是伊朗人,所以我不知道。
Dannyu NDos

1
@cairdcoinheringaahing是一位古老的波斯诗人和词典作家,名叫“ Abou Nasr Farahi”,或者在波斯语“ابونصر_فراهی”中有一首短诗,该诗以该顺序命名了这些动物,因此它们是伊朗在伊朗使用的动物。这12年中的每一年。他不是一个非常有名的诗人,所以找不到关于他的英语资源,但是我在波斯语中检查了他的书的文字,诗人就在那里。
2

Answers:



11

的JavaScript(ES6), 168个165 160 157  155字节

@Neil节省了4个字节

返回鳄鱼的5 在波斯生肖。

([a,b,c,,d,e])=>String.fromCodePoint(127998-~'00111321211'[k=-~(d+e)%24>>1]+k*2-~(1e12+{IRN:121010020100,VNM:1010001e4,KAZ:3e7,JPN:1,THA:2}[a+b+c]+a)[k+1])

在线尝试!

怎么样?

ķH

ķ=H+1个24/2

Xķbķ

bķ=2ķ+Xķ

128000+bķ+CķCķ

下表中对此进行了总结:

   k =  |   0 |   1 |   2 |   3 |   4 |   5 |   6 |   7 |   8 |   9 |  10 |  11
--------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
  b(k)  |  +0 |  +2 |  +5 |  +7 |  +9 | +13 | +14 | +15 | +18 | +19 | +21 | +22
  = 2k  |   0 |   2 |   4 |   6 |   8 |  10 |  12 |  14 |  16 |  18 |  20 |  22
  +x(k) |   0 |   0 |   1 |   1 |   1 |   3 |   2 |   1 |   2 |   1 |   1 |   0
--------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
   IRN  |  +1 |  +2 |  +1 |     |  +1 |     |     |  +2 |     |  +1 |     |
   VNM  |     |  +1 |     |  +1 |     |     |     |  +1 |     |     |     |
   KAZ  |     |     |     |     |  +3 |     |     |     |     |     |     |
   JPN  |     |     |     |     |     |     |     |     |     |     |     |  +1
   THA  |     |     |     |     |     |     |     |     |     |     |     |  +2

已评论

( [ a, b, c,               // a,b,c = country code
    ,                      // the space is ignored
    d, e ] ) =>            // d,e = hour (minutes are ignored)
  String.fromCodePoint(    // return the character whose code point is:
    127998                 //   127998
    -~'00111321211'[       //   + 1 + x(k)
      k = -~(d + e)        //   where k is defined as:
          % 24 >> 1        //     floor(((hour + 1) mod 24) / 2)
    ] +                    //
    k * 2                  //   + 2k
    -~(                    //   + 1 + the country offset
      1e12 +               //     each pattern being encoded as 10**12
      {                    //     + a specific value, leading to:
        IRN: 121010020100, //       IRN -> 1121010020100
        VNM: 1010001e4,    //       VNM -> 1010100010000
        KAZ: 3e7,          //       KAZ -> 1000030000000
        JPN: 1,            //       JPN -> 1000000000001
        THA: 2             //       THA -> 1000000000002
      }[a + b + c]         //     according to the country code
      + a                  //     coerced to a string
    )[k + 1]               //   extract the correct offset for this zodiac
  )                        //   (gives something NaN-ish for the other countries)

1
String.fromCodePoint(128e3+~~保存4个字节。
尼尔,

@尼尔谢谢!:)
Arnauld

5

PHP,185个字符,263字节

感谢Dannyu NDos修复了错误。

fn($i)=>strlen($b=[[🐀,🐁],[🐂,🐄,🐃],[🐅,🐆],[🐇,🐇,🐈],[🐉,🐊,🐉,🐌],🐍,🐎,[🐏,🐑,🐐],🐒,[🐓,🐔],🐕,[🐖,4=>🐗,5=>🐘]][(($t=$i[4].$i[5])%2?$t+1:$t)%24/2])?$b:$b[strpos(____IRN_VNM_KAZ_JPN_THA,substr($i,0,3))/4]

在线尝试!

只是一个简单的数组映射,应该有更好的方法来解决这个问题。将输入时间的小时部分转换为偶数(0-22),然后将其除以2得到映射中的数组索引0到11。对于特殊情况,时间段是一个子数组,其索引0映射到默认符号,索引1-5映射到IRN,VNM,KAZ,JPN和THA的特殊符号,顺序相同。


4

木炭,73字节

℅⁺×¹²⁸φΣE⮌…⪪”&↖∨∧h↘X⁷↘H⪫³Jºρ⁷s,⟲⌈3A‖Cc>χ§₂25:×” ⊕﹪÷⊕I…粦²¦¹²⊕⎇κ÷Lι³⌕⪪ι³θ

在线尝试!链接是详细版本的代码。外植体:

℅⁺×¹²⁸φ

0x1F400= 128,000(φ预定义为1,000)。这将添加到表达式其余部分的总和中,并转换为字符以进行隐式打印。

⊕﹪÷⊕I…粦²¦¹²

提取小时并将其转换为十二生肖指数。

…⪪”&↖∨∧h↘X⁷↘H⪫³Jºρ⁷s,⟲⌈3A‖Cc>χ§₂25:×” ...

压缩的字符串IRN VNMIRN IRN VNM IRNIRNKAZ VNMIRN IRN JPNTHA在空格处分割,并被截断为该索引给定的长度。

ΣE⮌...

然后将数组反转,映射并求和。

⊕⎇κ÷Lι³⌕⪪ι³θ

对于第一个元素,将字符串分成三个字符的组,并使用国家/地区索引,否则计算国家/地区数量。对于第一个元素,索引需要从0索引转换为1索引,而对于其他元素,对于默认国家/地区,结果需要增加,因此在三元数之外进行。


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.