Prakiraan Cuaca 5 Hari


21

Prakiraan cuaca: Salah terlalu sering diandalkan, terlalu sering diabaikan.

Mengingat suhu tinggi dan rendah dan satu dari empat kondisi cuaca per hari, menghasilkan ramalan cuaca lima hari grafis ASCII-art. Struktur keempat indikator grafis ditunjukkan di bawah ini.

 \ /
 -O-       Sunny
 / \


\ /
-O(==)     Partly Cloudy
(====)


  (==)     Cloudy
(====)


  (==)
(====)     Rainy
/////

Bagan peramalan adalah sebagai berikut: setiap indikator grafis dipusatkan di kotak 9x5 sendiri, dengan 5 kotak di bagan. Setiap kotak dipisahkan oleh |karakter. Di bawah indikator grafis adalah singkatan tiga huruf untuk hari dalam seminggu ( MON, TUE, WED, THU, FRI, SAT, SUN) dipusatkan di kotak 9x1 sendiri. Suhu di bawah hari dalam seminggu berpusat di kotak 9x2 mereka sendiri. Contohnya ditunjukkan di bawah ini.

---------------------------------------------------
|         |         |         |         |         |
|    (==) |    (==) |  \ /    |   \ /   |   \ /   |
|  (====) |  (====) |  -O(==) |   -O-   |   -O-   |
|         |  /////  |  (====) |   / \   |   / \   |
|         |         |         |         |         |
---------------------------------------------------
|   MON   |   TUE   |   WED   |   THU   |   FRI   |
---------------------------------------------------
|  H 75   |   H 69  |  H 77   |   H 80  |  H 85   |
|  L 57   |   L 53  |  L 61   |   L 63  |  L 66   |
---------------------------------------------------

Perhatikan bahwa "terpusat" dapat diambil secara longgar - lihat dalam contoh bagaimana penyelarasan grafis dan penyelarasan horizontal suhu agak fleksibel.

Selain itu, karena saya dari AS dan karena itu menggunakan Fahrenheit, Anda dapat dengan aman mengasumsikan bahwa suhu semua dua digit, jadi 9 < t < 100.

I / O dan Aturan

Contoh I / O di sini menunjukkan contoh diagram di atas.

  • Input dapat diambil dalam format apa pun yang masuk akal dan dengan metode apa pun yang praktis . Misalnya,
    1) Anda bisa menggunakan angka untuk hari-hari dalam seminggu, suhu tinggi dan rendah, dan empat kondisi, dan mengambil input sebagai lima tupel, seperti [0, 75, 57, 2], [1, 69, 53, 3], ...
    2) Anda bisa mengambil input sebagai lima tupel menggunakan kata-kata, seperti ['MON', 75, 57, 'CLOUDY'], ['TUE', 69, 53, 'RAINY'] ...
    3) Anda dapat mengambil input hanya pada hari pertama, dan daftar suhu tinggi, daftar suhu rendah, dan daftar kondisi, seperti 1, [75, 69, ...], [57, 53, ...], [2, 3, ...]
    4) dll.

  • Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan karakternya berbaris dengan tepat.

  • Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
  • Output bisa ke konsol, dikembalikan sebagai daftar string, dikembalikan sebagai string tunggal, dll.
  • Celah standar dilarang.
  • Ini adalah sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.

11
-1 untuk menggunakan ยฐ F เฒ _เฒ 
betseg

6
-1 untuk membuat ini tidak berfungsi untuk negara saya di AS (sekarang 9 ยฐ F hari ini).
Magic Gurita Guci

@ MagicOctopusUrn Saya kira program yang bekerja juga di luar kisaran ini juga diterima.
Paลญlo Ebermann

Jawaban:


5

Emojicode , 1202 974 bytes

