Şu anki burç nedir?


15

Verilen ülkeye göre, verilen zamanın doğu zodyakının emojisini gösterin.

Doğu zodyak, her yıl için tekrar eden 12 yıllık bir döngüde bir hayvanı ve saygın özelliklerini atayan bir sınıflandırma şemasıdır. Ayrıca saat olarak atanır.

Kurallar:

  1. Ülke ISO 3166-1 alfa-3 kodu olarak verilmelidir. Liste burada.

  2. Giriş biçimi böyle olması gerekir: <ISO code> HH:MM. Giriş tek bir dize olmalıdır. Bu biçime uymayan herhangi bir girdi umursamaz duruma düşüyor .

  3. Verilen süre aşağıda verilen grafiğin sınırındaysa, her iki zodyak çıktısını alabilirsiniz.

  4. Bu bir kod golf olduğundan, bayttaki en kısa kod kazanır.

Zodyaklar:

Belirtilen ülke olmayan zodyaklar varsayılan değerlerdir.

  • İlk Zodyak (23:00 - 01:00):

    • Sıçan 🐀 (U + 1F400)
    • Farsça 🐁 (U + 1F401) Farsça (IRN)
  • İkinci Zodyak (01:00 - 03:00):

    • Ox 🐂 (U + 1F402)
    • Su Mandası 🐃 (U + 1F403) Vietnam'da (VNM)
    • İran'da İnek U (U + 1F404)
  • Üçüncü Zodyak (03:00 - 05:00):

    • Kaplan 🐅 (U + 1F405)
    • İran'da Leopar 🐆 (U + 1F406)
  • Dördüncü zodyak (05:00 - 07:00):

    • Tavşan 🐇 (U + 1F407)
    • Vietnam'daki 🐈 (U + 1F408)
  • Beşinci zodyak (07:00 - 09:00):

    • Ejderha 🐉 (U + 1F409)
    • İran'da timsah 🐊 (U + 1F40A) / Balina 🐋 (U + 1F40B) (her ikisinden de çıkış yapabilirsiniz)
    • Kazakistan'da Salyangoz 🐌 (U + 1F40C) (KAZ)
  • Altıncı zodyak (09:00 - 11:00):

    • Yılan 🐍 (U + 1F40D)
  • Yedinci Zodyak (11:00 - 13:00):

    • At 🐎 (U + 1F40E)
  • Sekizinci zodyak (13:00 - 15:00):

    • Ram 🐏 (U + 1F40F)
    • Vietnam'da keçi 🐐 (U + 1F410)
    • İran'da Koyun 🐑 (U + 1F411)
  • Dokuzuncu Zodyak (15:00 - 17:00):

    • Maymun 🐒 (U + 1F412)
  • Onuncu Zodyak (17:00 - 19:00):

    • Horoz 🐓 (U + 1F413)
    • İran'da Tavuk 🐔 (U + 1F414)
  • On birinci burç (19:00 - 21:00):

    • Köpek 🐕 (U + 1F415)
  • Onikinci Zodyak (21:00 - 23:00):

    • Domuz 🐖 (U + 1F416)
    • Japonya'da yaban domuzu 🐗 (U + 1F417) (JPN)
    • Tayland'da Fil 🐘 (U + 1F418) (THA)

Kod noktaları buradan.

Misal:

Aşağıdaki girdi verildiğinde:

KOR 19:42

Çıktı şöyle olmalıdır:

🐕

İlginç - Bunların her 12 yılda bir bisiklet sürdüğünü biliyordum. 24 saat döngüsünü hiç duymadım. Yine de, meydan okuma durduğu gibi açıkça belirtilmiştir. 12 yıla "düzeltmek" karışıklığa yol açabilir.
Level River St

Persia'nın bu kadar çok farklı versiyona sahip olması nasıl? Belirli bir nedeni var mı?
1918'de caird coinheringaahing

@cairdcoinheringaahing Ben İranlı değilim, bu yüzden bilmiyorum.
Dannyu NDos

1
@cairdcoinheringaahing "Abou Nasr Farahi" veya Farsça " adlı eski bir Farsça şair ve sözlük yazarı kısa bir şiiri vardır. her 12 yılda bir. Çok ünlü bir şair olmamıştır, bu yüzden onun hakkında pek fazla İngilizce kaynak bulunamamıştır, ancak kitabının metnini Farsça'da kontrol ettim ve şair oradaydı.
Gece2

Yanıtlar:



11

JavaScript (ES6),  168 165 160 157  155 bayt

@Neil sayesinde 4 bayt kaydedildi

Pers'deki 5. zodyakın timsahını döndürür .

([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])

Çevrimiçi deneyin!

Nasıl?

Biz tanımlarız k saatten çıkarılabilen zodyakın 0 tabanlı endeksi olarak h ile:

k=((h+1)şık24)/2

Biz tanımlarız xk böylece taban ofseti bk Belirli bir zodyak için kod noktasının:

bk=2k+xk

Son kod noktası 128000+bk+ck, nerede ck ülke ofseti.

Bu, aşağıdaki tabloda özetlenmiştir:

   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

Yorumlananlar

( [ 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 bayt kaydeder.
Neil

@Neil Teşekkürler! :)
Arnauld

5

PHP , 185 karakter, 263 bayt

Hata düzeltme için Dannyu NDos'a teşekkürler .

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]

Çevrimiçi deneyin!

Sadece basit bir dizi haritalama, bunu golf için daha iyi yollar olmalı. Giriş zamanının saat kısmı çift sayıya (0-22) dönüştürülür ve ardından eşlemede 0 ila 11 dizi dizini elde etmek için 2'ye bölünür. Özel durumlara sahip zaman periyotları, indeks 0'ı varsayılan işarete ve 1-5'in IRN, VNM, KAZ, JPN ve THA özel işaretine aynı sırayla eşlenen bir alt dizidir.


4

Kömür , 73 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. explantion:

℅⁺×¹²⁸φ

0x1F400= 128.000 ( φönceden 1000 olarak tanımlanmıştır). Bu, ifadenin geri kalanının toplamına eklenir ve örtülü yazdırma için bir karaktere dönüştürülür.

⊕﹪÷⊕I…粦²¦¹²

Saat çıkarılır ve bir zodyak indeksine dönüştürülür.

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

Sıkıştırılmış dize IRN VNMIRN IRN VNM IRNIRNKAZ VNMIRN IRN JPNTHAboşluklara bölünür ve bu dizin tarafından verilen uzunluğa kesilir.

ΣE⮌...

Daha sonra dizi ters çevrilir, eşlenir ve toplanır.

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

İlk öğe için, dize üç karakterden oluşan gruplara ayrılır ve ülke dizini alınır, aksi takdirde ülke sayısı sayılır. İlk öğe için, dizinin 0 dizinlemeden 1 dizinlemeye dönüştürülmesi gerekirken, diğer öğeler için sonucun varsayılan ülke için artırılması gerekir, bu nedenle üçlü dışında yapılır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.