Datang dari pos kotak pasir ini
Ini terinspirasi dari tes matematika kelas 8
Intro
Kami memiliki kubus dengan sudut-sudut berikut
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)
Kubus ini jelas memiliki 8 sudut, 12 tepi dan 6 wajah. Jika sekarang kita memotong sudut G, sedemikian rupa sehingga bidang potongan kita melewati tepat di tengah-tengah setiap tepi asli yang berdekatan, kita menambahkan 2 sudut baru, 3 tepi baru dan satu wajah baru. Silakan nikmati karya seni yang digambar tangan ini, untuk klarifikasi yang lebih baik
Memasukkan
Diberikan daftar sudut (dalam contoh ini diidentifikasi oleh AH), yang akan dipotong, menghitung jumlah sudut, tepi dan wajah yang baru.
Anda membuat input dalam bentuk apa pun yang Anda suka, asalkan merespons ke sudut yang sama (misalnya, bukannya AH Anda dapat menggunakan 1-8 atau 0-7, Anda dapat menganggapnya sebagai daftar, csv, apa pun)
Anda dapat menganggap daftar tersebut berbeda (setiap sudut akan muncul paling banyak satu kali), tetapi mungkin kosong. Daftar tidak akan mengandung sudut yang tidak ada.
Keluaran
Keluarkan tiga angka yang sesuai dengan jumlah sudut, tepi dan wajah. Output sebagai daftar diizinkan secara eksplisit. Ruang putih trailing diperbolehkan
Contohnya
{} -> 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
Akhirnya, ini adalah codegolf, jadi jawaban terpendek dalam byte menang. Harap jangan menggunakan celah standar.
Jawaban:
Jelly , 23 byte
Tautan monadik. Input adalah daftar sudut kubus sebagai koordinat Kartesius (kubus sejajar dengan sistem koordinat). Output adalah daftar bilangan bulat
[faces, corners, edges]
,.Cobalah online!
Bagaimana?
Jika sudut harus "dipesan" seperti pada pertanyaan maka ini bekerja dengan integer 0-7 sebagai AH selama 25 byte:
3R×L+“©®€‘ɓŒc^/€ḟ2<5S;`Żạ
(mengurangi penggunaan XOR, menyaring dua, lalu menghitung yang kurang dari lima).sumber
Arang ,
4845 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Menggunakan digit
0-7
untuk mewakili huruf-hurufABDCEFHG
dalam diagram. Output dalam urutan menghadap, sudut, tepi. Penjelasan:Ambil kode ASCII dari setiap karakter dan konversikan ke basis 2.
Bawalah produk kartesian dari daftar nomor-nomor basis 2 dengan sendirinya.
XOR pasangan angka dasar 2 bersama-sama dan jumlahkan angka 1 bit. Hitung berapa banyak pasangan memiliki jumlah 1 dan bagi dengan 2. Ini memberikan jumlah sudut yang bertepatan.
Hitung dan cetak jumlah wajah, sudut dan tepi.
sumber
JavaScript (Node.js) , 84 byte
Cobalah online!
sumber
Perl 6 ,
5958 byteCobalah online!
Menggunakan nomor
0
untuk7
mewakili sudut. Saya mungkin harus mencocokkan mereka dengan urutan yang sama seperti dalam pertanyaan ... oops? Menampilkan daftar dalam urutanfaces, corners, edges
.sumber