Jetez un œil à cette fleur de camomille:
Joli, non? Et si je te disais que ce n'était pas vraiment une fleur?
Beaucoup de fleurs (y compris les tournesols, la camomille, les marguerites et autres) se composent en fait de très petites fleurs (les points noirs sur les tournesols) sur une tête de fleur. Ces fleurs miniatures sont appelées fleurons , et elles sont disposées de manière très spéciale.
Fondamentalement, la position du nième fleuron sur un capitule est (en coordonnées polaires):
où c = 1 (Notez que 137,508 degrés = angle d'or. Vous n'avez pas besoin d'utiliser cette précision exacte.)
Cela provoque la formation des fleurons dans une spirale appelée spirale de Fermat. Le positionnement des fleurons est également lié aux nombres de Fibonnaci, mais c'est un conte pour une autre fois.
Voici donc le défi. Étant donné un entier n en entrée, calculez les positions des n premiers fleurons et tracez-les . C'est une sortie graphique , donc je veux vraiment que vous affichez les points dans une fenêtre quelconque ou sortis sous forme de données dans un format d'image commun vers STDOUT ou un fichier. En dehors de cela, ce défi devrait être assez simple. C'est le code-golf , donc le code le plus court gagne. GL HF!
Voici un exemple d'image de ce à quoi pourrait ressembler une sortie:
la source
Réponses:
TI-BASIC, 34 octets
Pour la série de calculatrices TI-83 + / 84 +.
Cela considère que le point à l'origine est le 0ème point.
Merci au
sinh⁻¹(
jeton d' un octet ,2πe^(-2sinh⁻¹(.5
est un moyen rapide d'obtenir l'angle d'or en radians. Cela découle du fait quee^(sinh⁻¹(.5
c'est le nombre d'or.Voici des captures d'écran pour N = 50.
(Oui, c'est un écran monochrome 96x64 sur une TI-84 +. Les nouvelles calculatrices couleur ont une mise à niveau de la résolution, mais n'ont toujours que 3,7% des pixels d'un iPhone.)
Appuyez TRACEpour parcourir chaque point.
la source
sinh⁻¹
semble être le cas (si j'ai bien compris votre explication), compterait pour plus d'un octet.Python 2,
858281 octetsRaccourci d'un octet par marinus.
Utilisation de l'angle d'or en radians. La longueur en octets est la même si j'utilise 137.508 à la place, mais en quelque sorte, ça n'a pas l'air aussi bien. Génère un tracé polaire à l'aide de pylab. Ci-dessous, lorsque 300 (pour l'ancienne version) est l'entrée et 7000 (pour la nouvelle version) est l'entrée. Pourrait arrondir l'angle jusqu'à 2,4 pour réduire le nombre d'octets à 77.
Voici une version plus longue qui produit un look plus net en supprimant la grille et l'axe:
La raison des différentes couleurs est que chaque point est tracé séparément et traité comme son propre ensemble de données. Si les angles et les rayons étaient transmis sous forme de listes, ils seraient traités comme un ensemble et seraient d'une seule couleur.
la source
for
boucle normale au lieu d'une compréhension de liste. Il faudrait qu'il soit sur sa propre ligne, mais;
et\n
soit de la même longueur, donc cela n'a pas d'importance. C'est à dire:from pylab import*
-for i in arange(0,input(),2.39996):polar(i,sqrt(i),'o')
-show()
Blitz 2D / 3D , 102 octets
(La toute première réponse Blitz 2D / 3D sur ce site!)
Une entrée de
50
remplit la fenêtre. (Oui, je pourrais raser deux octets en faisantGraphics 99,99
, mais ce n'est pas aussi intéressant ou utile visuellement.)Version plus jolie (et quitte plus joliment):
la source
Mathematica,
4342 octetsIl s'agit d'une fonction sans nom prenant un argument entier, par exemple
La capture d'écran utilise une version plus ancienne, mais la sortie est identique.
Mathematica a en fait une fonction intégrée
GoldenAngle
pour des résultats encore plus précis, mais c'est plus long que2.39996
.la source
GoldenAngle
! Est-ce une nouvelle fonction dans Mathematica 10.2?MATLAB, 42 octets
Obtient le numéro d'entrée, crée une plage de 1 à ce nombre.
Multiplie la plage par l'angle d'or en radians (la valeur utilisée est plus proche de la valeur réelle que 137,508 degrés à 6 pieds carrés).
Ensuite, tracez simplement thêta vs r sur un graphique de coordonnées polaires en utilisant des points. Ici montré avec 2000 points
Un graphique légèrement plus joli (sans lignes de grille) serait ce code:
Bien que cela se fasse au détriment de 31 octets. Encore une fois, il est montré avec 2000 points
la source
polar
solution, je ne l'ai jamais utilisée auparavant. Je pense que vous pouvez économiser deux octets en utilisantt.^.5
instad desqrt(t)
!R,
585554 octetsCela nécessite que le
plotrix
package soit installé, mais il n'est pas nécessaire d'importer le package car nous référençons explicitement l'espace de noms.Ungolfed:
Exemple de sortie pour n = 1500:
Sauvegardé 3 octets grâce à plannapus!
la source
R,
5554 octetsVoici le résultat pour n = 1000:
Edit: 1 octet enregistré en utilisant la correspondance partielle des arguments (
as
au lieu deasp
) grâce à @AlexA.!la source
R,
4847 octetsJe pense que cela est suffisamment différent des autres solutions R jusqu'à présent. Celui-ci utilise des vecteurs complexes pour construire les coordonnées. le sqrt de t et t sont mis dans les paramètres de module et d'argument et les x, y sont tirés du réel et de l'imaginaire. Merci à @AlexA. pour l'octet.
la source
as
peut être utilisé à la place deasp
.Html + JavaScript 179
la source
Jolf, 25 octets
(sortie pour n = 5000)
Essayez-le en ligne. (notez que la spirale résultante est petite)
Non compétitif depuis la création de Jolf après ce challenge. C'est 25 octets lorsqu'il est encodé avec ISO-8859-7, et il contient un non imprimable (voici un hexdump):
Explication
la source
Python 2, 74 octets
la source
MATL , 20 octets (non concurrent)
Marqué comme non concurrent car la langue est postérieure au défi
Essayez-le sur MATL Online!
L'angle d'or,
137.708
deg =pi*(3-sqrt(5))
rad =2.39996...
rad est approximativement2.4
exprimé en rad.La version suivante ( 25 octets ) utilise la valeur exacte, jusqu'à une
double
précision à virgule flottante:Essayez-le à MATL Online!
la source
Tcl / Tk, 114
Exemple d'utilisation:
et sort la fenêtre
la source