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


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.