Vindo desta postagem do sandbox
Isso é inspirado em um teste de matemática da 8ª série
Introdução
Temos um cubo com os seguintes cantos
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 possui claramente 8 cantos, 12 arestas e 6 faces. Se agora cortamos o canto G, de modo que nosso plano de corte passe exatamente no meio de cada aresta original adjacente, adicionamos 2 novos cantos, 3 novas arestas e uma nova face. Por favor, aproveite esta obra de arte desenhada à mão, para melhor esclarecimento
Entrada
Dada uma lista de cantos (neste exemplo, identificados por AH), que serão cortados, calcule o novo número de cantos, arestas e faces.
Você faz a entrada da forma que desejar, desde que ela responda aos mesmos cantos (por exemplo, em vez de AH, você pode usar 1-8 ou 0-7, você pode assumir que seja uma lista, csv, o que for)
Você pode supor que a lista seja distinta (todos os cantos aparecerão uma vez no máximo), mas pode estar vazia. A lista nunca conterá cantos inexistentes.
Resultado
Saída de três números correspondentes ao número de cantos, arestas e faces. A saída como uma lista é explicitamente permitida. Espaços em branco à direita são permitidos
Exemplos
{} -> 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, este é um codegolf, e a resposta mais curta em bytes vence. Evite brechas comuns.
Respostas:
Gelatina , 23 bytes
Um link monádico. Entrada é uma lista de cantos do cubo como coordenadas cartesianas (cubo alinhado com o sistema de coordenadas). Saída é uma lista de números inteiros
[faces, corners, edges]
,.Experimente online!
Como?
Se os cantos precisarem ser "ordenados" como estão na pergunta, isso funcionará com números inteiros de 0 a 7 como AH por 25 bytes:
3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ
(reduz usando XOR, filtra dois e depois conta menos de cinco).fonte
Carvão ,
4845 bytesExperimente online! Link é a versão detalhada do código. Usa dígitos
0-7
para representar as letrasABDCEFHG
no diagrama. Saídas nas faces, cantos e arestas da ordem. Explicação:Pegue o código ASCII de cada caractere e converta-o para a base 2.
Pegue o produto cartesiano da lista de números da base 2 consigo mesmo.
XOR os pares de números da base 2 juntos e somar o número de 1 bits. Conte quantos pares têm uma soma de 1 e divida-a por 2. Isso fornece o número de cantos coincidentes.
Calcule e imprima o número de faces, cantos e arestas.
fonte
JavaScript (Node.js) , 84 bytes
Experimente online!
fonte
Perl 6 ,
5958 bytesExperimente online!
Usa os números
0
para7
representar os cantos. Eu provavelmente deveria combiná-los com a mesma ordem que na pergunta ... oops? Produz uma lista na ordemfaces, corners, edges
.fonte