L'éruption d'Eyjafjallajökull?


18

L'année 2010, un Vulcano islandais, nommé de manière concise Eyjafjallajökull a éclaté, entraînant l'annulation de mon vol prévu depuis longtemps.

Au cas où cela se reproduirait, j'aimerais vraiment le savoir à l'avance, alors aidez-moi à créer un système d'alerte visuelle simple!

Contribution

Prenez le code d'alerte d'activité volcanique de l' Office météorologique islandais , en entrée (chaîne):

VERT - Le volcan est dans un état normal et non éruptif.

JAUNE - Le volcan connaît des signes de troubles élevés au-dessus des niveaux de fond connus.

ORANGE - Le volcan présente des troubles accrus avec une probabilité accrue d'éruption.

ROUGE - L'éruption devrait être imminente et une émission importante de cendres dans l'atmosphère est probable.

Production

L'alerte graphique (art ASCII), illustrant l'état d'Eyjafjallajökull.

VERT (Eyjafjallajökull se repose)

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

JAUNE (de la fumée apparaît!)

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

ORANGE (plus de fumée!)

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

ROUGE (encore plus de fumée et de cendre aussi!)

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

Règles

  • Vous pouvez afficher à l'écran (stdout) ou renvoyer une chaîne
  • C'est du ! La réponse la plus courte (en octets), gagne
  • N'hésitez pas à remplacer ö par o
  • Les espaces de fin sont autorisés, mais pas obligatoires
  • Au plus une nouvelle ligne de fin est autorisée
  • Au plus 4 nouvelles lignes principales sont autorisées (à la place de la fumée)

Prononcés: AY-JAH-FUH-JUH-AH-LAH-JUh-KUh-EW-LUH?
Magic Octopus Urn

@carusocomputing - Presque tout! :)
zeppelin

au moins, il est plus court que Tungnafellsjökull : P
FlipTack

@DrMcMoylex Non, juste une faute de frappe, devrait être corrigée maintenant. Merci !
zeppelin

Vous plaisantez sur le fait que le nom n'est pas concis mais il est en fait très descriptif et plus court que sa traduction anglaise "island mountain glacier" et sonne aussi beaucoup plus beau. : P
Martin Ender

Réponses:


2

Rubis, 161

Voici mon point de vue sur le célèbre monument islandais, la tour Eyjafjallajökull.

Raisonnablement court mais je n'ai pas encore trouvé un bon moyen de jouer à la fumée.

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

Non testé dans le programme de test

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

Lot, 284 octets

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

Remarque: les lignes 1 et 7 ont un espace de fin, la ligne 3 en a six et la ligne 4 en a trois.


1
Belle utilisation de goto.
NoOneIsHere

1

PHP, 307 288 279 octets

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

laidement encombrant

panne

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

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 199 194 183 octets

Passez l'entrée à la fonction f(), par exemple 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 octets: Regex utilisé au lieu de la fonction pour générer des espaces.


Est-ce svraiment la peine? À mon avis, il économise 4 octets ... mais coûte 16 octets. D'un autre côté, je pense que vous pourriez économiser quelques octets en utilisant _plus.
Neil

Produit des résultats invalides pour ORANGE (la fumée n'est pas alignée correctement)
zeppelin

@Neil Oui, je m'attendais à en avoir besoin plus souvent que je ne l'ai vraiment fait. : P
darrylyeo

@zeppelin Fixé.
darrylyeo

il échoue maintenant avec "r n'est pas défini" pour moi :(
zeppelin

1

> <> (Poisson) 351 339 302 octets

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

Assez basique et moche pour le moment, je travaille sur le golf plus bas mais l'entrée `` ROUGE '' rend plus difficile la réutilisation des lignes.

Modifier 1; Déplacement de la chaîne initiale du volcan sur 1 ligne pour réduire les ruptures de ligne, déplacement de la chaîne «ROUGE» en sens inverse pour remplir l'espace vide. (12 octets enregistrés)

Edit 2; Supprimez la vérification «O» et imprimez simplement si les 3 autres ne sont pas entrés (il ne spécifie aucune entrée non «verte, rouge, orange, jaune». A également supprimé le mouvement et utilisé les espaces dans les chaînes pour contourner commandes supplémentaires. (37 octets enregistrés)

Version en ligne à tester!


0

Python 2, 209 octets (208 caractères)

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:])
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.