Bu roket bilimi değil


59

Tek satırlı bir dize alan bir program veya işlev yazın. Yalnızca yazdırılabilir ASCII içerdiğini varsayabilirsiniz . Bir ASCII sanat roketinin bir dizesini yazdırın veya iade edin

  |
 /_\
 |E|
 |a|
 |r|
 |t|
 |h|
 |_|
/___\
 VvV

Giriş dizesi gövde üzerinde yukarıdan aşağıya yazılmıştır. Bu durumda giriş yapıldı Earth. Roketin yüksekliği (alevler dahil) daima ipin uzunluğu artı beş'tir.

Çıktıdaki her satır en fazla iki sondaki boşluk içerebilir ve tek bir isteğe bağlı sondaki yeni satır olabilir. Bayt cinsinden en kısa kod kazanır.

Daha fazla örnek:

[empty string]

  |
 /_\
 |_|
/___\
 VvV

a

  |
 /_\
 |a|
 |_|
/___\
 VvV

|0

  |
 /_\
 |||
 |0|
 |_|
/___\
 VvV

\/\

  |
 /_\
 |\|
 |/|
 |\|
 |_|
/___\
 VvV

 _ _ [note trailing space]

  |
 /_\
 | |
 |_|
 | |
 |_|
 | |
 |_|
/___\
 VvV

    [4 spaces]

  |
 /_\
 | |
 | |
 | |
 | |
 |_|
/___\
 VvV

SPACEY

  |
 /_\
 |S|
 |P|
 |A|
 |C|
 |E|
 |Y|
 |_|
/___\
 VvV

Liderler Sıralaması


1
İlgili . Bu bir sayım kadar sayılabilecek kadar yakın olan başkaları olabilir.
Peter Taylor

2
@Sefa Uzayları evet. Diğer boşluklara hayır. Gibi bağlantılı wiki gösterir.
Calvin'in Hobileri

