MODIFIER
Il semble qu'il y ait eu une certaine confusion à la suite de ma faute de frappe dans le message d'origine qui utilisait un o minuscule pour définir le plan, puis un majuscule plus tard. Malheureusement, ce bug n'a pas été détecté dans le bac à sable. Étant donné que de nombreux membres ont écrit des réponses avec les deux et que la faute de frappe était de ma faute, j'autoriserai les majuscules ou les minuscules dans la définition de l'avion. J'ai ajouté une nouvelle règle pour cela.
Contexte
J'aime les animations d'art ascii comme j'ai tendance à les appeler alors en voici une autre. Je ne pense pas que ce soit trop difficile à mettre en œuvre, nous espérons donc obtenir des réponses courtes et intéressantes.
À tous les autres membres de la communauté
Si vous améliorez votre réponse, veuillez modifier votre nombre d'octets comme
ancien décompte d' octets nouveau décompte d'octets
afin que nous puissions voir vos progrès. Merci!
Défi
Voici un plan ascii
--O--
Voici une piste ascii
____| |____
L'avion démarre à 5 nouvelles lignes au-dessus de la piste. Pour éviter tout affrontement entre les systèmes métriques et impériaux et en faire un véritable défi international, je ne mentionnerai pas les mètres ou les pieds. Exemple:
--O--
____| |____
L'avion doit atterrir exactement au milieu de la piste comme indiqué ci-dessous:
____|--O--|____
Contribution
La position horizontale initiale du plan est définie par une entrée entière qui est utilisée pour référencer la pointe de l'aile gauche, c'est-à-dire qu'elle est comprise entre 0 et 10 inclus.
Sortie
Chaque étape du vol des avions doit être montrée. Exemple ci-dessous (entrée = 10):
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
____|--O--|____
Pour simplifier les choses, nous ignorons les lois de la perspective. La piste reste de la même taille à mesure que vous vous rapprochez.
Règles
- Mise à jour Le milieu de l'avion peut être un o majuscule ou minuscule, mais celui qui est choisi doit être cohérent dans tout le code. Si votre langue ne prend pas en charge les caractères ci-dessus, n'hésitez pas à utiliser uniquement des caractères ascii alternatifs.
- L'avion descend 1 ligne par image.
- L'avion ne peut se déplacer que d'un espace vers la gauche ou la droite chaque fois qu'il descend d'une ligne. Il n'a pas à se déplacer sur chaque ligne de descente. Tant qu'il se termine sur la piste, c'est à vous de décider quand il se déplace à droite ou à gauche. Tu es le pilote!
- Aucune gestion des erreurs requise. Vous pouvez supposer que l'entrée sera toujours un entier valide de 0 à 10 inclus.
- La sortie doit être composée uniquement des caractères indiqués ci-dessus (si votre langue ne les prend pas en charge, voir la première règle éditée) et doit être de la même taille, c'est-à-dire qu'elle doit commencer 6 lignes de haut par 15 caractères de large. La hauteur peut diminuer à mesure qu'elle progresse comme dans l'exemple ci-dessus.
- Le programme ou la fonction est correct mais doit produire une sortie comme indiqué ci-dessus.
- Les espaces de début / fin / les nouvelles lignes me conviennent.
- N'hésitez pas à effacer l'écran entre les images de sortie si vous le souhaitez. Ce n'est pas une exigence.
- Les failles standard interdites comme d'habitude (bien que je ne pense pas qu'il y en ait beaucoup qui aideraient à ce genre de défi).
- Il s'agit du code golf, donc la réponse la plus courte est évidemment la gagnante et obtiendra probablement la plupart des votes, mais ne sera pas nécessairement acceptée comme la meilleure réponse si une solution vraiment intéressante se présente dans un langage inattendu, même si elle est plus longue. N'hésitez pas à publier tout ce qui respecte les règles tant qu'il fonctionne.
Implémentation de référence non golfée dans Python 2 disponible sur Try it online! afin que vous puissiez voir à quoi il ressemble pour différentes valeurs d'entrée.
Réponses:
TI-BASIC, 61 octets
la source
TI-BASIC, 62 octets
Notez que TI-BASIC ne prend pas en charge _ ou | et donc j'ai remplacé par un I majuscule et -. Cela ne devrait pas affecter le nombre d'octets.
la source
Python 2, 107 octets
Essayez-le en ligne
Codez simplement en dur la dernière ligne de l'avion d'atterrissage. Il peut probablement être joué au golf en réutilisant des pièces antérieures ou en étant intégré à la boucle.
la source
Perl, 94 octets
93 octets de code +
-p
indicateur.Essayez-le en ligne!
la source
}{
(et le$"
dérangement avec la coloration syntaxique).JavaScript (ES6), 108 octets
Essaye-le
Afficher l'extrait de code
Usage
Il suffit d'appeler
f
avec l'index de l'avion.Sortie
la source
Scala,
224181 octetsEDIT : Je ne savais pas que vous pouviez faire
"string"*n
pour le répéter n fois! Scala continue de me couper le souffle. Manquer leif(t>0)
au lieu deif(t==0)
était une erreur de débutant. Merci pour les conseils, Suma !Remarques originales:
J'ai pensé qu'une solution récursive serait amusante à essayer. Je suis relativement nouveau à Scala, donc je suis certain que c'est loin d'être optimal.
la source
:Unit=
. L'omission du signe égal définira le type de retour sur Unité.o
dans la première ligne?. Et commei
c'est toujours> = 0, vous pouvez passeri!=0&&i==t
ài>0&i==t
(3e ligne).Lot, 230 octets
x
est le nombre d'espaces à supprimer depuis le début de la chaînes
, donc je soustrais le paramètre à 10. La dernière ligne est le lot le plus prochex-=sgn(x-5)
.la source
sed, 181 octets + 2 pour les
-nr
drapeauxNon golfé
Usage:
$ echo 2 | sed -nrf flightsim.sed
la source
Rétine ,
8683 octetsEssayez-le en ligne!
Il y a probablement une sorte de compression que j'aurais pu utiliser sur la piste et l'espace vide au-dessus, mais tout ce que j'ai essayé est venu plus cher que le texte en clair (dans Retina ¶ est une nouvelle ligne, donc vous pouvez voir l'état initial en texte clair sur le deuxième ligne).
la source
Scala ,
177, 163, 159137 octetsBasé sur une autre réponse , avec des réductions importantes.
la source
Perl 6 ,
979081 octetsContrairement à ce à quoi il ressemble, il génère la version * en minuscule du plan (
--o--
), comme le permet la description de tâche mise à jour.Essayez-le en ligne!
Comment ça marche
Opérateurs de chaîne de bits FTW!
Cela fonctionne car les opérateurs de chaîne au niveau du bit utilisent les valeurs de point de code des caractères à une position donnée dans deux chaînes, pour calculer un nouveau caractère à cette position dans la chaîne de sortie.
Dans ce cas:
Pour un
O
plan en majuscules , nous aurions pu utiliser~^
(chaîne XOR au niveau du bit), avec un masque de plan de\r\ro\r\r
(+4 octets pour les contre-obliques):La formule du décalage de l'avion
h + v*(17 - h/5)
, a été simplifiée à partir de:la source
Python 2 , 160 octets
Essayez-le en ligne!
Voici l'implémentation de référence qui a baissé à 160 contre 384. Encore du chemin à faire je pense. Juste publié pour le plaisir et pour encourager une meilleure réponse Python.
la source
while-~x
?i
asi+=(i<5)-(i>5)
Befunge-93,
136130 octetsEssayez-le en ligne!
Explication
la source
Rubis, 94 octets
Imprime la position de l'avion suivie de nouvelles lignes puis de l'aéroport. Il déplace ensuite l'avion de 1, -1 ou 0, selon sa position par rapport à 5.
Après avoir bouclé les 5 fois ci-dessus, il imprime l'avion à l'aéroport.
la source
8ème ,
177172 octetsLe mot
f
attend un entier compris entre 0 et 10.Usage
Explication
la source
Mathematica, 111 octets
Fonction anonyme. Prend un nombre en entrée et renvoie une chaîne en sortie. Pourrait probablement être joué au golf plus loin.
la source
QBIC ,
939184 octetsSuppression de quelques octets en remplaçant la déclaration de X $; optimisé la boucle FOR qui imprime la distance au-dessus du sol. L'explication ci-dessous concerne l'ancienne version, mais elle fonctionne essentiellement de la même manière.
Pour les tests (et l'esthétique) j'avais une version légèrement différente, à 103 octets:
Ceux-ci sont fonctionnellement identiques. Le second a en plus que l'écran est effacé entre les images et qu'il s'arrête pendant 0,5 seconde entre les images.
Exemple de sortie
Notez que j'ai ajouté deux nouvelles lignes entre les images. Le code le plus joué ci-dessus n'ajoute pas de lignes vides entre les images, la plus froide efface l'écran.
Explication
Comme je pense que cela touche à beaucoup de choses que j'aime vraiment à propos de QBIC et donne un bon aperçu de la façon dont certaines de ses fonctions fonctionnent sous le capot, je suis allé un peu trop loin dans l'explication. Notez que QBIC est, à sa base, un interpréteur QBasic pour Codegolf. Le code QBIC entre - Le code QBasic sort (et est ensuite exécuté).
la source
SmileBASIC,
109105 octetsla source
PHP 7, 139 octets
toujours terriblement long
prend l'entrée de l'argument de la ligne de commande; courir avec
-r
.panne
la source