Compte tenu de deux entrées - l' un d'eux une chaîne de caractères ASCII imprimables non vide (y compris l' espace, à l' exclusion newline), l'autre étant l' une des deux valeurs distinctes, cohérentes de votre choix ( 1 / 0
, l / r
, left / right
, etc.) - sortie un art ASCII avion bannière de la chaîne pointant vers la gauche ou la droite. Par souci de cohérence, je vais utiliser left
et right
tout au long de cette description du défi.
L'avion est soit |-DI>-/
( left
) soit \-<ID-|
( right
). Comme la bannière est claire, elle se compose des caractères de la chaîne d'entrée séparés par des espaces, de gauche à droite ( left
) ou de droite à gauche ( right
), et entourés d'une boîte de la forme
/--/
---< <
\--\
ou
\--\
> >---
/--/
Remarque il doit y avoir un espace entre le début / fin du message et les >
, <
caractères.
Par exemple, voici le message HAPPY BIRTHDAY!
et la direction left
:
/-------------------------------/
|-DI>-/---< H A P P Y B I R T H D A Y ! <
\-------------------------------\
Voici le message PPCG
et la direction right
. Notez que les lettres apparaissent "à l'envers" lorsqu'elles sont vues de ce côté de la bannière:
\---------\
> G C P P >---\-<ID-|
/---------/
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
eval
- Entrez un programme qui génère un plan orienté vers la gauche pour la gauche, et un programme qui génère un plan orienté vers la droite pour la droite.Réponses:
JavaScript (ES6),
141138 octetsLa chaîne et la direction sont entrées via la syntaxe de curry.
'/\n|-DI>-/---< '
pour gauche,'/\n|-DI<-\\---> '
pour droite.Afficher l'extrait de code
la source
eval
... il suffit de fournir les sources de fonctions gauche et droite comme vos deux valeurs de votre choix. (Je pensais qu'il y avait une méta là-dessus mais je ne la trouve pas.)eval
"truc" serait cette faille dans l'esprit, même si elle n'est pas explicitement mentionnée. Cependant, cette réponse est plutôt intelligente.eval
je devais poster une réponse sérieuse . Une solution de contournement pour de futurs défis comme celui-ci pourrait être d'inclure des entrées dans le décompte d'octets.Perl 5 , 149 +1 (-p) = 150 octets
Essayez-le en ligne!
Entrée deux lignes. Le premier est le message. Le deuxième est 0 pour la gauche, 1 pour la droite.
la source
V ,
73, 65 octetsEssayez-le en ligne!
Pas le meilleur score, mais c'est parce que près de la moitié de cela vient de l'inversion de la sortie.
Hexdump:
Prend la chaîne comme entrée dans le tampon et la direction comme
0
pour gauche et1
pour droite comme arguments de ligne de commande.la source
05AB1E , 63 octets
Essayez-le en ligne!
Basé sur des bogues qui pourraient être corrigés à l'avenir.
la source
0
sur la deuxième ligne en a1
.Fusain ,
44403935 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. La première entrée est 1 pour la droite et 0 pour la gauche, la seconde est la chaîne de bannière. Edit:
enregistré 1 octet en utilisantReflectButterfly(:Up)
comme aactuellement un bug de positionnement du curseur, mais j'ai enregistré 4 octets supplémentaires en inversant la direction d'impression, et maintenant peu importe ce que j'utilise.ReflectButterfly(:Down)
3834Version 32 octets si la mise en miroir de la bannière était autorisée:Essayez-le en ligne! Le lien est vers la version détaillée du code. La première entrée est 0 pour la droite et 1 pour la gauche. Explication:
Imprimez l'avion.
Imprimez la moitié supérieure de la boîte (notez l'espace de fin).
Si la deuxième entrée est différente de zéro, inversez le sens d'impression, sinon réfléchissez le plan et la boîte.
Imprimez le message avec un espacement supplémentaire (notez l'espace de fin). Le curseur se trouve à l'extrémité de la boîte par rapport à l'avion, le message doit donc être inversé.
Réfléchissez pour obtenir la moitié inférieure de la boîte.
la source
Gelée ,
6865 octetsEssayez-le en ligne!
Prend 1 pour la droite, 0 pour la gauche.
-3 octets grâce à @JonathanAllan ( grr j'oublie toujours
AB+
fait la même chose queB+@A
)la source
³K“|-DI>-/---< “ < ”j
enregistre un octet;LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡
enregistre 2 autres de la même manière.Fusain , 56 octets
-8 octets grâce à totalement humain et Erik l'Outgolfer!
Essayez-le en ligne!
La correction des cas mentionnés par dzaima a eu un impact considérable sur le nombre d'octets. 36 octets si nous sommes autorisés à inverser les caractères comme
<
et/
.la source
' '.join(s)
marche. Cela peut certainement être utilisé dans le charbon de bois?Join
fonctionne également sur les chaînes.' '.join
in Charcoal. Je vous reconnais tous les deux.SOGL V0.12 ,
554743 octetsEssayez-le ici!
0 pour gauche et 1 pour droite
la source
Python 2 ,
137136133 octetsEssayez-le en ligne!
1
pour droite et0
pour gauchela source
1-2*d
par-d|1
(nierd
xor1
).*list('></\\<>')[d::2]
PHP, 175 octets
Exécutez avec
-nr
, premier argument =0
pour faire face à droite ou1
à gauche et deuxième argument = texteou essayez-le en ligne .
la source
Perl 5 , 126 octets
Code de 124 octets + 2 pour
-pl
.Essayez-le en ligne!
la source
Corea , 51 octets
Essayez-le en ligne!
Explication
Le programme est composé de quelques parties:
1: Initialisation
2: texte brut
Le texte suivant est sorti dans le champ de contenu:
3: postambule
la source
Excel VBA, 198 octets
Fonction de fenêtre immédiate VBE anonyme qui prend l'entrée sous forme de chaîne de
[A1]
et int de plage[B1]
où1
indique que l'avion est à gauche et0
indique que l'avion est à droite.la source
Google Sheets, 210 octets
Fonction de feuille de calcul anonyme qui prend l'entrée en entrée comme chaîne de [A1] et int de la plage [B1] où 1 indique que le plan est à gauche et 0 indique que le plan est à droite.
la source