6
Ah, ünvanı gördüm ve beyin ameliyatı hakkında bir şeyler bekledim. :(

17
Ve dipleri gökyüzüne işaret ederse, bugün uzaya gitmeyeceksiniz.
AstroDan

4
"Kerbal Uzay Programında çalıştı ..."
Magic Octopus Urn

Yanıtlar:


55

Excel VBA, 142 179 175 160 155 bayt

Talimat:

A1 hücresinin giriş olduğu Excel sütununu ve çıkış olarak C sütununu ayarlayın. C sütununda metin hizalamasını ortalamak için ayarlayın . Komut Penceresinde aşağıdaki kodu yazın ve çalıştırın:

[C1]="|":[C2]="/_\":T=[A1]&"_":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/__\":Cells(i+3,3)="VvV":[C:C].HorizontalAlignment=-4108

Ungolfed kodu:

Sub R()
    [C1] = "|"
    [C2] = "/_\"
    T = [A1]&"_"

    For i = 1 To Len(T)
        Cells(i + 2, 3) = "|" & Mid(T, i, 1) & "|"
    Next

    Cells(i + 2, 3) = "/__\"
    Cells(i + 3, 3) = "VvV"
    [C:C].HorizontalAlignment = -4108   'Set the text alignment in column C to center
End Sub

Çıktı:

görüntü tanımını buraya girin

Not: Yazı tipi ve renk sadece kişisel bir seçimdir.


Edc65'in önerisi nedeniyle 15 bayt kazandı. Teşekkürler.

TaylorScott'un önerisi nedeniyle 5 bayt kurtarıldı. Teşekkürler.


"_"[C1]="|":[C2]="/_\":T=[A1]&" ":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/__\":Cells(i+4,3)="VvV":Columns(3).HorizontalAlignment=-4108
T.'ye

(Tamam benim kodunda bir hata olduğunu ve düzenlemek için çok geç Ama anladınız.)
edc65

@ edc65 Fikri anlamadım. Şifreniz benimkiyle tamamen aynı. Bu yüzden 15 bayttan tasarruf etmek için ne düzenlemeliyim?
Anastasiya-Romanova 秀

1
154 Bayt:[C:C].HorizontalAlignment=-4108:[C1]="|":[C2]="/_\":T=[A1]&"_":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/__\":Cells(i+3,3)="VvV
Taylor Scott

1
Veya merkezleme özelliğini koruyarak 151 bayta indirebilir[C:C].HorizontalAlignment=3:[C1]="|":[C2]="/_\":T=[A1]&"_":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/___\":Cells(i+3,3)="VvV
Taylor Scott

30

Perl 6, 75 bayt

"  |\n /_\\".say;" |$_|".say for slurp.chomp.comb;" |_|\n/___\\\n VvV".say;

101
slurp.chomp.comb... Perl garip.
Mego

14
SLURP !!! Chomp !!! TARAK!! İşte Perl canavarı geliyor!
stommestack,

Bir işlev ve concatanation kullanarak çok şey kesebileceğinizi unutmayın: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 bayt
user0721090601


22

JavaScript (ES6), 54

Basit

x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`

Ölçek

f=x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`

function update() {
  O.textContent=f(I.value)
}

update()
<input id=I value='hello' oninput='update()'><pre id=O></pre>


16

Aslında, 40 bayt

"/___\
 VvV",'_o"|
 |"j'|o" |"+"  |
 /_\

Evet, bu yeni hatların orada olması gerekiyordu.

Çevrimiçi deneyin!

Açıklama:

Newlines, \ndaha kolay biçimlendirme için temsil edilir

"/___\\n VvV",'_o"|\n |"j'|o" |"+"  |\n /_\
"/___\\n VvV"                                create the bottom of the rocket
             ,'_o                            get input, append a "_" (for the last section before the jets)
                 "|\n |"j                    insert "|\n |" between every pair of characters
                         '|o                 append "|"
                            " |"+            prepend " |"
                                 "  |\n /_\  create the nose cone

12
Programınız patlayan bir rokete büyük ölçüde benziyor.
corsiKa

15

C, 83 , 82 bayt

F(char*c){for(puts("  |\n /_\\");*c;printf(" |%c|\n",*c++));puts(" |_|\n/___\\\n VvV");}

Ana test:

int main() {
  F("");
  F("a");
  F("|0");
  F("\\/\\");
  F(" _ _ ");
  F("    ");
  F("SPACEY");
}

7
Kendi C çözümüm üzerinde çalıştım ve bu tamamen senin, karakterin karakteri. Benden +1.
Cody

Telefonda ve SSH'ye çok tembel, bu yüzden denenmemiş, ancak çalışması gerekir. 2 bayt kazandırır (doğru sayılırsam):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

@algmyr aslında bir bayt kaydeder, çünkü sonuncusu putsher şeyden önce değil, yalnızca bir kez çalıştırılmak zorundadır printf. Ama evet, 1 bayt kurtuldu, yay!
Stefano Sanfilippo

Sağ. Uyumak zorunda olduğumda golf oynamaktan onu suçlayacağım.
algmyr,

Bu 88 bayt değil mi?
gastropner

10

Python 2, 93 66 62 61 bayt

Bir FGITW. Muhtemelen ağır golf oynayabilir. Önerilerinizi bekliyoruz.

Düzenleme: Mego sayesinde 27 bayt. TheBikingViking sayesinde 4 bayt. User3030010 sayesinde 1 bayt.

Çevrimiçi Deneyin!

lambda x:r"""  |
 /_\
 |%s|
/___\
 VvV"""%"|\n |".join(x+"_")

9

PHP, 73 72 69 62 bayt

  |
 /_\
 |<?=join('|
 |',str_split($argv[1]._))?>|
/___\
 VvV

Kodda çağrıldığında komut satırından ilk argüman olarak gövde üzerine yazdırılacak dizeyi alır.

İyileştirmeler:

  1. İlk argümandaki \ n'yi gerçek bir LF newline ile değiştirerek bir byte kaydetti join.
  2. Roket tabanını girişe tek alt çizgi ile ekleyerek üç bayttan daha tasarruf edin
  3. Ismael Miguel sayesinde : PHP'nin "Hypertext önişlemcisi" olduğu gerçeğinden yararlanarak 7 bayt daha kaydetti, böylece istediğiniz kadar metin yazdırabilir ve kodu ortada başlatabilirsiniz.

Çevrimiçi deneyin!

Bu komikti! :-)

Örnek aramalar:

php rocket.php ""
php rocket.php EARTH
php rocket.php "This is a very long rocket"


Güzel golf! Bu olasılığı tamamen unuttum. Teşekkür ederim!
YetiCGN

Rica ederim. Ayrıca, ilk satırda 2 bayt kurtardım. Üzerinde 2 ekstra boşluk vardı. Bu bulmayı beklemiyordum, söylemeliyim.
Ismael Miguel,

1
Biliyorum, bu gerçekten aptaldı ama aynı zamanda fark etmesi çok zordu. Geliştirilmiş sürümünüzde 64 bayt ile karşılaştığımda ve nedenini bulmak zorunda kaldığımı fark ettim.
YetiCGN

8

brainfuck , 179 bayt

>-[-[-<]>>+<]>-..[->+>++++<<]>>----.<<++++++++++.>.>>>+[-[--<]>>--]<.[-<+<++>>]<<+.---.<,[<<<.>.>.>.<.>,]<<<.[->>>+<<<]>.>.>>+++.<<.>.>>.<...---.<.<<.>>>------.[-<<<+<+>>>>]<<<.<.

Çevrimiçi deneyin!


@ user00001 Bu cümle, yalnızca terörist tarafından değil, tüm dünyadaki Müslümanlar tarafından kullanılmaktadır. Gerçekten teröristlerin tüm Müslümanları temsil ettiğini düşünüyor musunuz?
Sızdıran Rahibe


8

Ruby, 57 55 bayt

@ValueInk tarafından -2 bayt
-5 bayt, @manatwork tarafından önerildiği gibi girişte yeni satır olmadığını varsayarak. Yeni satır daha az giriş örneğin sağlanabilir echo -ngibi echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Eski sürüm, girişte yeni satırı varsayar:

Ruby, 62 60 bayt

puts'  |
 /_\
 |'+gets.chop.chars*'|
 |'+'|
 |_|
/___\
 VvV'

Soru sahibinin yorumuna göre giriş yeni satır karakteri içermeyecek, böylece kaldırabilirsiniz .chop.
Manat çalışması

@manatwork temiz, teşekkürler :)
daniero

