การระเบิดของEyjafjallajökull?


18

ปี 2553 ไอซ์แลนด์วัลคาโนชื่อย่อEyjafjallajökull ปะทุขึ้นทำให้เที่ยวบินที่วางแผนไว้นานถูกยกเลิก

ในกรณีที่เคยเกิดขึ้นอีกครั้งฉันอยากจะรู้ล่วงหน้าดังนั้นโปรดช่วยฉันสร้างระบบการเตือนด้วยภาพแบบง่าย!

อินพุต

รับรหัสแจ้งเตือนกิจกรรมภูเขาไฟในไอซ์แลนด์สำนักงานอุตุนิยมวิทยาในฐานะอินพุต (สตริง):

GREEN - ภูเขาไฟอยู่ในสภาพปกติไม่มีการปะทุ

สีเหลือง - ภูเขาไฟกำลังประสบกับสัญญาณของความไม่สงบที่เพิ่มขึ้นเหนือระดับพื้นหลังที่เป็นที่รู้จัก

ออเรนจ์ - ภูเขาไฟกำลังแสดงความไม่สงบที่เพิ่มมากขึ้นพร้อมโอกาสที่จะเกิดการปะทุ

สีแดง - คาดว่าการปะทุจะใกล้เข้ามาโดยมีการปล่อยขี้เถ้าออกสู่บรรยากาศอย่างมีนัยสำคัญ

เอาท์พุต

การแจ้งเตือนกราฟิก (ศิลปะ ASCII) แสดงสถานะของEyjafjallajökull

GREEN (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?
Magic Octopus Urn

@carusocomputing - เกือบมัน! :)
zeppelin

อย่างน้อยก็สั้นกว่าTungnafellsjökull : P
FlipTack

@DrMcMoylex ไม่ควรพิมพ์ผิดตอนนี้ ขอบคุณมาก!
Zeppelin

คุณตลกเกี่ยวกับชื่อที่ไม่รัดกุม แต่จริงๆแล้วมันมีความหมายมากและสั้นกว่าการแปลภาษาอังกฤษ "เกาะภูเขาธารน้ำแข็ง" และยังฟังดูสวยงามมากขึ้น : P
Martin Ender

คำตอบ:


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

Ungolfed ในโปรแกรมทดสอบ

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 ไบต์: ใช้ Regex แทนฟังก์ชั่นเพื่อสร้างช่องว่าง


คือsคุ้มหรือไม่ โดยการนับของฉันจะช่วยประหยัด 4 ไบต์ ... แต่ค่าใช้จ่าย 16 ไบต์ ในทางกลับกันฉันคิดว่าคุณสามารถบันทึกสองสามไบต์โดยใช้_เพิ่มเติม
Neil

สร้างผลลัพธ์ที่ไม่ถูกต้องสำหรับ ORANGE (การจัดแนวควันไม่ถูกต้อง)
zeppelin

@ Neil ใช่ฉันคาดหวังว่าฉันต้องการมันบ่อยกว่าที่ฉันทำจริงๆ : P
darrylyeo

แก้ไข @zeppelin
darrylyeo

ตอนนี้มันล้มเหลวด้วย "r ไม่ได้กำหนด" สำหรับฉัน :(
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; ย้ายสตริงภูเขาไฟเริ่มต้นไปที่ 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:])
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.