Un boulet de canon est tiré de telle sorte que, lors du premier clignement de son vol, il monte par la N
cime des arbres, pendant le deuxième clignement des yeux par la N-1
cime des arbres, etc., jusqu'au point le plus élevé de sa trajectoire. Ensuite, il commence à tomber de 1, 2, etc. cime des arbres par oeil jusqu'à ce qu'il touche le sol. Dans le même temps, le boulet de canon se déplace horizontalement avec une vitesse constante de 1 cime d'arbre / oeil.
Votre tâche consiste à dessiner la trajectoire avec des lettres consécutives de l'alphabet anglais. Si vous manquez de lettres, recommencez à partir de 'A'
. Écrire une fonction ou un programme. L'entrée est un entier N
( 1≤N≤15
). La sortie peut être une matrice de caractères sous n'importe quelle forme raisonnable, par exemple une chaîne séparée par une nouvelle ligne ou une liste de chaînes. Les lettres peuvent être toutes en minuscules ou en majuscules. Des espaces de début et de fin supplémentaires sont autorisés. Les échappatoires standard sont interdites. Un code plus court, c'est mieux.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
etP
, la coche va de 1 à droite, mais de 0 en haut ou en bas.Réponses:
05AB1E ,
33322928 octetsEssayez-le en ligne!
Explication
la source
Nú»
ou quelque chose comme ça pourrait être utilisé pour imprimer au fur et à mesure au lieu de])~.c
Stax ,
29 à24 octetsExécuter et déboguer en ligne
La représentation ascii correspondante du même programme est la suivante.
la source
R,
169163161153150110109 octetsCette approche remplit une matrice puis l’imprime.
Golfé
Merci @ Giuseppe pour 153.
Merci @JDL pour 150.
Voir le commentaire de @ Giuseppe pour 112, et quelques modifications pour 110 maintenant 109. Extraire le code original.
Si vous tracez une sortie valide, alors 73 octets
la source
Map
au lieu demapply
?lapply
au lieu demapply
. Merci pour 150row,column
paires directement avec[
plutôt que de devoir passer parmapply
(ouMap
), alors j'ai trouvé un moyen de le faire. Je me souviens aussi quewrite
existe et peut remplacercat
pour 112 octets !Python 2 ,
140135133 octetsEssayez-le en ligne!
la source
MATL , 29 octets
Essayez-le en ligne!
Comment ça marche
la source
Java (OpenJDK 8) , 121 octets
Essayez-le en ligne!
Explication
la source
C, 184 octets
Essayez-le en ligne!
Déroulé:
la source
main
pour la compiler. Sur TIO, lemain
est dans la section de pied de page.Clojure,
417319 octetsÀ un moment donné, je me suis empêtré dans
reverse
appels et abandonné l'idée de la rendre aussi courte que possible. Je voulais juste avoir une solution de travail. Voici...Sorte de non-golf
Mise à jour
Motivé par le commentaire d'Olivier, j'ai réussi à couper plusieurs
reverse
appels et à appliquer des astuces générales au golf pour couper des personnages. Aussi je créé des alias pourreverse
,map-indexed
,concat
,repeat
etstr
parce que je les ai utilisés plusieurs fois chacun.Ungolfed
Crée la fonction
c
qui accepte la valeur n et retourne une liste de lignes.la source
Charbon de bois ,
3331 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: 2 octets enregistrés grâce à @ ASCII uniquement. Explication:
Initialisez la lettre actuelle sous forme d'index dans l'alphabet majuscule sur 0.
Faites une boucle de la négation de l'entrée à l'entrée incluse.
Normalement, chaque colonne est à droite de la précédente. Cependant, il n'y a pas de colonne pour zéro. Au lieu de cela, une correction est nécessaire pour assurer l'alignement des côtés gauche et droit.
Boucle pour chaque lettre de la colonne.
Imprimer la lettre en cours.
Incrémenter l'index des lettres.
Montez ou descendez selon le côté de la trajectoire où nous sommes.
la source
Perl 5 , -n
112929088 octetsPour une fois le terriblement long
printf
semble gagner.Essayez-le en ligne!
la source
(A..Z)x9
au travail, mais la limite était trop courte! Eu cela pour 91 seulement. :)Python3 + numpy,
124115Cela crée un tableau de taille appropriée, trouve les indices de la trajectoire et leur attribue le caractère approprié.
La partie la plus complexe consiste à générer les caractères AZ, qui reposent sur une distribution très fictive de nombres dans un type chaîne.L'objet renvoyé est un tableau unicode.Edit : 9 octets enregistrés remplaçant le code numpy qui a généré les caractères AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
) avecmap
, comme suggéré ici .la source
Python 3 ,
139136 octetsEssayez-le en ligne!
Génère chaque couche de manière récursive, en fonction de la taille et du décalage.
-3 octets grâce à Jo King
la source
~
opérateur!n and ... or''
àn*' 'and ...
pour un autre octetJ ,
7875 octetsEssayez-le en ligne!
-3 grâce à ngn
la source
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 octets
Essayez-le en ligne!
Renvoie la liste des listes de caractères. Vérification primitive ici
la source
Gelée , 35 octets
Essayez-le en ligne!
la source
Yabasic , 125 octets
Une solution de base qui utilise le mode graphique pour imprimer les caractères dans la colonne et la rangée correctes de l'écran.
Cette solution utilisant le mode graphique, elle ne peut pas être exécutée sur TIO.
Sortie
Ci-dessous la sortie pour l'entrée
7
la source
Ruby ,
106103 octetsEssayez-le en ligne!
la source
QBasic 1.1 , 124 octets
Prend des commentaires et tire un canon. En raison des limitations de taille d'écran,n doit être ≤ 6 .
la source
Python 3 , 190 octets
Essayez-le en ligne!
J'ai fait de mon mieux. Faites-moi savoir si des optimisations sont possibles.
la source
k4,
7671 octetscertains réarrangements + assignations pour économiser 5 octets
une demi-heure d'effort avec quelques efforts pour supprimer quelques octets, mais il y a probablement beaucoup plus à faire ici. y reviendrai. défi amusant!
la source