Tous à bord du train ASCII!
o O O ___ ___ ___ ___ ___ ___ ___ ___ ___
o | C | | O | | D | | E | | | | G | | O | | L | | F |
TS__[O] |___| |___| |___| |___| |___| |___| |___| |___| |___|
{======|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|
./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
Vous feriez mieux de vous préparer à monter dans le train, car vous êtes sur le point de construire le train sur lequel vous allez rouler. Avec une chaîne s
, sortez un train complètement formé comme décrit ci-dessus. La première chose à produire est toujours le moteur qui tirera votre chaîne, comme illustré ci-dessous:
o O O
o
TS__[O]
{======|
./o--000'
La locomotive suit les wagons contenant chaque personnage de votre précieuse cargaison. Pour éviter toute confusion lors du déchargement, votre société vous a demandé d'étiqueter l'extérieur de ces wagons. Les voitures en question ressembleront toujours à ceci:
___
| # |
|___|
_|"""""|
"`-0-0-'
Où le #
est représentatif du personnage qui se trouve dans la soute "cargo". Le chaînage du moteur à chaque voiture fait également partie de votre travail, car vous avez été chargé de superviser la fluidité et le succès de toute cette expédition. Donc, une fois que vous avez étiqueté toutes les voitures et que le moteur est sur les rails, vous devez vous assurer que le train est assemblé et prêt à rouler.
Règles
- La seule entrée que votre programme devrait prendre est une seule chaîne.
- Le moteur doit toujours être sorti, même si votre envoi est vide.
- Chaque voiture ne peut contenir qu'un seul personnage, ne poussez pas votre chance, vous risqueriez d'endommager les marchandises.
- Vous n'avez besoin que de prendre en charge les caractères ASCII imprimables suivants:
_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Si vous en faites plus, c'est très bien aussi, mais c'est le strict minimum. - Un ou deux espaces de fin sont acceptables, de même qu'un simple retour à la ligne.
- C'est le code-golf ascii-art , le plus petit nombre d'octets gagnés.
Réponses:
05AB1E ,
101 à99 octetsNaive première tentative.
Essayez-le en ligne!
la source
JavaScript (ES6),
149144 octetsJe ne pense pas que le moteur lui-même puisse être compressé, mais c'est peut-être possible.
Extrait de test
Afficher l'extrait de code
la source
Befunge,
276270 octetsEssayez-le en ligne!
Explication
La voiture et le moteur sont codés sous forme de deux ensembles de cinq chaînes sur les lignes 3 à 12. Les valeurs de caractère sont décalées de 1 afin d'éviter de devoir traiter les guillemets doubles qui ne peuvent pas être utilisés dans une chaîne Befunge.
Le code fonctionne en construisant l'ensemble des caractères nécessaires pour rendre le train sur la pile. Pour chaque ligne de sortie, une chaîne de voiture appropriée est d'abord ajoutée à la pile, répétée autant de fois que nécessaire pour le chargement, puis une copie de la chaîne de moteur appropriée.
Une fois que chaque ligne est construite, une paire de flèches vers le bas situées à gauche des chaînes est remplacée par une flèche vers la droite. La prochaine itération de la boucle suit un chemin différent dans le code, en utilisant une paire de chaînes différente pour la voiture et moteur.
Une fois que toutes les données ont été créées sur la pile, une dernière boucle de rendu écrit les caractères, en soustrayant 1 à chaque fois pour prendre en compte le codage initial.
En prime, la source est conçue sous la forme d'une tourelle , au cas où le train serait attaqué.Les golfeurs ont détruit ma tourelle.la source
PHP,
218 211 204 187183 octetsPrend la contribution de STDIN; courir avec
-nR
.Compresser le moteur ou le wagon demanderait plus de code à décompresser qu'il n'en économiserait sur le stockage.
Je ne vois plus de potentiel ici.
la source
a&$c=$argn
au lieu de""<$c=$argv[1]
Python 2, 176 octets
Exemple:
donne
la source
Powershell,
167166 octetsExemple:
Peut-être invalide! S'il est exécuté sans argument, il essaiera d'imprimer une chaîne vide et ressemblera à ceci:
Si exécuté avec une chaîne d'entrée vide, il retournera correctement cependant:
(un peu) Ungolfed:
La compression la plus courte dans Powershell sera
+'c'*x
où c est le caractère et x est le nombre de répétitions, et ce n'est que pour les répétitions en tête ou en tête, toute répétition de chaîne centrale nécessitera un extra+
et un extra"
- il n'y a donc aucun point en cela Je peux voir la compression économiser de l’espace, et le seul jeu de caractères répété___
est de 3 caractères seulement.Explication:
$l=($a=$args[0]).Length
Prenez le premier argument, mettez-le dans $ a, puis prenez la longueur de $ a et mettez-le dans $ l, ce sont les seules variables dont vous avez besoin." o O O"+" ___ "*$l
la plupart des autres bits suivent ce format de la partie gauche puis de la partie droite multiplié par le nombre de caractères requis." o "+([char[]]$a|%{" | $_ |"})
loop (|%{}
) via $ a en tant que tableau de caractères, doncforeach (char $_ in $a)
pour une version non-pipeline, mettez le caractère dans le texte.C'est une approche extrêmement simple, mais comme je ne trouve pas un bon moyen de compresser les chaînes au-delà, cela semble être le plus utile.
sauvé 1 Byte grâce à briantist! et ici je pensais que cela ne serait pas plus court ..
la source
[char[]]$a
en$a[0..$l]
:)$l
et que je l' oublie totalement. Merci pour ça!Java, 361 octets
Exemple
la source
interface C{static void main(String[]v){String n="\n",b=" o O O ",c=" o ",d=" TS__[O] ",e=" {======|",f="./o--000'";for(String x:new java.util.Scanner(System.in).nextLine().split("")){b+="___ ";c+="| "+x+" | ";d+="|___| ";e+="_|\"\"\"\"\"|";f+="\"`-0-0-'";}System.out.print(b+n+c+n+d+n+e+n+f);}}
( 318 octets ) ou même plus si vous remplaceznew java.util.Scanner(System.in).nextLine()
parv[0]
une entrée alternative ( 279 octets ). Essayez-le ici .Perl, 137 octets
132 octets de code + 5 octets pour les
-pF
drapeaux.ascii_train.pl
:Notez que j'ai ajouté
-a
flag dans le code, mais c'est uniquement parce que les anciennes versions de Perl exigent-a
quand-F
est utilisé.Pour l'exécuter:
L'entrée doit être fournie sans nouvelle ligne (avec
echo -n
par exemple).Explications:
D'après ce que j'ai vu, c'est à peu près la même idée que la réponse JavaScript d'ETHProduction.
Il n'y a pas grand chose à faire: malheureusement, les schémas sont un peu trop courts pour rendre l'
x
opérateur digne d'être utilisé.Tout d'abord,
s/./ | $& | /g
entoure chaque caractère de l'entrée avec|
(et des espaces) pour former le deuxième niveau du train.Ensuite, à l'intérieur de cette longue chaîne, tout ce qui se situe entre a
!
et une nouvelle ligne est un motif que nous souhaitons répéter pour construire les voitures. Cette répétition est faite grâce à la regexs/!(.*)/$1x@F/ge
. (J'ai utilisé!
parce que l'entrée ne peut pas le contenir).la source
C #, 277 octets
Golfé:
Ungolfed:
Essai:
Et...
la source
C # 221 octets
rien de spécial ne se passe ici .. il suffit de créer chaque ligne et de les joindre avec de nouvelles lignes.
la source
C,
217212208 octetsEssayez-le en ligne
Sortie:
la source
SOGL V0.12 ,
5756 octetsEssayez-le ici!
Explication:
la source
Jq 1.5 , 178 octets
Étendu
Échantillon échantillon
Essayez-le en ligne
la source
Excel VBA, 218 octets
Fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la plage
[A1]
et les envoie à la fenêtre immédiate VBEFormaté pour la lisibilité
Exemple de sortie
la source