Tâche
La tâche consiste à carreler des polygones, étant donné une configuration de sommets.
Notation
Votre score est égal au "niveau de complexité" atteint par votre soumission. Les niveaux de complexité sont cumulatifs, ce qui signifie que pour atteindre le numéro 3, vous devez également prendre en charge les numéros 1 et 2.
Les soumissions à niveau de complexité égal se distinguent par le nombre d'octets; victoires les plus faibles.
Contribution
L'entrée est une chaîne contenant une configuration de sommet, représentant une figure de sommet. C'est-à-dire une liste d'entiers séparés par des points, où chaque entier (n) représente un n-gon régulier, connecté par un sommet commun.
Les configurations de sommets suivantes doivent être prises en charge:
3.3.3.3.3.3
3.3.3.3.6
3.3.3.4.4
(notez que l'ordre est reflété dans la figure du sommet, donc ce qui suit diffère)3.3.4.3.4
3.12.12
3.4.6.4
3.6.3.6
4.4.4.4
4.6.12
4.8.8
6.6.6
Sortie - Niveau de complexité # 1: Figure de sommet
À ce niveau de complexité, la sortie est une image montrant la figure de sommet correspondant à l'entrée donnée.
L'entrée est précédée d'un F
pour signifier que la figure de sommet doit être sortie, et non le pavage complet.
Par exemple, F3.6.3.6
donne ce sommet:
Sortie - Niveau de complexité # 2: Mosaïque
A ce niveau de complexité, la sortie est une image montrant un pavage uniforme en utilisant la figure de sommet correspondant à l'entrée donnée.
Par exemple, 3.6.3.6
donne ce pavage:
Il n'y a aucune restriction sur la couleur ou le format (sauf les failles).
Sortie - Niveau de complexité # 3: double pavage
À ce niveau de complexité, un «double carrelage» peut être formé à partir de chaque carrelage. Ceci est réalisé en traçant des lignes du centre de chaque polygone au centre de chaque polygone bordant.
Le double pavage est spécifié en ajoutant une entrée au début avec a V
.
Par exemple, V3.6.3.6
donne ce double pavage (en rouge):
3.3.3.4.4
3.3.4.4.3
3.4.4.3.3
4.4.3.3.3
4.3.3.3.4
. Faut-il prendre en charge tous les synonymes, ou juste le plus bas lexicalement (comme indiqué dans la question)? Existe également3.3.3.3.6
sous deux formes d'image miroir. Je comprends que l'un ou l'autre est acceptable.3.3.3.4.4
manque par exemple. en.wikipedia.org/wiki/… correspond exactement à votre liste. Je comprends que les contours ou les polygones remplis sont acceptables (ou une combinaison des deux?) Certains duels sont déjà dans la liste. Par exemple,4.4.4.4
est son propre dual et3.3.3.3.3.3
et6.6.6
sont mutuellement dual. Comme les duels sont affichés indépendamment de leurs parents, je comprends qu'il n'y a pas besoin d'un alignement correct avec le parent.3.3.3.3.6
mais comment sauriez-vous de laquelle il s'agit? :)Réponses:
BBC BASIC
Rev 1 Code Golfed, 655 caractères ASCII, taille de fichier à jetons 614
Quelques améliorations majeures à la table de données, en hachant la chaîne
A.B..N
à un nombre(1*A+2*B+..n*N)+n
avant de rechercher, et en stockant un seul vecteur de traduction (l'autre est généré par le code.) Plus d'explications quand j'ai fini de jouer au golf.Rév 0 Code golfé, 770 caractères ASCII, taille de fichier à jetons 728
Tout ce que j'ai fait ici est de supprimer les commentaires, les espaces blancs et les guillemets inutiles, et de mettre tout cela
DATA
sur une seule ligne. Il y a certainement de la place pour plus de golf.Explication
Il s'agit d'une continuation de ma réponse précédente de niveau 1, mais j'ai décidé de la publier séparément car elle est plutôt longue.
Niveau 2
Ceci est réalisé par la traduction de mes modèles "niveau 1.5" de ma réponse précédente. Les deux vecteurs de traduction pour chaque pavage sont codés en dur. Je profite du fait qu'un triangle isocèle de base 80 et de hauteur 70 est une très bonne approximation d'un triangle équilatéral, et un triangle rectangle avec vecteur hypoténuse
(56,56)
a une longueur d'hypoténuse très proche de 80.Niveau 3
Pour tracer les doubles, au lieu de tracer une arête du polygone, nous tracons un rayon du milieu de cette arête au centre du polygone. Ceci est perpendiculaire au bord et a une longueur de
1/TAN/(PI/n)
temps du vecteur (u, v) qui à son tour est la moitié de la longueur du bord.Malheureusement, parce que certains polygones dans les pavages
3.3.3.3.6
et3.4.6.4
ne sont pas tracés explicitement, ils ne le seraient pas si nous ne faisions que cela. Par conséquent, le rayon s'étend également vers l'extérieur du polygone. L'extension vers l'extérieur est contrôlée par la variableo
.Par défaut, l'extension est suffisante pour atteindre le centre d'un triangle, mais pour
3.4.6.4
cela, elle doit être étendue davantage afin de dessiner les doubles des carrés qui ne sont pas tracés explicitement. Ainsi, une extension suffisante pour remplir les carrés manquants est appliquée lorsque les hexagones et les triangles sont tracés explicitement, mais l'extension normale est appliquée lorsque les carrés sont tracés explicitement, pour éviter les lignes parasites dans les triangles adjacents.Voici à quoi ils ressemblent sans les extensions de rayon. Les trous du double motif sont clairement visibles. La sortie correcte peut être vue dans l'image principale au bas de la réponse
Code commenté
Les différences par rapport à ma réponse précédente sont indiquées en ligne
Production
Le programme effectue un seul pavage ou double pour chaque exécution. Cependant, il trace les duels en rouge. Pour économiser de l'espace, j'ai exécuté le programme deux fois sans effacer l'écran afin de superposer le double au-dessus du pavage normal.
la source
Mathematica
Le niveau 1 contient les modèles de tuiles de base qui sont tamponnés à plusieurs reprises pour carreler un avion.
Le niveau 2 fait le carrelage.
Il y a encore 2 pavages que je n'ai pas pu obtenir. Ils semblent nécessiter une rotation ainsi qu'une translation.
Niveau 1: Vertex Figure (559 octets)
Essai
Niveau 2: mosaïque (690 octets supplémentaires)
Les règles renvoient des décalages de pavage et des retraits pour chaque configuration.
r
est la fonction de base qui produit les pavages.p
montre le modèle et le carrelage respectif. Les espaces blancs correspondent à ceux non couverts par le modèle.Essai
Carrelage triangulaire
hexagonal
carré
inconnue
carré tronqué
trihexagonal
hexagonal tronqué
anonyme
triangulaire allongé
Carrelages à comprendre
la source
3.3.3.3.3.3
de moitié, afin que les unités se chevauchent, vous pouvez vous débarrasser de ces diamants et réparer ce carrelage. Vous avez encore beaucoup à faire sur3.3.3.3.6
,3.4.6.4
et4.6.12
bien.4.6.12 anyone know what it should look like?
- Tous les pavages requis se trouvent sur en.wikipedia.org/wiki/… . Voir mon commentaire sur la question. Il s'agit d'une page différente de celle mentionnée dans la question. Mais4.6.12
est également affiché sur cette page de toute façon.R
Étape 1
Voici mon effort pour construire les tuiles. Carrelage à venir ensuite. Cela ne valide pas l'entrée, donc les invalides dessineront des tuiles étranges. L'entrée est tapée après la première ligne
Étape # 1, # 2 & # 3: 1898
J'y suis enfin revenu. La majeure partie de cela est consacrée à la définition des décalages et à la gestion des cas spéciaux :). Edit: le drapeau V pour les duals est maintenant géré
Le processus général est le suivant:
Je peux probablement encore jouer au golf un peu plus.
la source
BBC BASIC
Téléchargez l'émulateur sur http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Niveau 1
Niveau 1.5
Le niveau 1.5 est ma propre désignation, mais c'est une étape importante dans ma méthode.
La traduction des sommets ne conduit pas toujours au pavage correct. Dans certains cas, des lignes manquent.
Ma solution est de contourner le plus grand polygone, en dessinant la figure de sommet pour chaque deuxième sommet de ce polygone. Il s'agit d'une solution générale pour tous les cas. Notez que le plus grand polygone a toujours un nombre pair de côtés et que la figure du sommet alterne souvent dans le sens horaire / antihoraire lorsque vous faites le tour du polygone. Cela peut être vu plus clairement avec
4.6.12
, mais c'est également vrai de4.8.8
et3.12.12
: lorsqu'ils sont vus à partir de n'importe quel 8-gon ou 12-gon particulier, les sommets alternés sont des images miroir les uns des autres. C'est aussi ce qui se passe, un peu moins évidemment, avec3.3.3.4.4
et3.3.4.3.4
: lorsqu'ils sont vus d'un carré particulier, les sommets alternés sont des images miroir les uns des autres.L'algorithme que j'utilise pour déplacer 2 côtés autour du polygone consiste à toujours faire 14 itérations de la boucle de dessin des bords, quel que soit le nombre d'arêtes du polygone. 8 est un facteur de 16, donc lorsque vous dessinez des octogones, le curseur graphique se retrouve 16-14 = 2 sommets derrière l'endroit où il a commencé. 3- 4- 6- et 12-gons ont tous des côtés qui sont des facteurs de 12, de sorte que le curseur graphique finit par 14-12 = 2 sommets avant où il a commencé.
Les chiffres peuvent être vus ci-dessous. Demain, j'espère trouver les traductions correctes pour terminer le pavage. Dans tous les cas, suffisamment de lignes sont tracées pour terminer le niveau 2 avec des traductions uniquement. Dans certains cas, beaucoup plus que le minimum requis est dessiné, mais il n'y a pas de problème de chevauchement: les règles ne disent rien sur le dessin des lignes une seule fois :-)
En général, le plus grand polygone est le dernier de la liste. Il y a, malheureusement, un cas où ce n'est pas le cas:
3.4.6.4
Par conséquent, la figure dessinée dans ce cas est centrée sur un carré plutôt que sur un hexagone. Il y a suffisamment de lignes pour terminer le niveau 2 en utilisant uniquement des traductions, bien qu'il y ait certains carrés qui ne sont pas dessinés explicitement. Cela posera des problèmes au niveau 3 (heureusement, je pense que je sais comment résoudre ce problème.) De même,3.3.3.3.6
il y a suffisamment de lignes pour terminer le niveau 2 en utilisant uniquement des traductions, mais il y aura certains triangles qui ne seront pas dessinés explicitement.Code
Le code du niveau 1.5 est commenté, seul le code du niveau 1 est activé. Il y a quatre lignes commençant par un
REM
. Supprimez cesREM
s pour activer le niveau 1.5.Niveaux 2 et 3
Voir mon autre réponse.
la source