Cette spirale géométrique semble compliquée, mais elle est assez simple à dessiner; prenez la case suivante:
Tracez une ligne droite entre le coin de la boîte et une certaine distance définie au-dessus du coin suivant dans le sens antihoraire.
Continuez ce modèle vers l'intérieur, en restant toujours à cette distance définie du coin de la ligne suivante. Voici quelques lignes supplémentaires.
Comme vous pouvez le voir, au fur et à mesure que le motif continue, la spirale s'approche du centre et les boîtes que vous dessinez commencent à tourner. Notez que la distance reste constante, quel que soit l'angle.
Le défi
L'inspiration (et aussi grâce à la merveilleuse personne qui m'a fait découvrir ce concept <3)
Étant donné une entrée numérique (éventuellement fractionnée) de 1 à 25, écrivez une image sur le disque qui utilise ce modèle ou affichez la sortie à l'écran, où la distance de chaque coin est la distance d'un côté initial de la boîte divisée par l'entrée . Continuez le motif vers l'intérieur jusqu'à ce que la distance du coin spécifié soit plus longue que la longueur du côté suivant.
Règles
- Vous ne pouvez pas utiliser de modules intégrés pour cette création en spirale, mais vous pouvez utiliser des modules intégrés de traitement d'image.
- Si vous écrivez sur le disque, vous devez générer une image au format .jpg, .gif, .tiff, .pbm, .ppm et .png.
- La longueur initiale du côté doit être d'au moins 500 pixels.
- Le coin initial peut être celui que vous choisissez.
- Comme toujours, les échappatoires standard sont interdites.
la source
Réponses:
Chaussures (Ruby) 163 octets
Shoes est une boîte à outils GUI basée sur rubis.
Non golfé
Sorties n = 4 et n = 25
Notez que la forme se termine toujours par un triangle, qui se réduit davantage à une ligne. Le remplacement
size-1
parsize
ne fait aucune différence sur l'apparence de la sortie et permettrait d'économiser 2 octets, mais je l'ai laissé pour une correction théorique.Sortie n = 300
Inspiré par un commentaire de OP, les chiffres les plus élevés ont fière allure!
la source
line
dans la ligne du bas est-il nécessaire?*
convertit le tableau à quatre éléments formé par la conversion des nombres complexes en quatre paramètres pourline
. La syntaxe standard consisteline(*(a[j-1].rect+a[j].rect))
donc à supprimer les parenthèses et à ajouter un espace représente déjà une économie d'un octet. La suppression de l'espace fait que Ruby essaie de se multiplierline
par le contenu des parenthèses, ce qui n'a aucun sens et provoque une erreur. Il y a du golf à faire ici, mais pas ça. J'y reviendrai plus tard.upto
. De plus, avez-vous essayé de supprimer l'('')
afterask
? Je ne l'ai pas testé, mais cela peut être inutileJava,
10561005985948522508507504502501493492488474465458 octetsMerci à CoolestVeto et ECS pour encore d'autres façons de réduire la taille. :-)
la source
Groovy,
412411403398 octetsla source
Caught: groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() at s$1.<init>(s.groovy:3) at s.run(s.groovy:2)