Tekli alıntı dizeleri kullanıyorsanız, ikisini de \\ ile değiştirebilirsiniz \ . (Tek tırnaklı dizelerde karakterler hariç, karakterlerden \'
Value Ink

7

Haskell, 58 bayt

f s="  |\n /_\\\n |"++((:"|\n |")=<<s)++"_|\n/___\\\n VvV"

7

Retina , 44 37 bayt

Martin Ender sayesinde 7 bayt.

$
_
.
¶ |$0|
$
¶/___\¶ VvV
^
  |¶ /_\

Çevrimiçi deneyin!


altta üst üste bir boşluk bırakıyor :( "Uzay, son sınır" için.
xQbert

@ xQbert Benim için çalışıyor, bir TIO bağlantısı ekleyebilir misiniz?
Sızdıran Rahibe,

garip, şimdi benim için iyi çalışıyor ... ah benim hata sonunda sonunda bir yeni satır oldu.
xQbert

Retina, takip eden bir yeni satır ekleyerek programı tamamen değiştirebileceğini bildiğim tek dil.
caird coinheringaahing

6

Jöle , 37 36 bayt

;”_⁾ |;ЀŒB;“/___\“ VvV”“  |“ /_\”;Y

Mevcut girişle aynı puan, ancak eğlenceli yeni bir özellik kullanır - sıçrama şeklinde bilinen ŒBvectorized sürümü ŒḄ. Zıplayan sonra tekrar sonuna kadar bir liste içinden geçen ve x[:-1]+x[::-1]örneğin: bounce("codegolf") == "codegolflogedoc".

Dennis sayesinde -1 bayt (sıçramanın vectorized sürümünü kullanın)

Nasıl?

;”_⁾ |;ЀŒB;“/___\“ VvV”“  |“ /_\”;Y - argument: a string, S
                        “  |“ /_\”   - the top of the rocket ["  |", " /_\"] 
;”_                                  - concatenate to make S=S+"_"
   ⁾ |;                              - concatenate to make c=" |"+c
       Ѐ                            - map over right argument i.e. for c in S
         ŒB                          - bounce! With vectorisation c[:-1]+c[::-1]
                                       e.g. " |B" -> " |B| "
           ;                         - concatenate with
            “/___\“ VvV”             - the bottom of the rocket ["/___\", " VvV"]
                                  ;  - concatenate the top with everything else
                                   Y - join with line feeds

TryItOnline'da test edin


2
ŒBiçin kısa ŒḄ€.
Dennis,

6

Pyke , 40 37 35 bayt

(En son sürümle çalışacak şekilde güncellendi)

\_+2" ||
"m:"/___\
 VvV"+R"  |
 /_\

Burada dene!


5

V , 41, 39 bayt

ys$_òlé
òÎá|I |
Hr/$r\YO  |GpX2á_o VvV

Çevrimiçi deneyin!

Bazı nedenlerden dolayı, çevrimiçi tercümanın beklenmedik sonuçlar ürettiğini, bu yüzden çok daha yavaş çalışan çevrimiçi tercümana bir hata ayıklama sürümü zorladığımı unutmayın. Şimdi doğru sonuçları üretmeli.

Bu program yazdırılamayan karakterler içerdiğinden, burada bir hexdump:

0000000: 7973 245f f26c e90a f2ce e17c 4920 7c0a  ys$_.l.....|I |.
0000010: 4872 2f24 725c 594f 2020 7c1b 4770 5832  Hr/$r\YO  |.GpX2
0000020: e15f 6f20 5676 56                        ._o VvV

Güzel ama "Uzay, son sınır" alanlarındaki boşlukları tam anlamıyla ele almıyor.
xQbert

5

R, 163 bayt

v=c();l="\n";for(i in 1:nchar(a<-scan(,"")))v=c(v,paste0(" |",strsplit(a,"")[[1]][i],"|",l,collapse=""));cat("  |",l," /_\\",l,v," |_|",l,"/___\\",l," VvV",sep="")

Ungolfed:

v=c()     #Empty vector
l="\n"    #Line break

for(i in 1:nchar(a<-scan(,"")))                  #For the number of character of the input
    v=c(v, paste0(" |",strsplit(a,"")[[1]][i],"|","\n",collapse=""))
    #This part cut the input into its letters, paste each letter between `|`'s, 
    #and a line break

cat("  |",l," /_\\",l,v," |_|",l,"/___\\",l," VvV",sep="") #Puts everything in the STDOUT,
                                                           #with spaces where needed

Son satıra biraz boşluk koymak zorunda kalmamı sevmiyorum ama hey!


5

PowerShell v2 +, 59 55 51 bayt

"  |
 /_\"
$args|% t*y|%{" |$_|"}
" |_|
/___\
 VvV"

Çevrimiçi deneyin!

Write-OutputHer elemanın arasına yeni bir satır yapıştırmak için yürütmenin sonunda varsayılanı kötüye kullanır , çünkü bunlar sadece boru hattındaki değişmez dizgilerdir. Tek "zor" bit, $argsroketin gövdesini almak için girişin her bir elemanını karakter dizisi olarak geçiren bir döngüdür .

ConnorLSW tarafından belirtildiği gibi bazı baytları kurtarmak için değişmez yeni satırları kullanır.
Veskah sayesinde -4 bayt daha.


Eğer kabuk 3 kaydetmek ve imkb olmadan iyi yürütmek için dizede fiili yeni satır koyabilirsiniz\r
colsw


4

PowerShell, 70 bayt

"  |`n /_\`n$(([char[]]$a|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV 

$ A'yı giriş olarak ayarlayın.

Bir değişkenden başka bir giriş yapmak zorundaysa, aşağıdakiler içinde bağlanabilir:

"Hello World"|%{"  |`n /_\`n$(([char[]]$_|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV "}

Örnek:

  |
 /_\
 |H|
 |e|
 |l|
 |l|
 |o|
 | |
 |W|
 |o|
 |r|
 |l|
 |d|
 |_|
/___\
 VvV 

4

Mathematica, 50 bayt

"  |
 /_\\
 |"<>(#<>"|
 |"&/@#)<>"_|
/___\\
 VvV"&

Anonim işlev Girdi olarak bir karakter listesi alır ve çıktı olarak bir dize döndürür.


4

PHP, 108 100 88 bayt

İş kedisi sayesinde -8 bayt

YetiCGN sayesinde -12 bayt

echo'  | 
 /_\\
';foreach(str_split($argv[1])as$c){echo" |$c|
";}echo' |_|
/___\\
 VvV';

oldukça basit

Ideone


1
foreach(str_split($a)as$c)Döngü için diğeri yerine çok fazla bayt kaydedebilirsiniz . Ayrıca, çift tırnak kullanıyorsanız $ c'yi doğrudan dizeye koyabilirsiniz:echo" |$c| ....";
Business Cat

@BusinessCat True, teşekkürler çift tırnaklar parantezlerin yorumlanmaması nedeniyle dizi tarzı ile çalışmadı
Sefa

Peki ya düzenli ifade? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
Manat çalışması

1
Neden etrafına bir fonksiyon bile koydu? Değiştirme $aile $argv[1]ve komut satırından çalışan o çok daha kısa hale getirir.
YetiCGN

@manatwork Muhtemelen geçerli bir alternatif, ancak onu anlamadığım ve benimkiyle aynı ruhta olmadığı için, göndermenize izin vereceğim.
Sefa

4

C #, 106 97 80 74 bayt

s=>$@"  |
 /_\
 |{string.Join("|\n |",s.ToCharArray())}|
 |_|
/___\
 VvV";

Yukarıda denemek için C # 6 yok ama işe yarayacağına inanıyorum

Kevin Cruijssen sayesinde 7 bayt kaydedildi

Beni doğru yönde işaret ettiği için 17 byte tasarruf etmek için manatwork sayesinde

Süt sayesinde 6 bayt kurtardı


+1. BTW, takip eden boşluklar isteğe bağlı, bu nedenle değiştirebilirsiniz: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 bayt )
Kevin Cruijssen

1
@KevinCruijssen Önceki cevabınıza yaptığınız yorumlardan sonra bunu güncelleme aşamasındaydım :)
Yardımlarınız

İçindeki tek bir dizgenin değişmezini kullanarak bazı karakterleri kaydedebilirsiniz Select: " |"+c+"|\n"c+"|\n |", {}öncesinde | |
Manat çalışması

@ manatwork Bu işe almak gibi görünmüyor
TheLethalCoder

1
Yeni satır 2 bayt ile karşılaştırıldığında \n1 bayttır. Böylece, onları yeni satırlarla değiştirerek 5 bayttan daha tasarruf edersiniz. Evet, Visual Studio kullanıyorsanız, varsayılan olarak yeni satırlar 2 bayt olacaktır, ancak kaynak dosyayı onaltılık bir düzenleyicide açabilirsiniz (Visual Studio'da bir tane vardır) ve satır başı karakterlerini silebilirsiniz. Çıkış hala aynı olacak.
süt,

4

C,  131  , 121 bayt

#define P printf
main(){char s[99],*p=s;gets(s);P("  |\n /_\\\n");while(*p)P(" |%c|\n",*p++);P(" |_|\n/___\\\n VvV\n");}

p=sBaşlatma işlemine geçerek ve piçini kullanarak üç karakteri kaldırabilirsiniz scanf:main(){char s[99],*p=s;scanf("%s",p);P(" |\n /_\\\n");while(*p)P(" |%c|\n",*p++);P(" |_|\n/___\\\n VvV\n");}
Quentin

tamam .... neden "scanf ("% s ", s)" yerine "scanf ("% s ", & s)" yazıp sonuçta doğru sonucu yazdım ... sonunda scanf alamadı tehlikeyi tercih
ettiğim yerler

2
Lütfen yayınlarınızı tahrif etmeyin. Teşekkür ederim!
Hiç kimseNada


3

05AB1E , 50 47 43 37 bayt

I'_J"  |
 /_\"svy" |ÿ|"}"/___\
 VvV"»

Çevrimiçi deneyin!

Adnan sayesinde 9 byte kurtarıldı.


P, gibi: String da 05AB1E içinde yeni satır kabul edebilir bu .
Adnan

@Adnan Güzel, teşekkürler! Boş girdiyi daha iyi nasıl aşabileceğimize dair bir fikrin var mı?
Emigna

IðJProgramın başında, aynı zamanda gövdenin temelini de içeren bir yaklaşım hakkında düşünüyordum .
Adnan

@Adnan Harika bir fikir. Bunu «daha önce şanssız olmadan denedim . Bu olsa çok daha iyi.
Emigna

Çıkarma Uve değiştirme Xile saynı zamanda bir byte :) kaydeder.
Adnan

3

Kotlin, 68 bayt

{"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}

Oldukça basit. Çok satırlı dize ve bir regex değiştirme kullanır. Bu tür bir lambda (String)->String. Ölçek:

fun main(args: Array<String>) {
    val function : (String)->String = {"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}
    println(function(" _ _ "))
}

3

Gema, 50 karakter

\A=  |\n\ /_\\\n
?=\ |?|\n
\Z=\ |_|\n/___\\\n\ VvV

Örnek çalışma:

bash-4.3$ echo -n gema | gema '\A=  |\n\ /_\\\n;?=\ |?|\n;\Z=\ |_|\n/___\\\n\ VvV'
  |
 /_\
 |g|
 |e|
 |m|
 |a|
 |_|
/___\
 VvV

3
Sanırım roketin tabanından önce | | | | |
özlüyorum

Ahh. Aptal bayan. @TheLethalCoder teşekkür ederiz.
Manat çalışması

1
Beni yeni (benim için) (golf dışı) bir dili tanıtan için +1.
Ürdün

3

BASH 84 70

İnsan yapımı sayesinde 14 kurtardı

(cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~  |\n /_\\\n~;$s~$~/___\\\n VvV~'

Baytların yarısından fazlası burun ve motor eklemek için.


Neden grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. Aslında kullanmak için bir neden göremiyorum catve echoya. Daha kısa sürede saf sedçözeltiye dönüşür .
Manat çalışması

Saf sed ile girişiniz yoksa herhangi bir çıktı elde edemezsiniz
Riley

Hamuru. Haklısın. Üzgünüm, şartın bu kısmını unuttum.
Manat çalışması

@ manatwork Ben de ilk denemede unuttum.
Riley

Gelecekte başvurmak için <pre> <code> etiketlerini kullanmaktan kaçının. Gelecekte koddan önce 4 boşluk kullanın, çünkü bu Markdown formatını otomatik olarak çıkar. Şu anki biçimlendirmeyi üstü çizili durumdan dolayı korudum, ancak bunu düzenleme meraklıları için de bakmak mümkün.
Addison Crump

3

GolfScript, 61 51 bayt

İlk golf kodum, umarım yeterince iyidir.

"  |
 /_\\
"\1/.,{" |"\(\"|
"\}\*" |_|
/___\\
 VvV"

açıklama

"  |\n /_\\\n"   # Push the rocket's head
\                # Swap the head with the user's string
1/               # The string is converted into an array
.,               # Push array length
{" |"\           # Push the rocket's body and swap
(\               # Array's first element cut out
"|\n"\           # Push rocket's body and swap
}\*              # Repeat for array length times
" |_|\n/___\\\n VvV" # Push rocket's bottom

Çevrimiçi deneyin!


3

Vim, 41 39 bayt

İşte <End>tam anlamıyla "Son" tuşu.

i <End>_:s/./ |&|\r/g
/___\
 VvVggxo /_\

Yazdırılamaz yani:

i <End>_^O:s/./ |&|\r/g
/___\
 VvV^[ggxo /_\^[

3

GNU sed , 54 49 48 bayt

Bu, bu sitede bir meydan okumaya ilk cevabımdı. Çözüm basittir, çoğunlukla basittir, bu yüzden artık golf oynayamayacağından emin olarak biraz zaman geçirdim.

s:.:\n |&|:g
s::  |& /_\\&:
a\ |_|\n/___\\\n VvV

Çevrimiçi deneyin!

Yarım yıl sonra hızlı ileri, senaryoyu yeniden yazdım, iyi önlem almak için bir numara kullandım ve 1 byte daha kısa sürdüm. Şimdi bu ilerleme!

Açıklama: "GO" giriş örneği göz önüne alındığında, her adımdaki desen alanı açıklık için belirtilmiştir.

s:.:\n |&|:g
   # turn each input char into a section of the rocket (\n |G|\n |O|)
s::  |& /_\\&:
   # 's::' is a trick; the search part is actually the one from the previous 's'
   #command, i.e. a char. Only the first char, '\n', the modifier 'g' is not
   #inherited. The replace part is the head of the rocket. (  |\n /_\\n |G|\n |O|)
a\ |_|\n/___\\\n VvV
   # append the tail of the rocket, plus implicit printing at the end

  |
 /_\
 |G|
 |O|
 |_|
/___\
 VvV

3

Lua, 83 , 92 bayt

function f(x)return' |\n /_\\\n'..x:gsub('(.)',' |%1|\n')..' |_|\n/___\\\n VvV'end

print('  |\n /_\\\n'..(arg[1] and arg[1]:gsub('(.)',' |%1|\n') or '')..' |_|\n/___\\\n VvV')

Cevabınıza girdi eklemezsem. İşe yaramıyor.
nolan
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.