5天天气预报


21

天气预报:错误经常依赖,正确经常忽略。

给定高温和低温以及每天四种天气条件之一,请输出ASCII艺术图形五天天气预报。四个图形指示器的结构如下所示。

 \ /
 -O-       Sunny
 / \


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


  (==)     Cloudy
(====)


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

预测图表如下:每个图形指标位于其自己的9x5框的中央,整个图表上有5个框。每个框用|字符分隔。在图形指示符的下方是一周中的三字母缩写(MON, TUE, WED, THU, FRI, SAT, SUN),位于其自己的9x1框中。温度低于一周中的某一天,位于自己的9x2框内。一个例子如下所示。

---------------------------------------------------
|         |         |         |         |         |
|    (==) |    (==) |  \ /    |   \ /   |   \ /   |
|  (====) |  (====) |  -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   |
---------------------------------------------------

请注意,“居中”可以宽松地使用-在示例中看到图形对齐方式和温度水平对齐方式在某种程度上是灵活的。

此外,由于我是美国人,因此使用华氏温度,因此可以放心地假设温度均为两位数9 < t < 100

I / O和规则

这里的I / O示例说明了上面的示例图。

  • 输入可以采用任何合理的格式和任何方便的方法。例如,
    1)您可以使用星期几,高温和低温以及四个条件的数字,并将输入作为五个元组,例如[0, 75, 57, 2], [1, 69, 53, 3], ...
    2)您可以使用单词将输入作为五个元组,例如['MON', 75, 57, 'CLOUDY'], ['TUE', 69, 53, 'RAINY'] ...
    3)您可以将输入作为第一天,并列出高温,低温列表以及条件列表,例如1, [75, 69, ...], [57, 53, ...], [2, 3, ...]
    4)等。

  • 前导/尾随换行符或其他空格是可选的,只要字符正确排列即可。

  • 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
  • 输出可以发送到控制台,以字符串列表形式返回,以单个字符串形式返回,等等。
  • 禁止出现标准漏洞
  • 这是因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

11
-1用于使用°Fಠ_ಠ
betseg

6
-1表示不适合我在美国的州(今天是9华氏度)。
魔术章鱼缸

@MagicOctopusUrn我猜也可以使用超出此范围的程序。
圣保罗Ebermann

Answers:


5

Emojicode1202 974字节

🍇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🍉

将输入作为整数列表的列表,格式为condition day high lowcondition是0到4之间的整数。请在线尝试!


4

的JavaScript(ES8),304个 263 222字节

将输入作为5 [w,d,h,l]个条目的数组,其中d是表示日期的字符串,whl是分别表示天气(0索引,0 =晴天),高温和低温的整数。返回字符串数组。

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

演示版

怎么样?

我们定义:

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

    描述板的每一行的字符串数组,其中:

    • 0 =前缀字符串: "| "
    • 1 =星期几
    • 2 =高温
    • 3 =低温
    • 4 =图形指示器的顶部模式
    • 5 =图形指示器的中间模式
    • 6 =图形指示器的底部模式
  • W = ' (==),(====),/////,\\ /,-O(==), \\ /, -O-, / \\,'.split(',')

    描述图形指示器模式的字符串数组。

  • P = '765143810210'

    一个字符串,描述每个图形指示符的W模式索引,按3分组并以相反顺序存储。

现在,主要功能为:

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

木炭110 94字节

↑χF⁵«Nθ↘→↘P⎇θ⁺⁺⎇⊖θ  ¦\ /¶-o“⎇)D№⸿≡⬤»”×/×⁵⁼賓2⸿φ*EC+@OΠ≦”M¹¦⁵PS¶¶EHL⁺⁺κ SM⁶±¹↑χ»F6231«P←⁵¹MIι↓

在线尝试!链接是详细版本的代码。编辑:通过避免重复云保存了16个字节。说明:

↑χ

打印|s的左列。

F⁵«

循环5天。

Nθ

输入与问题相同的编号从0到3的天气状况。

↘→↘P⎇θ

如果天气不晴朗:

⁺⁺⎇⊖θ  ¦\ /¶-o

如果天气部分多云,则打印局部阳光。

“⎇)D№⸿≡⬤»”

打印云。

×/×⁵⁼θ³

如果天气是雨,请打印。

“2⸿φ*EC+@OΠ≦”

否则打印太阳。

M¹¦⁵PS

阅读并打印当天。

¶¶EHL⁺⁺κ S

循环并输入并打印温度。

M⁶±¹↑χ»

打印的下一列|

F6231«

遍历所有的字符6231

P←⁵¹

打印一行-s。

MIι↓

将字符转换为整数,然后准备打印下一行。


2

Python 3中,636个 610 534 464 379字节

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)))  

输入格式:- 第一个列表按天列出天气状况-0-
晴天
1-局部多云
2-多云
3-阴雨。

第二和第三列表分别以最高和最低温度(作为字符串)。不要对第四个列表做任何事情-它主要用于存储星期几。

在线试用

注意:-非常感谢Mr.XCoder,ovs和pizzapant184减少了很多字节。


0

干净,328字节

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$

在线尝试!

作为部分函数文字,采用[[Int]]并返回String

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.