Tout d'abord ... je voudrais souhaiter à tous un Joyeux Noël (désolé si j'ai un jour de retard pour votre fuseau horaire).
Pour célébrer l'occasion, nous allons dessiner un flocon de neige. Parce que l'année est 201 5 et Noël est le 2 5 (pour une grande partie des personnes), nous allons dessiner un flocon Penta . Le Pentaflake est une simple fractale composée de pentagones. Voici quelques exemples (tirés d'ici) :
Chaque Pentaflake a un ordre n. Le Pentaflake d'ordre 0 est simplement un pentagone. Pour tous les autres ordres n, un Pentaflake est composé de 5 Pentaflakes de l'ordre précédent disposés autour d'un 6ème Pentaflake de l'ordre précédent. Par exemple, un Pentaflake d'ordre 1 est composé de 5 pentagones disposés autour d'un pentagone central.
Contribution
La commande n
. Cela peut être donné de n'importe quelle manière sauf celle d'une variable prédéfinie.
Sortie
Une image de l'ordre n
Pentaflake. Doit avoir au moins 100 pixels de large et 100 pixels de long. Il peut être enregistré dans un fichier, affiché pour l'utilisateur ou édité STDOUT
. Toute autre forme de sortie n'est pas autorisée. Tous les formats d'image existant avant ce défi sont autorisés.
Gagnant
En tant que codegolf, la personne avec le moins d'octets gagne.
la source
n
ne peut pas être prédéfini dans votre fichier de script. Vous pouvez lire àn
partirSTDIN
, il invite de l'utilisateur, le prendre en fonction / argument de ligne commad ... essentiellement tout ce que vous voulez , sauf pour elle intégrer directement dans votre code.Réponses:
Matlab, 226
Non golfé:
Cinquième itération (le rendu a déjà pris un certain temps).
Une légère altération du code (malheureusement plus d'octets) entraîne cette beauté =)
Oh, et un autre:
la source
Mathematica, 200 octets
La dernière ligne est une fonction qui peut être appliquée à un entier
n
.Les noms des fonctions Mathematica sont longs. Quelqu'un devrait les coder par entropie et en faire un nouveau langage. :)
Lorsqu'il est appliqué à
1
:Lorsqu'il est appliqué à
2
:la source
MATLAB,
235233217 octetsMise à jour: un tas de suggestions de @flawr m'a aidé à perdre 16 octets. Étant donné que cela m'a permis de battre la solution de flawr et que je n'aurais pas trouvé le défi sans l'aide de flawr en premier lieu, considérez cela comme une soumission conjointe de notre part :)
Il s'agit d'une autre solution MATLAB, celle-ci basée sur une philosophie des systèmes de fonctions itératives. J'étais surtout intéressé par le développement de l'algorithme lui-même, et je n'ai pas trop joué sur la solution. Il y a sûrement matière à amélioration. (J'ai envisagé d'utiliser une approximation à virgule fixe codée en dur pour
c
, mais ce ne serait pas bien.)Version non golfée:
Résultat pour
N=5
(avec un ultérieuraxis equal off
pour la beauté, mais j'espère que cela ne compte pas en octets):la source
R=[p(:,2),[-p(2,2);p(1,2)]];
(et en éliminant le précédentR,C,S
) et vous pouvez utiliserq=[q R^l*[c-1+t(1,:);t(2,:)]/c]
et je pensec=1.5+5^.5/2;
q
, j'ai même eu une paire de parenthèses inutiles là-dedans ... 3. merci, mais quelle est cette magie ??: D 4. étant donné que la solution est maintenant plus courte que votre version originale, je considère que cela est en partie votre communication également.Mathematica, 124 octets
Mathematica prend en charge une nouvelle syntaxe pour
Table
depuis la version 10Table[expr, n]
:, qui enregistre un autre octet.Table[expr, n]
est équivalent àTable[expr, {n}]
.Le cœur de cette fonction utilise des nombres complexes pour effectuer des transformations, puis les convertir en points par
ReIm
.Cas de test:
la source
π
prend deux octets en UTF-8, vous obtenez donc 125 octets au total.Mathematica,
199196 octetsBordant la réponse de Peter Richter par un cheveu, voici la mienne. Il s'appuie fortement sur la fonctionnalité graphique et moins sur les mathématiques et la FP. La fonction intégrée CirclePoints est nouvelle dans 10.1 .
Edit: Merci à DumpsterDoofus pour GoldenRatio
la source
((1+Sqrt@5)/2)
parGoldenRatio
. De plus dans la deuxième ligne , je pense qu'il devrait être aup@0=Polygon@c[{1,0},5];
lieu dep@0=Polygon@cp[{1,0},5];
. (BTW je suis en fait Peter, j'ai deux profils lol).Mathematica, 130 octets
J'utilise une technique similaire à la réponse de njpipeorgan (en fait j'ai volé son
2Pi I/5 == Pi.4I
tour), mais implémentée comme une fonction récursive.Exemple d'utilisation (utilisation
%
pour accéder à la fonction anonyme qui a été sortie sur la dernière ligne):la source