현재 조디악은 무엇입니까?


15

주어진 국가에 따라 주어진 시간의 동부 12 궁도의 그림 이모티콘을 표시하십시오.

동부 12 궁도는 12 년 주기로 매년 동물과 그 평판이 좋은 특성을 할당하는 분류 체계입니다. 또한 시간에 할당됩니다.

규칙 :

  1. 국가는 ISO 3166-1 alpha-3 코드로 제공되어야합니다. 목록이 여기에 있습니다.

  2. 입력 형식은 다음과 같아야합니다 <ISO code> HH:MM. 입력은 단일 문자열이어야합니다. 이 형식에 맞지 않는 모든 입력에 빠진다 상관 없어 상황을.

  3. 주어진 시간이 아래 주어진 차트의 경계에 있다면, 당신은 조디악을 출력 할 수 있습니다.

  4. 이것이 코드 골프이기 때문에 바이트 단위의 가장 짧은 코드가 이깁니다.

황도대 :

국가를 지정하지 않은 조디악이 기본값입니다.

  • 첫 조디악 (23:00 – 01:00) :

    • 쥐 🐀 (U + 1F400)
    • 페르시아 (IRN)의 마우스 🐁 (U + 1F401)
  • 두 번째 조디악 (01:00 – 03:00) :

    • 황소 🐂 (U + 1F402)
    • 물소 버팔로 🐃 (U + 1F403) 베트남 (VNM)
    • 페르시아의 암소 🐄 (U + 1F404)
  • 세 번째 조디악 (03:00 – 05:00) :

    • 호랑이 🐅 (U + 1F405)
    • 페르시아의 Leopard 🐆 (U + 1F406)
  • 네 번째 조디악 (05:00 – 07:00) :

    • 토끼 🐇 (U + 1F407)
    • 베트남의 고양이 🐈 (U + 1F408)
  • 다섯 번째 조디악 (07:00 – 09:00) :

    • 드래곤 🐉 (U + 1F409)
    • 페르시아의 악어 🐊 (U + 1F40A) / Whale 🐋 (U + 1F40B) (출력 가능)
    • 카자흐스탄 (KAZ)의 달팽이 🐌 (U + 1F40C)
  • 여섯 번째 조디악 (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)
    • 일본 멧돼지 U (U + 1F417) (JPN)
    • 태국의 코끼리 🐘 (U + 1F418) (THA)

코드 포인트는 여기 에서 있습니다.

예:

다음과 같은 입력이 주어집니다.

KOR 19:42

출력은 다음과 같아야합니다.

🐕

흥미 롭다 – 나는 이것이 12 년마다 순환한다는 것을 알고 있었다. 나는 24 시간주기에 대해 들어 본 적이 없다. 그럼에도 불구하고 도전은 분명하게 명시되어 있습니다. 12 년으로 "수정"하면 혼란을 초래할 수 있습니다.
레벨 리버 세인트

페르시아는 다양한 버전을 가지고 있습니까? 특별한 이유가 있습니까?
caird coinheringaahing

@cairdcoinheringaahing 나는이란이 아니므로 몰라요.
Dannyu NDos

1
@cairdcoinheringaahing "Abou Nasr Farahi"또는 페르시아어 "ابونصر_فراهی" 라는 오래된 페르시아 시인이자 사전 작가 인 그의 책 중 하나에는 짧은 시가 있는데, 그 순서대로 그 동물의 이름을 지정하여이란에서 사용 된 동물입니다. 그 12 년마다 그는 유명한 시인이 아니기 때문에 많은 영어 자료를 찾을 수는 없지만 페르시아어로 책의 내용을 확인했는데 시인이 거기에있었습니다.
Night2

답변:



11

자바 스크립트 (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

엑스케이케이

케이=2케이+엑스케이

128000+케이+케이케이

다음 표에 요약되어 있습니다.

   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 바이트를 저장합니다.
Neil

@ 닐 감사합니다! :)
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- 인덱싱으로 변환해야하지만 다른 요소의 경우 기본 국가에 대해 결과를 증분해야하므로 삼항 외부에서 수행됩니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.