Compte tenu de la spirale de taille S
et du pas N
, sortez la S*S
spirale "carrée" comportant des N
astérisques, construite du rayon extérieur au rayon intérieur dans le sens des aiguilles d'une montre.
Cas de test (exemples) ci-dessous.
Contribution:
4 3
Sortie:
***
Contribution:
4 6
Sortie:
**** * *
Contribution:
4 11
Sortie:
**** * * * ****
Contribution:
6 18
Sortie:
****** * * * * * * ******
Contribution:
6 22
Sortie:
****** *** * * * * * * * ******
Contribution:
6 27
Sortie:
****** ****** * ** * ** * ** ******
Contribution:
1 1
Sortie:
*
Il n'est pas nécessaire de gérer les cas lorsque:
à condition que les
N
astérisques ne puissent pas "tenir" dans la spirale deS*S
dimensions données .soit
N
ouS
est nul.
Le défi est le golf de code, les octets les plus courts l'emportent, toutes les langues peuvent être utilisées.
Votre sortie peut comporter autant d'espaces / de nouvelles lignes à la fin (mais pas au début) que vous le souhaitez.
S
taille (ou au moins le diamètre ) plutôt que le rayonRéponses:
MATL ,
1716 octetsEssayez-le en ligne!
Explication (avec exemple)
Considérez les entrées
4
et11
comme exemple.la source
Stax , 19 octets
Exécuter et déboguer
Il commence par construire une chaîne contenant tous les caractères dans le résultat avec tous les astérisques alignés à gauche. Ensuite, il enlève des tranches de plus en plus grandes de l'extrémité de la chaîne et les «enroule» autour d'une grille en faisant tourner la grille.
Voici le même programme, décompressé, non golfé et commenté.
Exécuter et déboguer
la source
Python 2 , 117 octets
Essayez-le en ligne!
la source
APL (Dyalog) , 65 octets
Essayez-le en ligne!
Le code de la matrice en spirale est tiré d' une autre réponse de la mienne .
la source
N
c'est bizarre :)PHP, 118 octets
ajusté et joué ma solution pour la spirale de l'alphabet .
Courez avec
php -nr '<code>' <S> <N>
ou essayez-le en ligne .la source
Python 2 , 150 octets
Essayez-le en ligne!
la source
Fusain , 34 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Entrée
N
.Les longueurs des bras en spirale ( à l' exclusion des coins) sont
S-1
,S-1
,S-1
,S-2
,S-2
,S-3
, ...,3
,2
,2
,1
,1
,1
. Ceci est formé en commençant par la plage allant de0
jusqu'à mais en excluant2S
, en changeant le 0 en 1, en l'inversant, en ajoutant 1 à chaque élément après le premier, et enfin un entier divisant tous les éléments par 2. Cette liste est ensuite bouclée.S'il reste moins d'étoiles à dessiner que la longueur du bras suivant, réduisez le bras à cette longueur.
Dessinez le nombre d'étoiles approprié.
Soustrayez du nombre d'étoiles restantes.
Faites pivoter le sens du dessin de 90 ° dans le sens des aiguilles d'une montre.
la source
J,
6056 octets-4 octets en modifiant le processus de construction de la spirale afin qu'il ne soit pas nécessaire de la soustraire de y ^ 2
Essayez-le en ligne!
Explication à venir
bientôtmaintenant.Explication:
Exemples:
la source
Kotlin ,
361355353334 octets6 octets enregistrés grâce à Jonathan
2 octets enregistrés passant à quand
19 octets enregistrés basculant vers lambda et suivi des bords extérieurs
Essayez-le en ligne!
la source
==' '
pourrait être remplacé par<'*'
. Aussid==0
avecd<1
etd==3
avecd>2
. Ceux-ci semblent être des golfs assez fondamentaux, il y en a probablement d'autres aussi!Java 10,
284282281263 octetsUn défi amusant!
Essayez-le en ligne ici .
Merci à Kevin Cruijssen d' avoir joué au golf 18 octets.
Version non golfée:
la source
var b
est ajouté pour que vous n'ayez à faire que lex>0?i<u:i>l
ety>0?j<u:j>l
une fois chacune, au lieu de deux fois chacune.JavaScript (Node.js) ,
167164163 octets,
au lieu de map (1 octet)Essayez-le en ligne!
la source
return a.join` `.split`,`.join``
..split
, `.join`` ne produit pas la spirale" joliment "(avec de nouvelles lignes) donc je pense que c'est un problème