In một thiên thần ca hát


9

Giữ một chủ đề lễ hội, in một thiên thần hát carol với mã ngắn nhất có thể. Thiên thần đang quyên góp tiền cho người vô gia cư, vì vậy phải có khả năng hát cả ba bài hát dưới đây theo yêu cầu. Để minh họa cô ấy có thể hát chúng, tiêu đề của bài hát phải được đặt trong bong bóng lời nói. Tiêu đề bài hát này sẽ được nhập bởi người dùng. Những ví dụ bao gồm:

  • Mẹ Maria
  • rung chuông
  • Đêm yên tĩnh

Đầu vào:

Tiêu đề: 1 trong 3 bài hát.

Đầu ra:

                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /              \
(           )  <                              
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

Vui lòng dán kết quả của thiên thần ca hát của bạn cùng với bài hát: "Đêm yên tĩnh".

Quy tắc bong bóng lời nói:

Bong bóng lời nói phải luôn có khung dài 12 dòng gạch dưới.

Tiêu đề của bài hát phải luôn bắt đầu trên dòng thứ hai.

Tiêu đề của bài hát phải luôn bắt đầu 3 khoảng trắng bên dưới bong bóng.

                  123456789...
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Song      \
(           )  <     Title                     
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

Ví dụ dưới đây:

                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Mother    \
(           )  <     Mary                     
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Jingle    \
(           )  <     Bells                         
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Silent    \
(           )  <     Night                         
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

1
1. / và \ trong váy thiên thần của bạn không đối xứng. Đây có phải là cố ý? 2. Mục đích của việc hiển thị đầu ra là gì, nếu nó phải giống hệt với câu hỏi?
Cấp sông St

1
Nếu bạn muốn chính xác - dài 9 chữ cái, 2 từ, nhưng trọng tâm hơn là ba bài hát được liệt kê trong phần mô tả trái ngược với các tiêu đề bài hát khác.
Tháp chuông

