Eyjafjallajökull의 분화?


18

Eyjafjallajökull 이라는 이름으로 간결하게 명명 된 아이슬란드의 Vulcano는 2010 년에 폭발하여 장기 계획 비행이 취소되었습니다.

이 문제가 다시 발생하면 사전에 알고 싶습니다. 간단한 시각 경고 시스템을 구축하도록 도와주세요!

입력

테이크 아이슬란드어 기상청 입력 (문자열)로, 화산 활동의 경고 코드 :

녹색 -화산은 정상적이고 비 부식적인 상태입니다.

노랑 -화산이 알려진 배경 수준보다 높은 불안의 징후를 겪고 있습니다.

오렌지 -화산은 폭발 가능성이 높아짐에 따라 불안이 심화되고 있습니다.

RED - 분화는 가능성이 대기로 화산재의 중요한 방출에 임박 할 것으로 예상된다.

산출

Eyjafjallajökull의 상태를 나타내는 그래픽 (ASCII 아트) 경고.

녹색 (Eyjafjallajökull이 쉬고 있음)

      al   la 
     j       j
  jaf         öku
 y               l
E                 l
-------------------

노랑 (일부 연기가 나타납니다!)

       ~   ~
         ~
      al   la 
     j       j
  jaf         öku
 y               l
E                 l
-------------------

오렌지 (더 많은 연기!)

      ~  ~  ~
       ~   ~
         ~
      al   la 
     j       j
  jaf         öku
 y               l
E                 l
-------------------

RED (더 많은 연기와 약간의 재도!)

   `~ ~ ~ ~ ~ ~`
    ` ~  ~  ~ ` 
     ` ~   ~ ` 
       ` ~ `  
      al   la 
     j       j
  jaf         öku
 y               l
E                 l
-------------------

규칙

  • 화면에 출력하거나 (stdout) 문자열을 반환 할 수 있습니다
  • 이것은 ! 최단 답변 (바이트), 승리
  • öo 로 바꾸 십시오
  • 후행 공백은 허용되지만 필수는 아닙니다
  • 최대 하나의 후행 줄 바꿈이 허용됩니다.
  • 최대 4 개의 주요 줄 바꿈이 허용됩니다 (연기 대신)

발음 : AY-JAH-FUH-JUH-AH-LAH-JUh-KUh-EW-LUH?
매직 문어 Urn

@ carusocomputing-거의! :)
zeppelin

적어도 그것보다 짧은입니다 Tungnafellsjökull : P
FlipTack

@DrMcMoylex 아니요, 오타 만 수정해야합니다. 감사 !
zeppelin

간결하지 않은 이름에 대해 농담하지만 실제로 영어 번역 "아일랜드 산악 빙하"보다 매우 설명적이고 짧으며 훨씬 더 아름답게 들립니다. : P
Martin Ender 2016

답변:


2

루비, 161

여기 아이슬란드의 유명한 랜드 마크인 Eyjafjallajökull Tower를 소개합니다.

합리적으로 짧지 만 아직 연기를 골프를 치는 좋은 방법을 찾지 못했습니다.

->n{m=85-n[-3].ord>>2
%w{`~+~+~+~+~+~` `+~++~++~+` `+~+++~+` `+~+` al%3sla j%7sj jaf%9soku y%15sl E%17sl}.map{|i|(i%"").tr(?++?`*m," ").center(19)}[m,9]+[?-*19]}

테스트 프로그램에서 언 골프

f=->n{m=85-n[-3].ord>>2     #From ASCII code of 3rd from last letter, derive m=0 for RED up to 4 for GREEN (uppercase.)
  %w{`~+~+~+~+~+~` `+~++~++~+` `+~+++~+` `+~+` al%3sla j%7sj jaf%9soku y%15sl E%17sl}.
  map{|i|                   #For each line above decode as follows:
    (i%"").                 #Replace %Xs with X spaces, by inserting  empty strings and padding sprintf style. 
    tr(?++?`*m," ").        #Replace + with space. If not red, replace ` with space.
    center(19)}[m,9]+       #Centre output to 19 characters per line. Start printing at line m and go on to the end (never more than 9 lines.)
  [?-*19]                   #Add a row of --- at the bottom.
}

puts f[gets.chomp]

6

배치, 284 바이트

@set e=echo 
@%e%off
set s=      
set t=   
goto %1
:RED
set t= ` 
%e%   `~ ~ ~ ~ ~ ~`
:ORANGE
%e%   %t%~  ~  ~%t%
:YELLOW
%e%    %t%~   ~%t%
%e%%s%%t%~%t%
:GREEN
%e%%s%al   la 
%e%     j%s% j
%e%  jaf %s%  oku
%e% y %s%%s%  l
%e%E%s%%s%%s%l
%e%--------------------

참고 : 1 행과 7 행에는 후행 공백이 1 개, 3 행에는 6 개, 4 행에는 3 개가 있습니다.


1
의 좋은 사용 goto.
NoOneIsHere 여기

1

PHP, 307 288 279 바이트

$o=" ";while($x<19)$o[$x+19*(($d=abs($x-9))>4?$d>7?$d-5:2:$d>3)]="Eyjafjal   lajokull"[$x++];echo strtr((($n=ord($argv[1])/8&3)-2?"":"   1~ ~ ~ ~ ~ ~2\n").($n%3?"     1~  ~  ~2\n":"").($n?"      1~   ~2\n       1 ~ 2\n":"").chunk_split(str_pad($o,114,"-"),19),12,$n-2?"  ":"`´");

