Terinspirasi dan dijarah dari tantangan dadu oleh Arnauld
Memasukkan
Anda diberi matriks dadu 5x1 atau 1x5 (pilihan Anda) yang terdiri dari sub-matriks biner 3x3.
Tujuan
Diberikan matriks dadu yang valid, Anda harus skor menggunakan aturan 6,5,4 yang adalah sebagai berikut:
- Jika gulungan berisi 6,5,4, tambahkan dua dadu lainnya dan itu adalah skor Anda. Misal 4, X, 5,6, Y = X + Y
- Jika tidak, skornya adalah 0. Misalnya 5,5,5,4,1 = 0
Pola dadu
Aturan
- Matriks dijamin hanya berisi wajah yang valid tetapi akan mencakup permutasi 2,3 dan 6. Anda juga dapat mengambilnya dalam orientasi mana pun dengan cara apa pun yang nyaman. Harap sebutkan orientasi yang dipilih dalam jawaban Anda.
- Keluarkan skor yang dihitung
- Celah Standar dilarang
- Ini adalah kode-golf .
Contohnya
// 2,5,2,4,6: Output should be: 4
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,1,0 ],
[ 1,0,1 ],
[ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,0,0 ],
[ 1,0,1 ],
[ 1,1,1 ],
[ 0,0,0 ],
[ 1,1,1 ] ]
// 1,6,2,4,6: Output should be: 0
[ [ 0,0,0, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 0,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
// 5,6,6,4,6: Output should be: 12
[ [ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ] ]
// 3,3,4,5,6: Output should be: 6
[ [ 0,0,1, 1,0,0, 1,0,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 0,0,1, 1,0,1, 1,0,1, 1,1,1 ] ]
// 2,5,2,5,6: Output should be: 0
[ [ 0,0,1, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,0,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
[2,5,2,5,6]
. Solusi saya saat ini berfungsi untuk keempat kasus uji Anda (dengan menggunakan metode yang sangat buruk dalam mengurutkan nilai dan menghapus sub-daftar[4,5,6]
), yang tentu saja gagal bila5
ada dua kali.Jawaban:
05AB1E , 15 byte
Cobalah online! atau Lihatlah test suite!
Menggunakan trik yang sama seperti yang digunakan Chas Brown dan Lynn: mengurangi setiap bilangan bulat di setiap sub-matriks 3x3 daripada mengurangi 15 di akhir. Mengharapkan input dalam format kolom.
Bagaimana itu bekerja
sumber
Jelly , 14 byte
Cobalah online!
Menerima kolom dadu.
Sama seperti jawaban Python Chas Brown, ini mengimbangi setiap nilai dadu dengan −3 sehingga kita tidak perlu mengurangi 15 (4 + 5 + 6) dari jumlah terakhir.
sumber
Python 2 , 81 byte
Cobalah online!
Semua input diharapkan dalam bentuk kolom.
sumber
Perl 6 ,
4846 byteTerima kasih kepada Ramillies untuk -2 byte
Cobalah online!
Blok kode anonim yang mengambil matriks secara vertikal dan mengembalikan integer.
Penjelasan:
sumber
.flat
sebagai gantinya.[*;*]
, seperti iniMATL , 12 byte
Cobalah online!
Mengambil input dalam orientasi horizontal sebagai matriks 3x15. Trik @Chas Brown mengurangi 3 awal (bukan 15 nanti) menyimpan banyak byte dengan cara yang berbeda.
sumber
Brachylog ,
2322 byte24 byte (jam matahari)Salah satu program branchylog pertama saya. Mungkin bisa bermain golf lebih banyak.
Mencetak false jika tidak ada 4,5,6. idk bagaimana membuatnya keluaran 0.Cobalah online!
sumber
0
instadfalse
, menambahkan|∧0
pada akhirnya harus melakukan pekerjaan.ḍ₅
: Coba online!I
: Coba online! (perhatikan bahwa saya juga telah menambahkan di|∧0
sini).R , 56 byte
Cobalah online!
sumber
c(m)
untuk meratakanm
bukanm[1:45]
Pyth , 20 byte
Mengharapkan input sebagai kolom dadu (seperti dalam kasus uji 1). Cobalah online di sini , atau verifikasi semua uji sekaligus di sini .
sumber
05AB1E ,
302922 byteMembawa matriks dadu di bawah satu sama lain.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
JavaScript (ES6), 78 byte
Mengambil input sebagai kolom dadu.
Cobalah online!
Bagaimana?
Dengan melakukan
a + 0
, kami secara implisit meratakan dan memaksa array input ke string dan menambahkan trailing"0"
, yang memberikan tepat 5x18 = 90 karakter.Misalnya, test case pertama mengarah ke:
Untuk setiap dadu substring s dari 18 karakter, kita menghitung jumlah n pips + 1 dan kami memperbarui jumlah pips t dengan:
Kami menggunakan kembali larik input a sebagai bitmask untuk melacak setiap dadu yang ditemui setidaknya sekali:
Jika gulungan berisi setidaknya satu 4 , satu 5 dan satu 6 , bitmask a akan memiliki bit-bit berikut ini:
Kami menguji ini dengan melakukan
a > 223
. Jika berhasil, kami mengembalikan t . Karena kami menghitung satu pip ekstra untuk setiap dadu dan karena kami tidak ingin menghitung 4 + 5 + 6 dalam hasilnya, t diinisialisasi ke - (5 + (4 + 5 + 6)) = -20 .sumber
Dyalog APL ,
2827 byteCobalah online!
Mengambil matriks 1x5 dari matriks dadu 3x3 sebagai input.
+/¨,¨
menambahkan nilai pip dari masing-masing dadu. Kemudian kurangi 3, gunakan∨/⍉⍵∘.=⍳3
untuk memeriksa apakah ada setidaknya satu contoh masing-masing (1, 2, 3), DAN hasilnya bersama-sama dengan∧/
dan gandakan hasilnya (0 atau 1) dengan jumlah nilai dadu yang disesuaikan (+/⍵
).sumber
Retina 0.8.2 , 45 byte
Cobalah online! Mengambil dadu vertikal. Penjelasan:
Bentuk kembali dadu menjadi 5 baris individu.
Dapatkan nilai dari setiap baris.
Urutkan sesuai urutan.
Bergabung dengan mereka menjadi satu string.
Pastikan ketiga dadu yang diperlukan ada.
Konversi masing-masing mati ke unary.
Kurangi pencocokan 4, 5 dan 6.
Jumlahkan dan konversikan ke desimal.
sumber
Jelly , 18 byte
Tautan monadik
Cobalah online!
sumber
Oktaf , 54 byte
Cobalah online!
Port jawaban MATL saya.
sumber
Ruby , 78 byte
Cobalah online!
sumber