Şarkı söyleyen bir melek yazdır


9

Şenlikli bir tema ile devam ederek, mümkün olan en kısa kodla bir şarkıcı melek yazdırın. Melek evsizler için para topluyor, bu yüzden aşağıdaki üç şarkıyı da istek üzerine söyleyebilmelisiniz. Onlara şarkı söyleyebildiğini göstermek için şarkının başlığı konuşma balonunun içine yerleştirilmelidir. Bu şarkı adı kullanıcı tarafından girilecektir. Örnekler:

  • Meryem Ana
  • Jingle Bells
  • Sessiz gece

Giriş:

Başlık: 3 şarkıdan 1'i.

Çıktı:

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

Lütfen şarkı meleğinizin sonucunu "Silent Night" şarkısıyla birlikte yapıştırın.

Konuşma Balonu Kuralları:

Konuşma balonu her zaman 12 alt çizgi uzunluğunda bir çerçeveye sahip olmalıdır.

Şarkının adı her zaman ikinci satırda başlamalıdır.

Şarkının başlığı her zaman balonun içinde 3 alt çizgi aralığına başlamalıdır.

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

Aşağıdaki örnekler:

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

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

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

1
1. Meleğinizin eteğindeki / ve \ asimetriktir. Bu kasıtlı mı? 2. Soruyla özdeş olması gerekiyorsa çıktıyı göstermenin amacı nedir?
Level River St

1
Tam olmak istiyorsanız - 9 harf uzunluğunda, 2 kelime, ancak odak, diğer şarkı başlıklarının aksine açıklamada listelenen üç şarkıya daha fazla odaklanıyor.
Belfield

1
Bu ASCII-sanatı değil! `` - “ASCII karakterleri değildir. Ayrıca, neden farklı çizgi türleriniz var?
Stewie Griffin

3
@StewieGriffin Bu bir "akıllı tırnak / tire" özelliği ile metni bir editör yazarak veya yapıştırarak istenmeyen bir sonuç olduğunu iddia ediyorum. OS X'te TextEdit bu konuda patolojiktir. "Neden puts “hello”işe yaramıyor?"
Ürdün

2
Gerçekten de @Jordan ....
Belfield

Yanıtlar:


1

PHP, 215 bayt

<?=($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\
  ‘ – “ - ‘";

ilk iki komut satırı bağımsız değişkeninden başlık alır.

Windows için: ilk satırdan sonra tüm ped uzunluklarına 1 ekleyin veya satır sonlarından önce ters eğik çizgileri çoğaltın ve tüm satır sonlarını değiştirin \n


3

JS (ES6), 328 330 bayt

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 yardımcı fonksiyon (bir charcode alır (bir karakter daha kısa) ve c kez tekrar eder)
  • Girdi almak prompt()ve diziye bölünmüş yapmak için 1 değişken
  • tartışmasız oradaki özel davaları suistimal ediyor ama yine de işini yapıyor
  • Orta sütundaki fazladan 21 boşluğun gerekli olduğunu düşündüm

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)+`/
   /      \\  
     - ‘`)


UTF8 kodlamasında, bu 328 değil, 344 bayttır. Baytları saymak için hangi kodlamayı kullandınız?
smls

smls doğrudur; bu 328 karakterdir, ancak 344 bayttır. Sadece kurtularak String.fromCharCodeve yaparak a=(b,c)=>b.repeat(c), her seferinde gerçek bir boşluk veya alt çizgi ile arayarak 14 kaydedebilirsiniz
ETHproductions

@ETHproductions, sabit.
n4melyh4xor

@ n4melyh4xor Şarkı başlığını önceden bölünmüş biçimde kabul etmek, yani kodu iki sözcük için iki ayrı parametre alan bir lambda olarak uygulamak doğru mu? Veya şarkı adı bir dize olarak mı geliyor ve bölme kodun bir parçası mı? (Python 3.6 çözümleri
ilkini

@smls, bence tek bir dize olarak alınmalı ve sonra ne istersen yapabilirsin.
n4melyh4xor

3

Python 3.5, 207 karakter, 226 bayt

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‘ – “ - ‘"]

Çıktı:

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

Hafifçe soluksuz:

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]

Sayısal rakamları aynı sayıda boşlukla değiştirir.


2

Python 3.6 - 286 241 224 bayt

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}/
   /      \ 
  ‘ – “ - ‘""")
Giriş:
x ("Sessiz Gece")
Output:    
                  ____________
(\   ___   /)    /            \
( \ (‘o‘) / )   /    Silent    \
(           )  <     Night
 (  ‘> <’  )    \              /
    /    \       \____________/
   /      \ 
  ‘ – “ - ‘

Not - Sürüm, 3.6dize değişmez biçimlendirmesinin tanıtıldığı yerdir . Bu nedenle, bu önceki sürümlerde çalışmaz.


1

Perl 6 , 234 bayt (218 karakter)

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

Şarkı adını dize olarak girip kar açısını dize olarak veren bir lambda.

  • Sondaki boşlukların gerekli olmadığını varsayar.
  • Bayt sayısı UTF8 kodlaması içindir, çünkü Perl 6 kaynak kodunu böyle bekler.

1

Python 2.6, 391 bayt

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

Test durumu:

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

Bayt sayısı nedir? Bunun #titleyerine kullanmak isteyebilirsiniz**title*
Titus

Biraz geç (tamam, çok geç) ama çok fazla bayt kaydetmek için girinti için 1 boşluk kullanabilirsiniz ve p=printbaskılarınızı kısaltmayı söyleyebilirsiniz
Stephen
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.