Eyjafjallajökull patlaması?


18

2010 yılında, Eyjafjallajökull adında kısaca isimlendirilen bir İzlandalı Vulcano patladı ve bu da uzun planlı uçuşumun iptal edilmesine neden oldu.

Bunun tekrar olması durumunda, önceden bilmek istiyorum, bu yüzden lütfen basit bir görsel uyarı sistemi oluşturmama yardım edin!

Giriş

Al İzlanda Meteoroloji Ofisi girdi (string) gibi volkanik aktivite uyarısı kodu:

YEŞİL - Volkan normal, patlaması olmayan bir durumda.

SARI - Volkan bilinen arka plan seviyelerinin üzerinde yüksek huzursuzluk belirtileri yaşıyor.

TURUNCU - Volkan, patlama olasılığı arttıkça artan huzursuzluk sergiliyor.

KIRMIZI - Erüpsiyonun, muhtemelen atmosfere önemli miktarda kül emisyonu ile yaklaşacağı tahmin edilmektedir.

Çıktı

Eyjafjallajökull'un durumunu gösteren grafik (ASCII sanatı) uyarısı.

YEŞİL (Eyjafjallajökull dinleniyor)

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

SARI (duman çıkıyor!)

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

TURUNCU (daha fazla duman!)

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

KIRMIZI (daha fazla duman ve biraz kül!)

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

kurallar

  • Ekrana (stdout) çıktı verebilir veya bir dize döndürebilirsiniz
  • Bu ! En kısa cevap (bayt cinsinden) kazanır
  • Yerine çekinmeyin ö ile o
  • Sondaki boşluklara izin verilir, ancak zorunlu değildir
  • En fazla bir sondaki yeni satıra izin verilir
  • En fazla 4 önde gelen yeni satıra izin verilir (duman yerine)

Telaffuz edilen: AY-JAH-FUH-JUH-AH-LAH-JUh-KUh-EW-LUH?
Sihirli Ahtapot Urn

@carusocomputing - Neredeyse! :)
zeppelin

en azından Tungnafellsjökull'dan daha kısa : P
FlipTack

@DrMcMoylex Hayır, sadece bir yazım hatası düzeltilmelidir. Teşekkürler !
zeppelin

Kısa ve öz değil isminin şakası ama aslında İngilizce çevirisi "ada dağ buzul" daha kısa ve çok daha güzel geliyor. : P
Martin Ender

Yanıtlar:


2

Ruby, 161

İşte İzlanda'nın ünlü simgesel yapısı Eyjafjallajökull Kulesi.

Oldukça kısa ama henüz duman golf için iyi bir yol ile gelmedi.

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

Test programında yönlendirilmemiş

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

Toplu, 284 bayt

@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%--------------------

Not: Satır 1 ve 7'de bir boşluk vardır, satır 3'te altı ve satır 4'te üç vardır.


1
Güzel kullanımı goto.
NoOneIs Here

1

PHP, 307 288 279 bayt

$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?"  ":"`´");

çirkin hantal

Yıkmak

$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 bayt

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 bayt

Girişi işleve geçirin f(), örn 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 bayt: Boşluk oluşturmak için işlev yerine Regex kullanılır.


Mi sgerçekten değer? Sayımla, 4 bayt tasarruf ediyor ... ama 16 bayta mal oluyor. Öte yandan, _daha fazla kullanarak birkaç bayt tasarruf edebileceğinizi düşünüyorum .
Neil

ORANGE için geçersiz sonuçlar üretir (duman doğru şekilde hizalanmamış)
zeppelin

@Neil Evet, gerçekten benden daha sık ihtiyacım olacağını tahmin ettim. : P
darrylyeo

@zeppelin Düzeltildi.
darrylyeo

şimdi benim için "r tanımlanmadı" ile başarısız :(
zeppelin

1

> <> (Balık) 351 339 302 bayt

\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"~  ~  ~      "

Şu anda oldukça basit ve çirkin, daha aşağı golf oynamak için çalışıyorum ama 'KIRMIZI' giriş satırları yeniden kullanmayı zorlaştırıyor.

Düzenleme 1; Satır sonlarını azaltmak için ilk yanardağ dizesini 1 satıra taşıdı, boş alanı doldurmak için 'KIRMIZI' dizeyi tersine taşıdı. (12 bayt kaydedildi)

Düzenleme 2; Diğer 3 girilmezse 'O' kontrolünü aldı ve yazdır Ekstra komutlar. (37 bayt kaydedildi)

Test etmek için çevrimiçi sürüm!


0

Python 2, 209 bayt (208 karakter)

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:])
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.