5 일 일기 예보


21

일기 예보 : 너무 자주 의지하고, 무시하기에는 너무 잘못되었습니다.

높고 낮은 온도와 하루에 4 가지 기상 조건 중 하나가 주어지면 ASCII 아트 그래픽 5 일 일기 예보를 출력합니다. 네 가지 그래픽 표시기의 구조는 다음과 같습니다.

 \ /
 -O-       Sunny
 / \


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


  (==)     Cloudy
(====)


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

예측 차트는 다음과 같습니다. 각 그래픽 표시기는 차트 전체에 5 개의 상자가있는 자체 9x5 상자의 중앙에 있습니다. 각 상자는 |문자 로 구분됩니다 . 그래픽 표시기 아래에는 MON, TUE, WED, THU, FRI, SAT, SUN9x1 상자를 중심으로 한 요일 ( ) 의 3 글자 약어가 있습니다. 온도는 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) 요일, 고온 및 저온, 4 가지 조건에 숫자를 사용하고 5 개의 튜플로 입력 [0, 75, 57, 2], [1, 69, 53, 3], ...
    할 수 있습니다. 2) ['MON', 75, 57, 'CLOUDY'], ['TUE', 69, 53, 'RAINY'] ...
    3) 과 같은 단어를 사용하여 5 개의 튜플로 입력 할 수 있습니다. 첫날로 입력하고 고온 목록, 저온 목록 및 1, [75, 69, ...], [57, 53, ...], [2, 3, ...]
    4) 등과 같은 조건 목록을 입력 할 수 있습니다 .

  • 문자가 적절하게 정렬되는 경우 선행 / 후행 줄 바꿈 또는 기타 공백은 선택 사항입니다.

  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 콘솔로 출력 할 수 있으며, 문자열 목록으로 반환되거나 단일 문자열로 반환됩니다.
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.

11
° F ಠ_ಠ 사용을위한 -1
betseg

6
-1 미국 내 주에서는 작동하지 않습니다 (오늘 9 ° F).
Magic Octopus Urn

@MagicOctopusUrn이 범위 밖에서도 작동하는 프로그램도 허용됩니다.
Paŭlo Ebermann

답변:


5

이모티콘 코드 , 1202 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

자바 스크립트 (ES8), 304 263 222 바이트

입력을 5 개 [w,d,h,l]항목 의 배열로 취 합니다. 여기서 d 는 문자열 인 날이고 w , h , l 은 날씨 (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'

    3으로 그룹화되어 역순으로 저장된 각 그래픽 표시기에 대한 W 의 패턴 색인을 설명하는 문자열 입니다.

주요 기능은 다음과 같습니다.

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⁶±¹↑χ»

|s 의 다음 열을 인쇄하십시오 .

F6231«

루프 문자를 통해 6, 2, 31.

P←⁵¹

의 행을 인쇄하십시오 -.

MIι↓

문자를 정수로 캐스트하고 다음 행을 인쇄 할 준비를하십시오.


2

파이썬 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 및 pizzapants184 덕분에 매우 특별합니다.


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.

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