Исходя из этого поста песочницы
Это вдохновлено 8-го класса по математике
вступление
У нас есть куб со следующими углами
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)
Этот куб явно имеет 8 углов, 12 ребер и 6 граней. Если мы теперь обрежем угол G так, что наша плоскость среза проходит точно через середину каждого смежного исходного ребра, мы добавим 2 новых угла, 3 новых ребра и одну новую грань. Пожалуйста, наслаждайтесь этим рисованным произведением искусства, для лучшего прояснения
вход
Учитывая список углов (в этом примере обозначенных AH), которые будут обрезаны, вычислите новое количество углов, ребер и граней.
Вы берете входные данные в любой форме, которая вам нравится, при условии, что они реагируют на одни и те же углы (например, вместо AH вы можете использовать 1-8 или 0-7, вы можете считать, что это список, CSV, что угодно)
Можно предположить, что список различен (каждый угол будет отображаться не более одного раза), но он может быть пустым. Список никогда не будет содержать несуществующих углов.
Вывод
Выведите три числа, соответствующие количеству углов, ребер и граней. Вывод в виде списка явно разрешен. Конечные пробелы разрешены
Примеры
{} -> 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
Наконец, это Codegolf, поэтому выигрывает самый короткий ответ в байтах. Пожалуйста, воздержитесь от стандартных лазеек.
Ответы:
Желе , 23 байта
Монадическая ссылка. Ввод представляет собой список углов куба в виде декартовых координат (куб, выровненный по системе координат). Выход - это список целых чисел
[faces, corners, edges]
.Попробуйте онлайн!
Как?
Если углы должны быть «упорядочены» так, как они есть в вопросе, то это работает с целыми числами 0-7 как AH для 25 байтов:
3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ
(уменьшает с помощью XOR, отфильтровывает два, затем считает меньше пяти).источник
Древесный уголь ,
4845 байтПопробуйте онлайн! Ссылка на подробную версию кода. Использует цифры
0-7
для представления буквABDCEFHG
на диаграмме. Выводы в порядке граней, углов, ребер. Объяснение:Возьмите код ASCII каждого символа и преобразуйте его в базу 2.
Возьмите с собой декартово произведение из списка базовых 2 чисел.
XOR пары двоичных чисел 2 вместе и суммировать число 1 бит. Подсчитайте, сколько пар имеют сумму 1, и разделите ее на 2. Это дает количество совпадающих углов.
Рассчитайте и распечатайте количество граней, углов и ребер.
источник
JavaScript (Node.js) , 84 байта
Попробуйте онлайн!
источник
Perl 6 ,
5958 байтПопробуйте онлайн!
Использует число ,
0
чтобы7
представлять углы. Я, вероятно, должен был сопоставить их до того же порядка, что и в вопросе ... упс? Выводит список в порядкеfaces, corners, edges
.источник