못생긴 부피

고장

$o=" ";                                         // 0.init $o to string
while($x<19)$o[$x+19*(                      // 1.paint volcano
    ($d=abs($x-9))>4?$d>7?$d-5:2:$d>3           // 1a map [0..19] to row offsets
    )]="Eyjafjal   lajokull"[$x++];
echo strtr(                                     // 7. print
    (($n=ord($argv[1])/8&3)                     // 4.map GYOR to 0312
        -2?"":"   1~ ~ ~ ~ ~ ~2\n")             // 5a.add smoke & stuff for red
        .($n%3?"     1~  ~  ~2\n":"")           // 5b for orange
        .($n?"      1~   ~2\n       1 ~ 2\n":"")// 5c for yellow
    .chunk_split(                               // 3.insert linebreaks
        str_pad($o,114,"-")                     // 2.add ground
    ,19)
,12,$n-2?"  ":"`´");        // 6.replace stuff with ticks for red, with blanks else

1

자바 스크립트 (ES6) 235 220 218 바이트

c=>[344,592,160,640,192,32,28,2,1,~0].map(n=>(s='6222222661116600660').replace(/./g,(_,i)=>n&(1<<i|512>>i-9)?(s+'6allajjjafökuylEl')[p++]||'-':' '),p=0).join`
`.replace(/\d/g,n=>n%4<'GYOR'.search(c[0])?n&4?'`':'~':' ')


1

자바 스크립트 (ES6), 286 262 199 194 183 바이트

입력을 기능 f()에 전달하십시오 (예 :) f('GREEN').

Y=`7~3~
9~
`
f=n=>({G:'',Y,O:`5 ~2~2~
`+Y,R:'3`~ ~ ~ ~ ~ ~`\n4` ~2~2~ `\n5` ~3~ `\n7` ~ `\n'}[n[0]]+`6al3la
5j7j
2jaf9oku
 y15l
E17l
`+'-'.repeat(19)).replace(/\d+/g,n=>' '.repeat(n))

-63 bytes : 공백 대신 함수 대신 Regex를 사용했습니다.


인가 s그것은 정말 가치? 내 계산에 따르면 4 바이트를 절약하지만 16 바이트가 소요됩니다. 반면에, _더 많은 것을 사용하여 몇 바이트를 절약 할 수 있다고 생각합니다 .
Neil

ORANGE에 대한 잘못된 결과를 생성합니다 (연기가 올바르게 정렬되지 않음)
zeppelin

@ Neil 그래, 나는 내가 실제로했던 것보다 더 자주 필요할 것이라고 예상했다. : P
darrylyeo

@zeppelin 수정되었습니다.
darrylyeo 님의

그것은 나를 위해 "r is not defined"로 실패합니다 :(
zeppelin

1

> <> (물고기) 351 339 302 바이트

\l?!;o00.>~00.
\a"-------------------"a"l                 E"a"l               y "a"ukö         faj  "a"j       j     "a" al   la      "
\i:"R"-?!v
 " `  "a~<|.!00"   `~ ~ ~ ~ ~ ~`"a"    ` ~  ~  ~ ` "a"     ` ~   ~ ` "a"       ` ~"
\ :"G"-?!v
\}a"~         "a"~   ~       "
\{:"Y"-?!v
\~a"~  ~  ~      "

상당히 기본적이고 추악한 순간, 나는 골프를 낮추려고 노력하고 있지만 'RED'입력은 라인을 재사용하기가 더 어렵습니다.

편집 1; 줄 바꿈을 줄이기 위해 초기 화산 줄을 한 줄로 이동하고 빈 공간을 채우기 위해 '빨간색'줄을 반대로 이동했습니다. (12 바이트 절약)

편집 2; 'O'체크 아웃을 체크 아웃하고 다른 3 개가 입력되지 않은 경우 인쇄하십시오 ( '녹색, 빨간색, 주황색, 노란색'이 아닌 입력을 지정하지 않음) 추가 명령 (37 바이트 저장)

테스트 할 온라인 버전!


0

Python 2, 209 바이트 (208 자)

s=' '
y=' ~ '
v='ROY G'.index(input()[0])
a='` '[v>0]
print'\n'.join([s*3+a+'~'+' ~'*5+a,s*4+a+y*3+a,s*5+a+y*2+a,s*7+a+y+a,s*6+'al   la ',s*5+'j       j\n  jaf'+s*9+'öku\n y'+s*15+'l\nE'+s*17+'l','-'*19][v:])
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.