Eyjafjallajökull的喷发?


18

2010年,冰岛Vulcano(简写为 Eyjafjallajökull火山 喷发,导致我原计划的航班被取消。

万一这种情况再次发生,我真的想提前知道,所以请帮助我建立一个简单的视觉警报系统!

输入值

前往冰岛气象局火山活动警报代码作为输入(字符串):

绿色 -火山处于正常非喷发状态。

黄色 -火山的动荡迹象超过已知的背景水平。

橙色 -火山的骚动加剧,爆发的可能性增加。

红色 -预计即将爆发,可能有大量灰烬排放到大气中。

输出量

图形(ASCII艺术)警报,显示Eyjafjallajökull的状态。

绿色(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
-------------------

红色(烟更多,还有一些烟灰!)

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

规则

  • 您可以输出到屏幕(stdout),或返回一个字符串
  • 这是!最短答案(以字节为单位),获胜
  • 随时用o替换ö
  • 允许尾随空格,但不是必需的
  • 最多允许一个尾随换行符
  • 最多允许4条领先的换行符(代替烟雾)

发音:AY-JAH-FUH-JUH-AH-LAH-JUh-KUh-EW-LUH
魔术章鱼缸

@carusocomputing-差不多了!:)
zeppelin

至少比Tungnafellsjökull短:P
FlipTack

@DrMcMoylex不,只是一个错字,现在应该修复。谢谢 !
齐柏林飞艇

您开玩笑说这个名字并不简洁,但实际上它的描述性很强,比英文翻译“ island mountain glacier”还短,听起来也更漂亮。:P
马丁·恩德

Answers:


2

红宝石,161

这是我对冰岛著名地标Eyjafjallajökull塔的看法。

相当短,但我还没有想出打高尔夫烟雾的好方法。

->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行具有一个尾随空格,第3行具有六个尾随空格,第4行具有三个尾随空格。


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

的JavaScript(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

的JavaScript(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字节:使用正则表达式代替函数来生成空格。


是否s真的值得吗?根据我的计算,它节省了4个字节...但花费了16个字节。另一方面,我认为您可以通过使用_更多字节来节省几个字节。
尼尔

产生无效的ORANGE结果(烟未正确对齐)
zeppelin

@Neil是的,我预计我会比实际需要更多。:P
darrylyeo '16

@zeppelin固定。
darrylyeo '16

现在它对我来说失败,并显示“未定义r” :(
zeppelin

1

> <>(FISH)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; 将初始火山柱移至1行以减少换行,然后将“ RED”柱反向移至空白处。(保存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:])
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.