Ce n'est pas sorcier


59

Ecrivez un programme ou une fonction prenant une chaîne d'une seule ligne. Vous pouvez supposer qu'il ne contient que de l' ASCII imprimable . Imprimer ou renvoyer une chaîne d'une fusée d'art ASCII telle que

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

avec la chaîne d'entrée écrite de haut en bas sur le fuselage. Dans ce cas, l'entrée étaitEarth . La hauteur de la fusée (flammes comprises) correspond toujours à la longueur de la chaîne plus cinq.

Chaque ligne de la sortie peut avoir jusqu'à deux espaces de fin et il peut y avoir un seul retour à la ligne facultatif. Le code le plus court en octets gagne.

Plus d'exemples:

[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

Classement


1
Connexes . Il y en a peut-être d'autres qui sont assez proches pour que cela compte comme une dupe.
Peter Taylor

2
Espaces @Sefa oui. Non aux autres espaces. Comme l' indique le wiki lié .
Les passe-temps de Calvin le

6
D'oh, j'ai vu le titre et j'attendais quelque chose à propos de la chirurgie du cerveau. :(

17
Et si le bas pointe vers le ciel, vous n'irez pas dans l'espace aujourd'hui.
AstroDan

4
"Cela a fonctionné dans le programme spatial Kerbal ..."
Urne Octopus Magique

Réponses:


55

Excel VBA, 142 179 175 160 155 octets

Instruction:

Définissez la feuille de calcul d'Excel où la cellule A1 est entrée et la colonne C comme sortie. Définissez l'alignement du texte dans la colonne C au centre . Écrivez et exécutez le code suivant dans la fenêtre Immédiate:

[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 le code:

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

Sortie:

enter image description here

Remarque: la police et la couleur ne sont qu'un choix personnel.


15 octets sauvés grâce à la suggestion de edc65. Merci.

5 octets sauvés en raison de la suggestion de TaylorScott. Merci.


Économisez 15 octets ajoutant "_"à T. Comme ceci[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
edc65

(ok il y a une erreur dans mon code et il est trop tard pour l'éditer. Mais vous voyez l'idée)
edc65

@ edc65 Je ne comprends pas l'idée. Votre code est exactement le même avec le mien alors que dois-je éditer pour économiser 15 octets?
Anastasiya-Romanova

1
154 octets:[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
Ou vous pouvez le réduire à 151 octets, en gardant l'aspect centré[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 octets

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

101
slurp.chomp.comb... Perl est bizarre.
Mego

14
SLURP!!! CHOMP !!! PEIGNE!! Voici le monstre Perl!
Stommestack

Notez qu’en utilisant une fonction et une concatanation vous pouvez couper beaucoup: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 octets
user0721090601

Mais vous pouvez aller encore plus bas en empruntant aux JS: tio.run/…
user0721090601

22

JavaScript (ES6), 54

Simple

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

Tester

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

En fait, 40 octets

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

Oui, ces nouvelles lignes sont supposées être là.

Essayez-le en ligne!

Explication:

Les nouvelles lignes sont représentées par \npour faciliter le formatage

"/___\\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
Votre programme ressemble terriblement à une fusée explosée.
CorsiKa

15

C, 83 , 82 octets

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

Test principal:

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

7
J'ai élaboré ma propre solution C, et il s’est avéré que c’est exactement le vôtre, caractère par caractère. +1 de moi.
Cody

Sur le téléphone et trop paresseux pour SSH, cela n’a donc pas été testé, mais devrait fonctionner. Enregistre 2 octets (si j'ai correctement compté):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

En fait, @algmyr enregistre un octet, car le dernier putsne doit être exécuté qu'une seule fois, pas après chaque printf. Mais oui, 1 octet enregistré, yay!
Stefano Sanfilippo

Droite. Je vais blâmer cela au golf alors que j'aurais dû dormir.
Algmyr

N'est-ce pas 88 octets?
gastropner

10

Python 2, 93 66 62 61 octets

Une FGITW. Peut probablement être fortement joué au golf. Suggestions bienvenues.

Modifier: 27 octets grâce à Mego. 4 octets grâce à TheBikingViking. 1 octet grâce à user3030010.

Essayez-le en ligne!

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

9

PHP, 73 72 69 62 octets

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

Prend la chaîne à imprimer sur le fuselage en tant que premier argument de la ligne de commande lorsque le script est appelé.

Améliorations:

  1. Sauvegardé un octet en remplaçant \ n par une vraie nouvelle ligne LF dans le premier argument de join.
  2. Sauvegardé de trois octets supplémentaires en ajoutant la base de fusée avec un seul soulignement à l'entrée
  3. Grâce à Ismael Miguel : économisez 7 octets supplémentaires en tirant parti du fait que PHP était auparavant le "préprocesseur hypertexte" afin que vous puissiez générer autant de texte que vous le souhaitez et démarrer le code quelque part au milieu.

Essayez-le en ligne!

C'était amusant! :-)

Exemples d'appels:

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


Beau golf! J'ai totalement oublié cette possibilité. Je vous remercie!
YetiCGN

Je vous en prie. En outre, j'ai enregistré 2 octets sur la première ligne. Vous avez eu 2 espaces de fuite supplémentaires dessus. C'était quelque chose que je ne m'attendais pas à trouver, je dois dire.
Ismael Miguel

1
Je sais, c'était vraiment idiot mais aussi très difficile à repérer. J'ai seulement remarqué une fois que j'ai trouvé 64 octets sur votre version améliorée et que je devais savoir pourquoi.
YetiCGN

8

brainfuck , 179 octets

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

Essayez-le en ligne!


@ user00001 Cette phrase est utilisée par tous les musulmans du monde entier, pas seulement par les terroristes. Pensez-vous vraiment que les terroristes représentent tous les musulmans?
Leaky Nun


8

Ruby, 57 55 octets

-2 octets par @ValueInk
-5 octets en supposant qu'il n'y a pas de nouvelle ligne dans l'entrée, comme suggéré par @manatwork. Une entrée sans nouvelle ligne peut être fournie par exemple avec echo -n, comme echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Ancienne version, suppose que la nouvelle ligne est entrée:

Ruby, 62 60 octets

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

Selon le commentaire du propriétaire de la question, l'entrée ne contiendra pas de caractère de nouvelle ligne, vous pouvez donc la supprimer .chop.
manatwork

@manatwork soignée, merci :)
daniero

Si vous utilisez des chaînes de guillemets simples, vous devriez pouvoir remplacer les deux \\ par \ . (Dans les chaînes entre guillemets simples, les caractères ne sont pas échappés, sauf pour \'.
Valeur Encre

7

Haskell, 58 octets

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

7

Retina , 44 37 octets

7 octets grâce à Martin Ender.

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

Essayez-le en ligne!



@xQbert fonctionne pour moi, pouvez-vous joindre un lien TIO?
Leaky Nun

bizarre, ça marche très bien pour moi maintenant ... ah mon erreur a eu une nouvelle ligne à la fin.
xQbert

Retina est la seule langue que je connaisse qui, en ajoutant une nouvelle ligne, peut complètement changer le programme.
Caird coinheringaahing

6

Gelée , 37 36 octets

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

Même score qu'une entrée existante, mais utilise une nouvelle fonctionnalité amusante: ŒBla version vectorisée de ŒḄBounce. Le rebondissement parcourt une liste à la fin puis en arrière, x[:-1]+x[::-1]par exemple:bounce("codegolf") == "codegolflogedoc" .

-1 octet grâce à Dennis (utilisez la version vectorisée de bounce)

Comment?

;”_⁾ |;ЀŒ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

Testez-le sur TryItOnline


2
ŒBest l'abréviation de ŒḄ€.
Dennis


5

V , 41, 39 octets

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

Essayez-le en ligne!

Notez que pour une raison quelconque, l'interprète en ligne produisait des résultats inattendus, j'ai donc poussé une version de débogage vers l'interpréteur en ligne qui s'exécute beaucoup plus lentement. Il devrait produire les bons résultats maintenant.

Puisque ce programme contient des caractères non imprimables, voici un 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

Sympa mais ça ne gère pas les espaces dans "L'espace, la dernière frontière", c'est vrai.
xQbert

5

R, 163 octets

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

Je n'aime pas vraiment le fait que j'ai dû mettre des espaces dans la dernière ligne, mais bon!


5

PowerShell v2 +, 59 55 51 octets

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

Essayez-le en ligne!

Abuse la valeur par défaut Write-Outputen fin d’exécution pour coller une nouvelle ligne entre chaque élément, car ce ne sont que des chaînes littérales sur le pipeline. Le seul bit "difficile" est une boucle passant par chaque élément de l'entrée $argssous forme de tableau de caractères pour obtenir le corps de la fusée.

Utilise les nouvelles lignes littérales, comme l'a souligné ConnorLSW, pour économiser des octets.
-4 plus d'octets grâce à Veskah.


vous pouvez mettre de nouvelles lignes dans la chaîne pour économiser 3; le shell et ise s'exécutent \r
correctement


4

PowerShell, 70 octets

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

Définissez $ a à entrer.

S'il doit prendre une entrée autre qu'une variable, il peut être connecté:

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

Exemple:

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

4

Mathematica, 50 octets

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

Fonction anonyme. Prend une liste de caractères en entrée et retourne une chaîne en sortie.


4

PHP, 108 100 88 octets

-8 octets grâce au chat d'affaires

-12 octets grâce à YetiCGN

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

assez simple

Ideone


1
Vous pouvez économiser beaucoup d'octets en utilisant à la foreach(str_split($a)as$c)place de l'autre pour la boucle. En outre, vous pouvez mettre le $ c directement dans la chaîne si vous utilisez des guillemets doubles:echo" |$c| ....";
Business Cat

@ BusinessCat C'est vrai, merci les doubles guillemets ne fonctionnaient pas avec le style de tableau pensé à cause des crochets non interprétés
Sefa

Qu'en est-il de l'expression régulière? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
manatwork

1
Pourquoi même mettre une fonction autour de lui? Remplacer $aavec $argv[1]et exécuter à partir de la ligne de commande le rend beaucoup plus court.
YetiCGN

@manatwork C'est probablement une alternative valable, mais comme je ne le comprends pas et que ce n'est pas dans le même esprit que le mien, je vous laisserai le poster.
Sefa

4

C #, 106 97 80 74 octets

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

Je n'ai pas le C # 6 pour essayer ce qui précède mais je crois que cela fonctionnera

7 octets sauvés grâce à Kevin Cruijssen

Merci à manatwork de m'avoir dirigé dans la bonne direction pour économiser 17 octets

Économisé 6 octets grâce au lait


+1 Au fait, les espaces blancs de fin sont optionnels, vous pouvez donc les remplacer par: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 octets )
Kevin Cruijssen

1
@KevinCruijssen J'étais juste en train de mettre à jour ceci après vos commentaires à ma réponse précédente :) Merci pour l'aide
TheLethalCoder

Vous pouvez enregistrer certains caractères en utilisant un seul littéral de chaîne à l'intérieur Select: " |"+c+"|\n"c+"|\n |"avec le déplacement du `|` après après {}.
manatwork

@manatwork Je n'arrive pas à faire en sorte que ça fonctionne
TheLethalCoder

1
La nouvelle ligne correspond à 1 octet par rapport à \n2 octets. Vous économiserez donc 5 octets supplémentaires en les remplaçant par de nouvelles lignes. Oui, si vous utilisez Visual Studio, les nouvelles lignes auront par défaut une longueur de 2 octets, mais vous pouvez ouvrir le fichier source dans un éditeur hexadécimal (Visual Studio en a un) et supprimer les caractères de retour chariot. La sortie sera toujours la même.
lait

4

C,  131  , 121 octets

#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");}

Vous pouvez supprimer trois caractères en déplaçant p=sdans l'initialisation et à l' aide à l' pintérieur 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

ok .... je ne sais pas pourquoi "scanf ("% s ", & s)" au lieu de "scanf ("% s ", s)" affiche à la fin le résultat correct ... à la fin car scanf ne reçoit pas espaces que je préfère, le danger devient () ...
RosLuP

2
S'il vous plaît ne vandalisez pas vos messages. Je vous remercie!
NobodyNada

3

Gelée, 38 37 octets

;”_“|“|¶”jЀ“  |¶“/_\¶”;K;“/___\¶ VvV

Essayez-le en ligne!

Même idée qu'avec ma réponse Pyth, mais cela peut probablement être joué au golf.


3

05AB1E , 50 47 43 37 octets

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

Essayez-le en ligne!

Sauvegardé 9 octets grâce à Adnan.


String peut également accepter les nouvelles lignes dans 05AB1E: p, comme ceci .
Adnan

@Adnan Nice, merci! Une idée sur la façon de mieux contourner l'entrée vide?
Emigna

Je pensais à une approche avec IðJau début du programme, qui comprend également la base du fuselage.
Adnan

@Adnan Excellente idée. J'ai essayé avec «plus tôt sans trop de chance. C'est beaucoup mieux cependant.
Emigna

Supprimer Uet remplacer Xpar senregistre également un octet :).
Adnan

3

Kotlin, 68 octets

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

Assez simple. Utilise une chaîne multiligne et un remplacement de regex. C'est un lambda avec le (String)->Stringtype. Tester:

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

3

Gema, 50 caractères

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

Échantillon échantillon:

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

3
Je pense que vous
manquez

Aie. Dumb miss. Merci @TheLethalCoder.
manatwork

1
+1 pour me présenter à une nouvelle langue (pour moi) (non-golfeuse).
Jordanie

3

FRAPPER 84 70

14 sauvés grâce à manatwork

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

Plus de la moitié des octets servent à ajouter le nez et le moteur.


Pourquoi grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. En fait, je ne vois aucune raison d'utiliser catet echonon plus. Serait plus court transformé en sedsolution pure .
manatwork

Avec pure sed, vous n’obtenez aucune sortie si vous n’avez pas d’entrée
Riley

Doh. Tu as raison. Désolé, j'ai oublié cette partie de l'exigence.
manatwork

@manatwork je l'ai oublié lors de mon premier essai aussi.
Riley

Pour référence ultérieure, évitez d’utiliser des balises <pre> <code>. Utilisez 4 espaces avant le code dans le futur, car cela échappe automatiquement au formatage de Markdown. J'ai maintenu la mise en forme actuelle en raison du barré, mais vous pouvez également laisser cette information dans l'historique des modifications pour les curieux.
Addison Crump

3

GolfScript, 61 51 octets

Mon premier code golf, j'espère que c'est assez bon.

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

Explication

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

Essayez-le en ligne!


3

Vim, 41 39 octets

Ici, <End>c'est littéralement la touche "Fin".

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

Unprintables donc:

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

3

GNU sed , 54 49 48 bytes

Ce fut ma première réponse à un défi sur ce site. La solution est simple, principalement l’impression. J’ai donc passé un certain temps à faire en sorte qu’il ne puisse plus être joué au golf.

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

Essayez-le en ligne!

Un an et demi plus tard, j'ai réécrit le script, utilisé un truc pour faire bonne mesure et je l'ai joué au jeu de moins d'un octet. Maintenant c'est des progrès!

Explication: l'espace de modèle à chaque étape est mentionné pour plus de clarté, étant donné l'exemple d'entrée "GO"

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 octets

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')

Si je n’ajoute aucune contribution à votre réponse. Ça ne marche pas.
nolan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.