Đếm các góc, cạnh và mặt của khối cắt


9

Đến từ bài sandbox này

Điều này được lấy cảm hứng từ một bài kiểm tra toán học sinh lớp 8

Giới thiệu

Chúng tôi có một khối lập phương với các góc sau

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)

Khối này rõ ràng có 8 góc, 12 cạnh và 6 mặt. Nếu bây giờ chúng ta cắt góc G, sao cho mặt phẳng cắt của chúng ta đi chính xác vào giữa mỗi cạnh ban đầu liền kề, chúng ta thêm 2 góc mới, 3 cạnh mới và một mặt mới. Hãy thưởng thức tác phẩm nghệ thuật vẽ tay này, để làm rõ hơn

nhập mô tả hình ảnh ở đây

Đầu vào

Đưa ra một danh sách các góc (trong ví dụ này được xác định bởi AH), sẽ bị cắt bỏ, tính toán số góc, cạnh và mặt mới.

Bạn thực hiện lấy đầu vào dưới bất kỳ hình thức nào bạn thích, miễn là nó phản hồi với các góc giống nhau (ví dụ thay vì AH, bạn có thể sử dụng 1-8 hoặc 0-7, bạn có thể coi đó là danh sách, csv, bất cứ điều gì)

Bạn có thể giả sử danh sách là khác biệt (mọi góc sẽ xuất hiện nhiều nhất một lần), nhưng nó có thể trống. Danh sách sẽ không bao giờ chứa các góc không tồn tại.

Đầu ra

Xuất ba số tương ứng với số góc, cạnh và mặt. Đầu ra như một danh sách được cho phép rõ ràng. Cho phép khoảng trắng

Ví dụ

{}        ->  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  

Cuối cùng, đây là codegolf, do đó, câu trả lời ngắn nhất tính bằng byte sẽ thắng. Xin vui lòng kiềm chế sơ hở tiêu chuẩn.


2
Thú vị ... Vì vậy, cắt bỏ các góc liền kề sẽ có nghĩa là họ chia sẻ một góc, và loại bỏ một cạnh? Điều này phức tạp hơn lúc đầu
Jo King

Vì imgur bị chặn ở Thổ Nhĩ Kỳ, tôi không thể nhìn thấy hình ảnh. Bạn có thể vui lòng gửi một liên kết hình ảnh thay thế
Bánh quy cối xay gió

@JoKing vâng đúng vậy.
infinitezero

@WindmillCookies Tôi xin lỗi, tôi không biết điều đó. Bây giờ tôi đã sử dụng một máy chủ khác.
infinitezero

2
Ví dụ: tôi có thể sử dụng 0 cho A, 1 cho C, 2 cho B, 3 cho D, 4 cho E, 5 cho G, 6 cho F, 7 cho H không? Hay tôi nên giữ thứ tự ABCDEFGH?
tsh

Câu trả lời:


2

Thạch , 23 byte

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

Một liên kết đơn âm. Đầu vào là danh sách các góc của khối lập phương theo tọa độ Descartes (khối lập phương được căn chỉnh với hệ tọa độ). Đầu ra là một danh sách các số nguyên [faces, corners, edges],.

Hãy thử trực tuyến!

Làm sao?

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]

Nếu các góc phải được "sắp xếp" như trong câu hỏi thì điều này hoạt động với các số nguyên 0-7 dưới dạng AH cho 25 byte: 3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ(giảm sử dụng XOR, lọc ra twos, sau đó đếm các số nhỏ hơn năm).


1

Than , 48 45 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Sử dụng các chữ số 0-7để thể hiện các chữ cái ABDCEFHGtrong sơ đồ. Đầu ra theo thứ tự mặt, góc, cạnh. Giải trình:

≔Eθ↨℅ι²η

Lấy mã ASCII của từng ký tự và chuyển đổi nó thành cơ sở 2.

≔⊘№⭆η⭆η

Lấy sản phẩm cartesian của danh sách 2 số cơ sở với chính nó.

ΣEι↔⁻§λξν1η

XOR các cặp cơ sở 2 số với nhau và tổng số 1 bit. Đếm có bao nhiêu cặp có tổng bằng 1 và chia số đó cho 2. Điều này cho số góc trùng khớp.

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

Tính và in số lượng mặt, góc và cạnh.



1

Perl 6 , 59 58 byte

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

Hãy thử trực tuyến!

Sử dụng những con số 0để 7đại diện cho các góc. Tôi có lẽ nên khớp chúng theo thứ tự như trong câu hỏi ... ôi? Xuất ra một danh sách theo thứ tự faces, corners, edges.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.