๐Ÿ‡a๐Ÿจ๐Ÿš๐Ÿจ๐Ÿš๐Ÿš‚๐Ÿฎf๐Ÿ”ท๐Ÿจ๐Ÿš๐Ÿจ๐Ÿš๐Ÿ”ก๐Ÿธ๐ŸฆD๐Ÿจ๐Ÿ”ค MON  ๐Ÿ”ค๐Ÿ”ค TUE  ๐Ÿ”ค๐Ÿ”ค WED  ๐Ÿ”ค๐Ÿ”ค THU  ๐Ÿ”ค๐Ÿ”ค FRI  ๐Ÿ”ค๐Ÿ”ค SAT  ๐Ÿ”ค๐Ÿ”ค SUN  ๐Ÿ”ค๐Ÿ†๐Ÿฎf๐Ÿจ๐Ÿจ๐Ÿ”ค / \  ๐Ÿ”ค๐Ÿ”ค \ /  ๐Ÿ”ค๐Ÿ”ค -O-  ๐Ÿ”ค๐Ÿ†๐Ÿจ๐Ÿ”ค(====)๐Ÿ”ค๐Ÿ”ค\ /   ๐Ÿ”ค๐Ÿ”ค-O(==)๐Ÿ”ค๐Ÿ†๐Ÿจ๐Ÿ”ค      ๐Ÿ”ค๐Ÿ”ค  (==)๐Ÿ”ค๐Ÿ”ค(====)๐Ÿ”ค๐Ÿ†๐Ÿจ๐Ÿ”ค///// ๐Ÿ”ค๐Ÿ”ค  (==)๐Ÿ”ค๐Ÿ”ค(====)๐Ÿ”ค๐Ÿ†๐Ÿ†๐Ÿฆl๐Ÿ”ค ---------------------------------------------------๐Ÿ”ค๐Ÿฆu๐Ÿ”ค      ๐Ÿ”ค๐Ÿฆs๐Ÿ”ค |  ๐Ÿ”ค๐ŸฆS๐Ÿ”ค  |   ๐Ÿ”ค๐Ÿฆw๐Ÿจ๐Ÿ”ค๐Ÿ”ค๐Ÿ”ค๐Ÿ”ค๐Ÿ”คH ๐Ÿ”ค๐Ÿ”คL ๐Ÿ”ค๐Ÿ†๐Ÿ˜€l๐ŸฆL๐Ÿชs u s u s u s u s u s๐Ÿช๐Ÿ˜€L๐Ÿฎo๐Ÿ”ค๐Ÿ”ค๐Ÿ”‚iโฉ-2 4๐Ÿ‡๐Ÿฎo s๐ŸŠโ—€๏ธ1i๐Ÿ‡๐Ÿฎo๐Ÿชs๐Ÿ”ค ๐Ÿ”ค๐Ÿช๐Ÿ‰๐Ÿ”‚jโฉ0 5๐Ÿ‡๐ŸŠโ–ถ๏ธ1i๐Ÿ‡๐Ÿฎo๐Ÿชo๐Ÿบ๐Ÿฝ๐Ÿบ๐Ÿฝf๐Ÿบ๐Ÿฝ๐Ÿบ๐Ÿฝa j 0i s๐Ÿช๐Ÿ‰๐Ÿ‹โ—€๏ธ1i๐Ÿ‡๐Ÿฎo๐Ÿชo๐Ÿบ๐Ÿฝw i๐Ÿ”ก๐Ÿบ๐Ÿฝ๐Ÿบ๐Ÿฝa j i 10S๐Ÿช๐Ÿ‰๐Ÿ“๐Ÿ‡๐Ÿฎo๐Ÿชo๐Ÿบ๐ŸฝD๐Ÿบ๐Ÿฝ๐Ÿบ๐Ÿฝa j 1 s๐Ÿช๐Ÿ‰๐Ÿ‰๐Ÿ˜€o๐ŸŠ๐ŸŽ‰๐Ÿ˜›0i๐Ÿ˜›1i๐Ÿ‡๐ŸŠ๐Ÿ˜›0i๐Ÿ‡๐Ÿ˜€L๐Ÿ‰๐Ÿ˜€l๐Ÿ‰๐Ÿ‰๐Ÿ˜€l๐Ÿ‰

Mengambil input sebagai daftar daftar bilangan bulat dalam format di condition day high lowmana kondisi adalah bilangan bulat antara 0 dan 4. Coba online!


4

JavaScript (ES8), 304 263 222 byte

Mengambil input sebagai array dari 5 [w,d,h,l]entri, di mana d adalah hari sebagai string dan w , h , l adalah bilangan bulat yang mewakili cuaca (0-diindeks, dengan 0 = cerah), masing-masing suhu tinggi dan suhu rendah. Mengembalikan array string.

a=>',0,04,05,06,0,,01,,0H 2,0L 3,'.split`,`.map(s=>(s=a.map(p=>s.replace(/\d/g,n=>+n?p[n]||'  (==),(====),/////,\\ /,-O(==), \\ /, -O-, / \\,'.split`,`['765143810210'[p[0]*3-n+6]]:'|  ').padEnd(10,' -'[+!s])).join``)+s[0])

Demo

Bagaimana?

Kami mendefinisikan:

  • L = ',0,04,05,06,0,,01,,0H 2,0L 3,'.split(',')

    Array string yang menggambarkan setiap baris papan, di mana:

    • 0 = string awalan: "| "
    • 1 = hari dalam seminggu
    • 2 = suhu tinggi
    • 3 = suhu rendah
    • 4 = pola teratas dari indikator grafis
    • 5 = pola tengah dari indikator grafis
    • 6 = pola bawah dari indikator grafis
  • W = ' (==),(====),/////,\\ /,-O(==), \\ /, -O-, / \\,'.split(',')

    Array string yang menggambarkan pola indikator grafis.

  • P = '765143810210'

    String yang menggambarkan indeks pola dalam W untuk setiap indikator grafis, dikelompokkan berdasarkan 3 dan disimpan dalam urutan terbalik.

Fungsi utama sekarang dibaca sebagai:

