Viniendo de esta publicación de sandbox
Esto está inspirado en una prueba de matemáticas de 8º grado
Introducción
Tenemos un cubo con las siguientes esquinas.
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)
Este cubo claramente tiene 8 esquinas, 12 bordes y 6 caras. Si ahora cortamos la esquina G, de modo que nuestro plano de corte pase exactamente por el medio de cada borde original adyacente, agregaremos 2 esquinas nuevas, 3 bordes nuevos y una cara nueva. Disfruta de esta obra de arte dibujada a mano, para una mejor aclaración
Entrada
Dada una lista de esquinas (en este ejemplo identificado por AH), que se cortará, calcule el nuevo número de esquinas, aristas y caras.
Puede tomar la entrada en cualquier forma que desee, siempre que responda a las mismas esquinas (por ejemplo, en lugar de AH puede usar 1-8 o 0-7, puede suponer que es una lista, csv, lo que sea)
Puede suponer que la lista es distinta (cada esquina aparecerá una vez como máximo), pero puede estar vacía. La lista nunca contendrá esquinas no existentes.
Salida
Salida de tres números correspondientes a la cantidad de esquinas, aristas y caras. La salida como una lista está explícitamente permitida. Se permiten espacios en blanco al final
Ejemplos
{} -> 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
Finalmente, esto es codegolf, por lo que gana la respuesta más corta en bytes. Abstenerse de las lagunas estándar.
Respuestas:
Jalea , 23 bytes
Un enlace monádico. La entrada es una lista de esquinas del cubo como coordenadas cartesianas (cubo alineado con el sistema de coordenadas). La salida es una lista de números enteros,
[faces, corners, edges]
.Pruébalo en línea!
¿Cómo?
Si las esquinas deben ser "ordenadas" como están en la pregunta, entonces esto funciona con enteros 0-7 como AH para 25 bytes:
3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ
(reduce el uso de XOR, filtra dos, luego cuenta esos menos de cinco).fuente
Carbón ,
4845 bytesPruébalo en línea! El enlace es a la versión detallada del código. Utiliza dígitos
0-7
para representar las letrasABDCEFHG
en el diagrama. Salidas en el orden caras, esquinas, aristas. Explicación:Tome el código ASCII de cada carácter y conviértalo en base 2.
Tome el producto cartesiano de la lista de números base 2 consigo mismo.
XOR los pares de números de base 2 juntos y suman el número de 1 bits. Cuente cuántos pares tienen una suma de 1 y divídalo entre 2. Esto da el número de esquinas coincidentes.
Calcule e imprima el número de caras, esquinas y aristas.
fuente
JavaScript (Node.js) , 84 bytes
Pruébalo en línea!
fuente
Perl 6 ,
5958 bytesPruébalo en línea!
Utiliza los números
0
para7
representar las esquinas. Probablemente debería haberlos igualado en el mismo orden que en la pregunta ... ¿Ups? Emite una lista en el ordenfaces, corners, edges
.fuente