1
Đây không phải là nghệ thuật ASCII! `'- Tiếng không phải là ký tự ASCII. Ngoài ra, tại sao bạn có các loại dấu gạch ngang khác nhau?
Stewie Griffin

3
@StewieGriffin Tôi cá rằng đây là hậu quả không lường trước của việc gõ hoặc dán văn bản trong trình chỉnh sửa với tính năng "trích dẫn / dấu gạch ngang thông minh". TextEdit trên OS X là bệnh lý về điều này. Chúng tôi thường xuyên nhận được câu hỏi về SO dọc theo dòng chữ, "Tại sao không puts “hello”hoạt động?"
Jordan

2
Quả thực đó là @Jordan ....
Belfield

Câu trả lời:


1

PHP, 215 byte

<?=($p=str_pad)($p($s=" ".$t="   ",18),30,_),$p("
(\   ___$t/)$s/",31),$p("\
( \ (‘o‘) / )$t/$t$argv[1]",37),"\
($s$s$t)  <$s$argv[2]",$p("
 (  ‘> <’  )$s\\",36),$p("/
$s/$s\\$s$t\\",32,_),"/
$t/$t$t\
  ‘ – “ - ‘";

lấy tiêu đề từ hai đối số dòng lệnh đầu tiên.

Đối với Windows: thêm 1 vào tất cả độ dài pad sau dòng đầu tiên hoặc sao chép dấu gạch chéo ngược trước khi ngắt dòng và thay thế tất cả các ngắt dòng bằng \n


3

JS (ES6), 328 330 byte

a=(b,c)=>b.repeat(c);f=prompt().split(" ");if(f[1].length<5)f[1]+=" ";console.log(a(" ",18)+a("_",12)+`
(\\   ___   /)    /`+a(" ",12)+`\\
( \\ (‘o‘) / )   /    `+f[0]+`    \\
(`+a(" ",11)+`)  <     `+f[1]+a(" ",21)+`
 (  ‘> <’  )    \\`+a(" ",14)+`/
    /    \\       \\`+a("_",12)+`/
   /      \\  
  ‘ – “ - ‘`)
  • 1 hàm trợ giúp (một mã char (ngắn hơn một char) và lặp lại c lần)
  • 1 biến để nhận đầu vào thông qua prompt()và thực hiện phân chia thành mảng
  • có thể lạm dụng các trường hợp đặc biệt ở đó nhưng vẫn thực hiện công việc
  • Tôi giả sử cần thêm 21 khoảng trống ở cột giữa

a=(b,c)=>b.repeat(c);f=prompt().split(" ");if(f[1].length<5)f[1]+=" ";console.log(a(" ",18)+a("_",12)+`
(\\   ___   /)    /`+a(" ",12)+`\\
( \\ (‘o‘) / )   /    `+f[0]+`    \\
(`+a(" ",11)+`)  <     `+f[1]+a(" ",21)+`
 (  ‘> <’  )    \\`+a(" ",14)+`/
    /    \\       \\`+a("_",12)+`/
   /      \\  
     - ‘`)


Với mã hóa UTF8, đây là 344 byte, không phải là 328. Bạn đã sử dụng mã hóa nào để đếm byte?
smls

smls là chính xác; đây là 328 ký tự, nhưng 344 byte. Bạn có thể tiết kiệm 14 chỉ bằng cách loại bỏ String.fromCharCodevà thực hiện a=(b,c)=>b.repeat(c), sau đó gọi với một không gian thực tế hoặc gạch dưới mỗi lần
ETHproductions

@ETHản xuất, cố định.
n4melyh4xor

@ n4melyh4xor Có thể chấp nhận tiêu đề bài hát ở dạng phân tách trước, nghĩa là triển khai mã dưới dạng lambda có hai tham số riêng biệt cho hai từ? Hoặc tiêu đề bài hát phải đi vào dưới dạng một chuỗi và việc chia tách được thực hiện như một phần của mã? (Các giải pháp Python 3.6 trước đây và nếu bạn bật đèn xanh, tôi cũng sẽ sử dụng nó để rút ngắn giải pháp Perl 6 của mình ... :))
smls

@smls, tôi nghĩ nó nên được lấy thành một chuỗi và sau đó bạn có thể làm bất cứ điều gì bạn muốn.
n4melyh4xor

3

Python 3.5, 207 ký tự, 226 byte

def f(s):a,b=s.split();u='_'*12;[print(' '*int(x)if x.isdigit()else x,end='')for x in"99"+u+"\n(\\3___3/)4/66\\\n( \\ (‘o‘) / )3/4"+a+"4\\\n(92)2<5"+b+"\n (2‘> <’2)4\\95/\n4/4\\7\\"+u+"/\n3/6\\\n2‘ – “ - ‘"]

Đầu ra:

                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Jingle    \
(           )  <     Bells
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \
  ‘ – “ - ‘

Hơi vô dụng:

def angel(s):
    a, b = s.split()
    u = '_' * 12;
    out = "99" + u + "\n"
    out += "(\\3___3/)4/66\\\n"
    out += "( \\ (‘o‘) / )3/4" + a + "4\\\n"
    out += "(92)2<5" + b + "\n"
    out += " (2‘> <’2)4\\95/\n"
    out += "4/4\\7\\" + u + "/\n"
    out += "3/6\\\n"
    out += "2‘ – “ - ‘"
    [print(' '*int(x) if x.isdigit() else x, end='') for x in out]

Nó thay thế các chữ số bằng cùng một số khoảng trắng.


2

Python 3.6 - 286 241 224 byte

def x(L):X,Y=L.split();E,D=' '*11,'_'*12;print(f"""{' '*18}{D} 
(\   ___   /)    /{E} \\
( \ (‘o‘) / )   /    {X+' '*(10-len(X))}\\
({E})  <     {Y}
 (  ‘> <’  )    \{E}   /
    /    \       \{D}/
   /      \ 
  ‘ – “ - ‘""")
Đầu vào:
x ("Đêm yên tĩnh")
Output:    
                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Silent    \
(           )  <     Night
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \ 
  ‘ – “ - ‘

Lưu ý - Phiên bản là 3.6nơi định dạng chuỗi ký tự được giới thiệu . Do đó, điều này sẽ không hoạt động trong các phiên bản trước.


1

Perl 6 , 234 byte (218 ký tự)

{"{' 'x 18}{'_'x 12}
(\\   ___   /)    /{' 'x 12}\\
( \\ (‘o‘) / )   /    {.words[0].fmt('%-9s')} \\
({' 'x 11})  <     {.words[1]}
(  ‘> <’  )    \\{' 'x 14}/
    /    \\       \\{'_'x 12}/
  /      \\
  ‘ – “ - ‘"}

Một lambda nhập tên bài hát dưới dạng chuỗi và xuất ra góc tuyết dưới dạng chuỗi.

  • Giả sử rằng không gian dấu là không cần thiết.
  • Số byte là dành cho mã hóa UTF8, vì đó là cách Perl 6 mong đợi mã nguồn.

1

Python 2.6, 391 byte

def angel(a):
    X,Y=a.split()
    print("                  ____________")
    print"(\   ___   /)    /            \\"
    print"( \ (‘o‘) / )   /  ",  X,  "    \\"
    print"(           )  <   ", Y,        "  "
    print" (  ‘> <’  )    \              /"
    print"    /    \       \____________/"
    print("   /      \  ")
    print"  ‘ – 

Trường hợp thử nghiệm:

angel("Silent Night")
                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /   Silent     \
(           )  <    Night   
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \  
  ‘ – “ - ‘

Số lượng byte là bao nhiêu? Bạn có thể muốn sử dụng #titlethay vì**title*
Titus

Hơi muộn (OK, muộn rất nhiều) nhưng bạn có thể sử dụng 1 khoảng trắng để thụt lề để tiết kiệm rất nhiều byte và bạn có thể nói p=printđể rút ngắn bản in của mình
Stephen
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.