Sự phun trào của Eyjafjallajökull?


18

Năm 2010, một Núi lửa Iceland, được đặt tên chính xác là Eyjafjallajökull phun trào, dẫn đến chuyến bay theo kế hoạch dài của tôi bị hủy bỏ.

Trong trường hợp điều này xảy ra một lần nữa, tôi thực sự muốn biết trước, vì vậy hãy giúp tôi xây dựng một hệ thống cảnh báo trực quan đơn giản!

Đầu vào

Lấy mã cảnh báo hoạt động núi lửa của Văn phòng Khí tượng Iceland , làm đầu vào (chuỗi):

XANH - Núi lửa ở trạng thái bình thường, không phun trào.

VÀNG - Núi lửa đang trải qua các dấu hiệu bất ổn cao trên các mức nền đã biết.

ORANGE - Núi lửa đang thể hiện tình trạng bất ổn tăng cao với khả năng phun trào tăng.

ĐỎ - Vụ phun trào được dự báo sắp xảy ra với khả năng phát thải tro đáng kể vào khí quyển.

Đầu ra

Cảnh báo đồ họa (nghệ thuật ASCII), minh họa trạng thái của Eyjafjallajökull.

XANH (Eyjafjallajökull đang nghỉ ngơi)

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

VÀNG (một số khói xuất hiện!)

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

ORANGE (nhiều khói hơn!)

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

ĐỎ (thậm chí nhiều khói và một số tro nữa!)

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

Quy tắc

  • Bạn có thể xuất ra màn hình (thiết bị xuất chuẩn) hoặc trả về một chuỗi
  • Đây là ! Câu trả lời ngắn nhất (tính bằng byte), thắng
  • Hãy thay thế ö bằng o
  • Không gian lưu trữ được phép, nhưng không bắt buộc
  • Nhiều nhất một dòng mới được cho phép
  • Tối đa 4 dòng mới hàng đầu được cho phép (thay cho khói)

Phát âm : AY-JAH-FUH-JUH-AH-LAH-JUh-KUh-EW-LUH?
Bạch tuộc ma thuật Urn

@carusocomputing - Sắp xong rồi! :)
zeppelin

ít nhất là nó ngắn hơn Tungnafellsjökull : P
FlipTack

@DrMcMoylex Không, chỉ là một lỗi đánh máy, nên được sửa ngay bây giờ. Cảm ơn !
zeppelin

Bạn nói đùa về cái tên không ngắn gọn nhưng thực ra nó rất mô tả và ngắn hơn bản dịch tiếng Anh của nó là "sông băng trên núi" và nghe cũng hay hơn nhiều. : P
Martin Ender

Câu trả lời:


2

Hồng ngọc, 161

Đây là điểm đến nổi tiếng của Iceland, Tháp Eyjafjallajökull.

Khá ngắn nhưng tôi chưa nghĩ ra cách nào tốt để đánh khói.

->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 trong chương trình thử nghiệm

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

Mẻ, 284 byte

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

Lưu ý: Dòng 1 và 7 có một dấu cách, dòng 3 có sáu và dòng 4 có ba.


1
Sử dụng tốt đẹp của goto.
NoOneIsHãy là

1

PHP, 307 288 279 byte

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

cồng kềnh xấu xí

phá vỡ

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

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 byte

Truyền đầu vào cho hàm f(), vd 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 byte: Được sử dụng Regex thay vì hàm để tạo khoảng trắng.


sthực sự xứng đáng? Theo tính toán của tôi, nó tiết kiệm 4 byte ... nhưng chi phí 16 byte. Mặt khác, tôi nghĩ bạn có thể tiết kiệm một vài byte bằng cách sử dụng _nhiều hơn.
Neil

Tạo kết quả không hợp lệ cho ORANGE (khói không được căn chỉnh chính xác)
zeppelin

@Neil Vâng, tôi đã dự đoán rằng tôi cần nó thường xuyên hơn tôi thực sự đã làm. : P
darrylyeo

@zeppelin Đã sửa.
darrylyeo

bây giờ nó không thành công với "r không được xác định" đối với tôi :(
zeppelin

1

> <> (Cá) 351 339 302 byte

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

Khá cơ bản và xấu xí vào lúc này, tôi đang làm việc để đánh gôn xuống thấp hơn nhưng đầu vào 'ĐỎ' làm cho việc sử dụng lại các dòng trở nên khó khăn hơn.

Chỉnh sửa 1; Di chuyển chuỗi núi lửa ban đầu lên 1 dòng để giảm ngắt dòng, di chuyển chuỗi 'ĐỎ' ngược lại để lấp đầy không gian trống. (Đã lưu 12 byte)

Chỉnh sửa 2; Lấy ra kiểm tra 'O' và chỉ in nếu 3 cái còn lại không được nhập vào (nó không chỉ định bất kỳ đầu vào không 'xanh, đỏ, cam, vàng' nào. các lệnh bổ sung. (đã lưu 37 byte)

Phiên bản trực tuyến để thử nghiệm!


0

Python 2, 209 byte (208 ký tự)

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:])
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.