Порахуйте кути, краї та грані вирізаного куба


9

Походить з цієї пісочниці

Це надихає тест з математики для 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  

Нарешті, це кодогольф, таким чином найкоротша відповідь у байтах виграє. Утримайтеся від стандартних лазів.


2
Цікаво ... Тож відрізання сусідніх кутів означатиме, що вони ділять один кут, а один край ліквідують? Це складніше, ніж здається спочатку
Джо Кінг

Оскільки блокування imgur у Туреччині, я не бачу зображення. Чи можете ви надішліть, будь ласка, посилання на альтернативне зображення
Cookie Windmill

@JoKing так, це правильно.
infinitezero

@WindmillCookies Вибачте, я цього не знав. Зараз я використовував іншого хоста.
infinitezero

2
Наприклад, чи можу я використовувати 0 для A, 1 для C, 2 для B, 3 для D, 4 для E, 5 для G, 6 для F, 7 для H? Або я повинен дотримуватися порядку ABCDEFGH?
tsh

Відповіді:


2

Желе , 23 байти

3R×L+“©®€‘ɓŒcn/€§ċ1;`Żạ

Монадічна Ланка. Введення - це перелік кутів куба як декартових координат (куб, вирівняний з системою координат). Висновок являє собою список цілих чисел, [faces, corners, edges].

Спробуйте в Інтернеті!

Як?

3R×L+“©®€‘ɓŒcn/€§ċ1;`Żạ - Link: list of lists, C          e.g. [[0,1,1],[1,1,0],[1,1,1],[0,0,0]] -- this could represent "FHGA"
3R                      - range of 3                           [1,2,3]
   L                    - length of C                          4
  ×                     - multiply                             [4,8,12]
     “©®€‘              - list of code-page indices            [6,8,12]
    +                   - add                                  [10,16,24]
          ɓ             - start a new dyadic chain, f(C,X) where X is the above result
           Œc           - pairs of C                           [[[0,1,1],[1,1,0]],[[0,1,1],[1,1,1]],[[0,1,1],[0,0,0]],[[1,1,0],[1,1,1]],[[1,1,0],[0,0,0]],[[1,1,1],[0,0,0]]]
              /€        - reduce €ach with:
             n          -   (vectorising) not equal?           [[1,0,1],[1,0,0],[0,1,1],[0,0,1],[1,1,0],[1,1,1]]
                §       - sum each                             [2,1,2,1,2,3]
                 ċ1     - count ones                           2
                   ;`   - concatenate with itself              [2,2]
                     Ż  - prepend a zero                       [0,2,2]
                      ạ - absolute difference with X           [10,14,22]

Якщо кути повинні бути "впорядковані" так, як вони у запитанні, це працює з цілими числами 0-7, як AH на 25 байт: 3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ(зменшує використання XOR, фільтрує двійки, а потім рахує їх менше п'яти).


1

Вугілля деревне , 48 45 байт

≔Eθ↨℅ι²η≔⊘№⭆η⭆ηΣEι↔⁻§λξν1ηIE⟦⁶⁻⁸η⁻¹²η⟧⁺ι×⊕κLθ

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Використовує цифри 0-7для представлення букв ABDCEFHGна діаграмі. Виходи в порядку порядку, кути, краї. Пояснення:

≔Eθ↨℅ι²η

Візьміть ASCII-код кожного символу і перетворіть його в базу 2.

≔⊘№⭆η⭆η

Візьміть декартовий добуток списку базових 2 чисел із собою.

ΣEι↔⁻§λξν1η

XOR пари базових 2 чисел разом і підсумовують число 1 біт. Порахуйте, скільки пар мають суму 1 і поділіть цю на 2. Це дає кількість кутів, що збігаються.

IE⟦⁶⁻⁸η⁻¹²η⟧⁺ι×⊕κLθ

Обчисліть та роздрукуйте кількість граней, кутів та країв.



1

Perl 6 , 59 58 байт

{6+@_,|((2,3 X*4+@_)X-(@_ X~@_)∩~<<ords "% 286
>C/")}

Спробуйте в Інтернеті!

Використовує число , 0щоб 7представляти кути. Я, мабуть, повинен був відповідати їм у тому ж порядку, що і в питанні ... ой? Виводить список у порядку faces, corners, edges.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.