introduction
L'idée est d'utiliser le caractère astérisque (étoile) *
pour afficher une étoile ascii-art à une dimension spécifiée. La dimension est un nombre d'entrée supérieur ou égal à qui spécifie la hauteur en lignes du point supérieur de l'étoile. Les étoiles ici sont destinées à être des étoiles à six pointes de plus grandes tailles, plus belles du point de vue de l'image.
Dans tous les cas, la représentation ascii des étoiles doit apparaître sous la forme de deux triangles qui se chevauchent, comme indiqué dans les exemples suivants.
Paramètres
L'image et le tableau de données suivants décrivent les attributs des sept premières tailles de l'étoile. Chacun des paramètres croît dans une progression arithmétique à mesure que augmente, sauf que est différent .
Exemples
Pour une entrée de 1 (le cas dégénéré), la sortie du programme doit être la suivante:
*
*****
*****
*
Entrée de 2:
*
***
*********
*******
*********
***
*
(3)
*
***
*****
***************
*************
***********
*************
***************
*****
***
*
(5)
*
***
*****
*******
*********
***************************
*************************
***********************
*********************
*******************
*********************
***********************
*************************
***************************
*********
*******
*****
***
*
Défi
Votre tâche consiste à créer une fonction ou un programme qui acceptera le nombre N comme entrée, puis affichera l'étoile de taille appropriée en utilisant uniquement des caractères et le
*
caractère.
- Vous pouvez supposer que la valeur d'entrée est toujours un entier positif.
- La fin des espaces blancs sur les lignes de sortie est OK.
- L'algorithme du programme doit être suffisamment général pour que toute entrée produise la sortie en étoile. Des limitations pratiques existent bien sûr en raison de la taille de sortie de l'affichage.
- La sortie doit imprimer sur STDOUT.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent.
Notation
C'est du code-golf donc le code avec le plus petit nombre d'octets gagne!
Réponses:
05AB1E , 21 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
3*s≠-L·<
comme6*s≠·-ÅÉ
ou≠3/-6*ÅÉ
, mais malheureusement aucune n'est plus courte .. Belle réponse, comme toujours! :)xs3*<ŸRsLì'*×.º.C.∊
pour 19 :). J'ai menti, ça ne marche pas pour 1. Le laisser pour inspiration.Haskell , 114 octets
Construit une fonction
g
qui prend un nombre et produit uneIO
monade qui imprime l'étoile sur STDOUT. Je pense que c'est ok.Essayez-le en ligne!
Explication
Parlons d'abord de la lambda.
Cela prend un nombre,
n
pour être dessiné sous forme d'étoiles. Nous imprimons deux fois plus d'étoiles, puis 1 de plus et le garnissons à droite de la taille de l'image. Nous remplissons ceci à droite par desa
espaces pour centrer la ligne des étoiles. Nous pouvons utiliser ce lambda pour tracer chaque ligne.À partir de cette lambda, nous créons
(%)
.(%)
commence par fairemapM_
avec notre lambda pour transformer un profil en forme.Maintenant, tout ce que nous devons faire est de faire une liste du profil de l'étoile. Nous pouvons le faire en créant d'abord un triangle avec
[1..a]
, puis en le remplissant de quelques zéros++replicate b 0
. Si nous prenons le profil du triangle et l'inversons, nous obtenons l'autre moitié de l'étoile. Pour les imposer super, nous faisons juste un nouveau profil où chaque entrée est le maximum des deux triangles. C'est çazipWith max
.Nous appelons ensuite cela de deux manières: comme
3%1
pour la saisie de1
et avec(3*a-1)%a
contraire.À partir de là, nous faisons un peu de bricolage avec certaines des valeurs pour raser certains octets. Puisque
3*a-1
c'est assez long, nous compensons certaines de nos autres valeurs par 1 afin que tout s'annule et que nous obtenions le comportement souhaité à la3*a
place. À savoir, nous commençons notre liste à la2
place de1
et faisons2*n-3
au lieu de2*n-1
compenser le changement.Version alternative, 114 octets
Celui-ci construit une fonction sans point
(%)<*>min 2
Essayez-le en ligne!
Essayez-le en ligne!
Essayez-le en ligne!
la source
R ,
125107101 octetsEssayez-le en ligne!
Approche précédente (différente):
R ,
150148136135 135130128 octetsEssayez-le en ligne!
la source
Python 2 ,
1019997 octetsEssayez-le en ligne!
-2 octets, merci à Lynn
la source
i+x>n*6or
économise donc deux octets.i+x>~i/n/2%2*6*n
ou quelque chose commei+x>3*n*(~i/n&2)
(les deux 96 octets.)JavaScript (V8) ,
101108 octetsEDIT: +7 octets pour imprimer sur STDOUT
Essayez-le en ligne!
Commenté (sans
print
)la source
Gelée , 21 octets
Un programme complet acceptant un entier positif qui s'imprime sur STDOUT.
Essayez-le en ligne! Ou consultez une suite de tests .
Comment?
la source
Toile ,
2523 octetsEssayez-le ici!
15 octets sans manipulation
1
la source
Gelée , 21 octets
Essayez-le en ligne!
Un lien monadique acceptant un seul entier comme argument de gauche et renvoyant une chaîne Jelly séparée par des sauts de ligne avec l'étoile en sortie. Lorsqu'il est exécuté en tant que programme complet, il imprime implicitement l'étoile sur STDOUT.
Explication
la source
×3’»3
la longueur est la même ^ _ ^ɓ
cela n'a pas d'importance mais je l'ai gardé parce que je l'aimais toujours!Fusain , 25 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Dessinez un pentagone irrégulier représentant le quart supérieur droit de l'étoile, mais un boîtier spécial
1
pour élargir la rangée d'une colonne supplémentaire.Réfléchissez pour terminer l'étoile.
Plus de boîtier spécial pour rendre l'étoile
1
plus haute.Solution alternative, également 25 octets:
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Imprimez un supplément
*
pour le cas de1
.Dessinez la moitié gauche d'un triangle de la taille appropriée.
Réfléchissez pour compléter le triangle.
Le chevaucher avec son reflet, sauf dans le cas de
1
, auquel cas il suffit de le refléter.14 octets sans boîtier spécial pour
1
:Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Tracez un triangle de la taille appropriée.
Superposez-le avec son reflet.
la source
Perl 6 , 74 octets
Essayez-le en ligne!
Crée littéralement un triangle avec les bonnes proportions et le chevauche avec une copie à l'envers à l'aide de la chaîne ou de l'opérateur (
~|
). Sorties sous forme de liste de lignes avec un espace de ligne de début et de fin.Explication:
la source
J ,
5350 octetsEssayez-le en ligne!
non golfé
Comment
Utilisez une table de fonctions (comme une table de multiplication de 3e année) pour construire la moitié du triangle en utilisant
>:
(supérieur ou égal) comme fonction. Inversez ensuite chaque ligne, coupez la dernière colonne et cousez les deux côtés ensemble pour obtenir le triangle complet (mais composé de 1 et 0). Ajoutez desn
rangées de zéros en bas. Enfin, inversez le tout et superposez-le sur l'original, en utilisant booléen ou+.
pour obtenir le résultat. Tournez ensuite le 1 vers*
et le 0 vers les espaces.la source
T-SQL, 194 octets
@
est la valeur d'entrée@c
gère la largeur du triangle supérieur@d
gère le triangle inférieur de largeur@e
contient la sortie soit@c
ou@d
- cela économise quelques octets@f
gère le cas spécial de 1 en entrée.@c*@=3
détermine quand utiliser@f
. 5 octets moins cher que l'écriture@c=3and @=1
Essayez-le en ligne
la source
Japt
-R
, 25 octets+5 octets pour
n=1
: \Essayez-le
la source