Ceci est inspiré d'un test de mathématiques de 8e année
Intro
Nous avons un cube avec les coins suivants
A(0, 0, 0)
B(1, 0, 0)
C(1, 1, 0)
D(0, 1, 0)
E(0, 0, 1)
F(1, 0, 1)
G(1, 1, 1)
H(0, 1, 1)
Ce cube a clairement 8 coins, 12 bords et 6 faces. Si nous coupons maintenant le coin G, de sorte que notre plan de coupe passe exactement au milieu de chaque bord d'origine adjacent, nous ajoutons 2 nouveaux coins, 3 nouveaux bords et une nouvelle face. S'il vous plaît profiter de cette œuvre d'art dessinée à la main, pour une meilleure clarification
Contribution
Étant donné une liste de coins (dans cet exemple identifié par AH), qui seront coupés, calculez le nouveau nombre de coins, d'arêtes et de faces.
Vous faites prendre l'entrée sous la forme que vous voulez, tant qu'elle répond aux mêmes coins (par exemple, au lieu de AH, vous pouvez utiliser 1-8 ou 0-7, vous pouvez supposer que c'est une liste, csv, peu importe)
Vous pouvez supposer que la liste est distincte (chaque coin n'apparaîtra qu'une fois), mais elle peut être vide. La liste ne contiendra jamais de coins inexistants.
Production
Sortez trois nombres correspondant au nombre de coins, d'arêtes et de faces. La sortie sous forme de liste est explicitement autorisée. Les espaces de fin sont autorisés
Exemples
{} -> 8, 12, 6 (empty list)
{A} -> 10, 15, 7
{A,C} -> 12, 18, 8
{A,C,F} -> 14, 21, 9
{A,B,C} -> 12, 19, 9
{A,B,C,D} -> 12, 20, 10
Enfin, c'est codegolf, donc la réponse la plus courte en octets l'emporte. Veuillez vous abstenir des failles standard.
Réponses:
Gelée , 23 octets
Un lien monadique. L'entrée est une liste des coins du cube en coordonnées cartésiennes (cube aligné avec le système de coordonnées). La sortie est une liste de nombres entiers,
[faces, corners, edges]
.Essayez-le en ligne!
Comment?
Si les coins doivent être "ordonnés" comme ils le sont dans la question, alors cela fonctionne avec les entiers 0-7 comme AH pour 25 octets:
3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ
(réduit en utilisant XOR, filtre les deux, puis compte ceux de moins de cinq).la source
Fusain ,
4845 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Utilise des chiffres
0-7
pour représenter les lettresABDCEFHG
du diagramme. Sorties dans l'ordre des faces, coins, bords. Explication:Prenez le code ASCII de chaque caractère et convertissez-le en base 2.
Prenez le produit cartésien de la liste des nombres de base 2 avec lui-même.
XOR les paires de nombres de base 2 ensemble et additionner le nombre de 1 bits. Comptez combien de paires ont une somme de 1 et divisez-la par 2. Cela donne le nombre de coins coïncidents.
Calculez et imprimez le nombre de faces, coins et bords.
la source
JavaScript (Node.js) , 84 octets
Essayez-le en ligne!
la source
Perl 6 ,
5958 octetsEssayez-le en ligne!
Utilise les chiffres
0
pour7
représenter les coins. J'aurais probablement dû les faire correspondre dans le même ordre que dans la question ... oups? Sort une liste dans l'ordrefaces, corners, edges
.la source