a => L.map(s =>                   // for each substring s in L
  (s = a.map(p =>                 //   for each array of parameters p in a:
    s.replace(                    //     replace in s
      /\d/g, n =>                 //       each digit n with:
        +n ?                      //         if n is non-zero:
          p[n] ||                 //           the n-th parameter in p, if defined
          W[P[p[0] * 3 - n + 6]]  //           or a graphical indicator pattern
        :                         //         else:
          '|  '                   //           the prefix string '|  '
    )                             //     end of replace()
    .padEnd(10, ' -'[+!s])        //     pad the result with either spaces or '-'
  ).join``)                       //   end of inner map(); join the results and save in s
  + s[0]                          //   append the first character
)                                 // end of outer map()

3

Arang , 110 94 byte

โ†‘ฯ‡๏ผฆโตยซ๏ผฎฮธโ†˜โ†’โ†˜๏ผฐโއฮธโบโบโއโŠ–ฮธ  ยฆ\ /ยถ-oโ€œโއ)๏ผคโ„–โธฟโ‰กโฌคยปโ€ร—/ร—โตโผฮธยณโ€œ2โธฟฯ†*๏ผฅ๏ผฃ+@Oฮ โ‰ฆโ€๏ผญยนยฆโต๏ผฐ๏ผณยถยถ๏ผฅHLโบโบฮบ ๏ผณ๏ผญโถยฑยนโ†‘ฯ‡ยป๏ผฆ6231ยซ๏ผฐโ†โตยน๏ผญ๏ผฉฮนโ†“

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 16 byte dengan menghindari pengulangan cloud. Penjelasan:

โ†‘ฯ‡

Cetak kolom sebelah kiri |s.

๏ผฆโตยซ

Ulangi selama 5 hari.

๏ผฎฮธ

Masukkan kondisi cuaca, beri nomor 0 hingga 3 menggunakan urutan yang sama dengan pertanyaan.

โ†˜โ†’โ†˜๏ผฐโއฮธ

Jika kondisi cuaca tidak cerah:

โบโบโއโŠ–ฮธ  ยฆ\ /ยถ-o

Jika kondisi cuaca mendung sebagian maka cetak sebagian matahari.

โ€œโއ)๏ผคโ„–โธฟโ‰กโฌคยปโ€

Cetak awan.

ร—/ร—โตโผฮธยณ

Jika cuaca hujan maka cetaklah.

โ€œ2โธฟฯ†*๏ผฅ๏ผฃ+@Oฮ โ‰ฆโ€

Kalau tidak cetak matahari.

๏ผญยนยฆโต๏ผฐ๏ผณ

Baca dan cetak hari itu.

ยถยถ๏ผฅHLโบโบฮบ ๏ผณ

Loop dan masukan dan cetak suhu.

๏ผญโถยฑยนโ†‘ฯ‡ยป

Cetak kolom |s.

๏ผฆ6231ยซ

Loop atas karakter 6, 2, 3dan 1.

๏ผฐโ†โตยน

Cetak satu baris -s.

๏ผญ๏ผฉฮนโ†“

Keluarkan karakter ke integer dan siap untuk mencetak baris berikutnya.


2

Python 3, 636 610 534 464 379 byte

def w(s,l,h,a):
 g='|';A='   ';p,q,r=[A+'\ /'+A,'  \ / '+A,A+' (==) ',A+' (==) '],[A+'-O-'+A,'  -O(==) ','  (====) ','  (====) '],[A+'/ \\'+A,'  (====) ',A*3,'  /////  '];n='-'*51;R=n,;w=x=y=z=''
 for e in s:x+=g+p[e];y+=g+q[e];z+=g+r[e];w+=g+A*3
 R+=x+g,y+g,z+g,w+g;x=u=v=''
 for i in range(5):x+=g+a[i];v+='|  H '+h[i]+A;u+='|  L '+l[i]+A
 print('\n'.join(R+(x+g,n,u+g,v+g,n)))  

Input Format: - Daftar pertama mengambil kondisi cuaca hari -
0 - Cerah
1 - Berawan sebagian
2 - Berawan
3 - Hujan.

Daftar kedua dan ketiga masing-masing mengambil suhu tertinggi dan terendah (sebagai string). Jangan melakukan apa pun dengan daftar keempat - terutama untuk menyimpan hari dalam seminggu.

Cobalah secara Online

Catatan: - Terima kasih sangat khusus kepada Mr.XCoder, ovs dan pizzapants184 untuk membantu mengurangi banyak byte.


0

Bersih , 328 byte

import StdEnv,Text
s="----------"
u=" (====)"
v="(==)"
j=['-|||||-|-||-']
$[[d,h,l,w]:t]=[[z:cjustify 10(fromString x)]%(0,9)<+y\\x<-[s,"":[["\\ /","-O-","/ \\"],["\\ /  "," -O"+v,u]:map((++)["   "+v,u])[[""],["/////"]]]!!w]++["",s,"MONTUEWEDTHUFRI"%(d*3,d*3+2),s,"H "<+h,"L "<+l,s]&y<-if(t>[])($t)(map((<+)"")j)&z<-j]

join"\n"o$

Cobalah online!

Sebagai fungsi parsial literal, mengambil [[Int]]dan kembali String.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.