Para saudara lelaki dari ordo St Golfus yang Ringkas memiliki tradisi melafalkan doa singkat setiap kali mereka melihat seseorang membuat tanda salib . Karena tingginya tingkat dosa yang diukur di antara para wisatawan baru-baru ini, mereka telah memasang CCTV di biara, dan mereka telah mempekerjakan Anda untuk membantu mereka menjaga tradisi lama tetap hidup di zaman AI.
Tugas Anda adalah menganalisis keluaran dari perangkat lunak pelacakan jari para biarawan dan memberi tahu berapa banyak doa yang jatuh tempo. Input adalah matriks yang berisi bilangan bulat antara 0 dan 4. 1,2,3,4 mewakili posisi jari pada saat-saat bersamaan. 0 mewakili non-jari.
The One True Way TM untuk menyilangkan diri adalah:
.1.
3.4
.2.
("." cocok dengan angka apa pun). Namun, karena ketidakpastian tentang rotasi kamera dan kehadiran saudara-saudara Ortodoks Timur yang saleh di antara orang banyak (yang One True Way TM berada di arah yang berlawanan), Anda juga harus menghitung semua rotasi dan refleksi:
.4. .2. .3. .1. .3. .2. .4.
1.2 4.3 2.1 4.3 1.2 3.4 2.1
.3. .1. .4. .2. .4. .1. .3.
Satu digit dapat menjadi bagian dari banyak persilangan. Bantu para biarawan menentukan berapa kali AI mereka harus .pray()
dengan menghitung berapa banyak dari para pendatang 3x3 di atas hadir. Tulis program atau fungsi. Ambil input dalam bentuk apa pun yang wajar dan praktis.
Kasus-kasus wasiat:
// in
[[0,4,2,0],
[1,3,2,4],
[2,3,1,0]]
// out
2
// in
[[4,3,3,2,4,4,1,3,2,2],
[0,3,0,2,1,1,2,3,2,3],
[0,3,1,3,2,4,3,3,1,1],
[4,3,2,3,2,4,1,4,2,3],
[0,4,2,3,4,0,2,3,2,4],
[2,1,0,0,2,0,0,1,2,4],
[4,0,3,1,3,2,0,3,2,3],
[1,4,3,3,1,4,0,1,4,4],
[0,2,4,3,4,3,1,3,0,4],
[3,0,1,0,4,0,3,3,3,3]]
// out
3
// in
[[3,2,3,1,0,3,4,2,1,1,1,1,4,0,1,3,1,1,2,1,1,3,0,1,0,1,1,0,0,1,0,3,4,0,1,1,2,3,1,2,4,1,0,2,3,0,2,4,3,2],
[2,4,1,1,0,3,0,2,4,2,3,2,1,3,0,2,3,2,4,4,4,3,2,1,1,3,2,1,2,3,2,4,0,3,1,4,4,1,1,0,1,1,0,2,2,3,1,2,0,2],
[3,4,0,0,4,4,0,3,4,4,1,3,2,1,3,2,3,2,2,0,4,0,1,2,3,0,4,3,2,2,2,0,3,3,4,4,2,2,1,4,4,1,3,1,1,2,0,1,1,0],
[1,4,2,2,2,1,3,4,1,1,2,1,4,0,3,2,2,4,1,3,3,0,4,1,1,0,0,1,2,2,1,3,4,0,4,1,0,1,1,0,2,1,3,1,4,4,0,4,3,2],
[4,4,2,0,4,4,1,1,2,2,3,3,2,3,0,3,2,1,0,3,3,4,2,2,2,1,1,4,3,2,1,1,4,3,4,2,4,0,1,0,2,4,2,2,0,3,3,0,3,2],
[4,3,3,1,3,1,1,3,3,1,0,1,4,3,4,3,4,1,2,2,1,1,2,1,4,2,1,1,1,1,1,3,3,3,1,1,4,4,0,0,3,3,1,4,4,3,2,3,3,0],
[1,4,1,4,0,0,1,3,1,2,2,1,1,2,3,3,2,0,3,4,3,2,1,2,2,3,3,1,4,2,1,1,4,1,3,2,0,0,0,1,2,4,1,1,3,0,4,2,3,1],
[2,2,3,0,0,4,2,1,2,3,1,2,4,1,0,1,0,2,4,1,3,4,4,0,0,4,0,4,4,2,0,0,2,2,3,3,4,1,0,3,2,1,0,1,1,0,3,0,3,2],
[1,2,4,3,4,3,1,2,2,3,0,1,2,4,4,4,3,1,2,3,4,3,3,2,0,0,2,0,3,4,4,2,3,2,0,2,4,3,0,0,0,4,4,0,4,4,0,3,3,3],
[4,4,1,2,0,2,2,0,0,3,2,3,2,3,4,1,0,2,3,0,3,2,1,1,4,3,0,2,3,1,0,4,1,2,4,1,1,4,4,4,2,2,2,3,0,1,0,3,0,1],
[4,0,3,0,2,2,0,3,2,2,2,4,0,4,0,1,0,1,4,3,3,2,3,1,2,2,4,4,0,3,2,3,1,4,1,0,3,2,3,2,2,0,1,2,4,0,3,0,4,4],
[0,4,0,1,0,2,3,2,1,3,1,1,2,0,3,2,1,4,0,1,4,4,1,3,4,4,1,0,4,1,0,3,4,0,3,2,4,3,3,3,3,1,2,2,3,3,3,1,3,4],
[3,4,1,2,1,1,1,0,4,0,1,1,0,4,1,3,1,1,2,0,2,1,4,1,4,4,3,2,0,3,0,3,0,1,1,2,1,3,0,4,4,2,2,2,1,3,4,1,1,1],
[3,0,1,4,2,0,0,3,1,1,1,4,4,0,2,2,0,4,0,3,1,0,2,2,4,4,4,0,4,4,4,4,4,4,3,0,4,4,4,1,2,4,4,3,0,0,4,0,4,2],
[2,0,1,2,1,1,3,0,3,1,0,4,3,1,2,1,1,3,0,1,2,4,2,1,2,3,4,2,4,4,2,2,3,4,0,0,1,0,0,4,1,3,3,4,1,2,1,3,3,2],
[4,0,2,0,3,1,2,1,1,1,1,2,3,0,3,1,0,4,3,0,0,0,2,0,1,4,0,2,1,3,4,2,2,4,2,3,1,2,0,2,0,2,4,0,1,2,3,4,1,3],
[3,0,2,4,2,0,3,4,3,2,3,4,2,0,4,1,0,4,3,3,1,0,2,2,2,1,3,3,1,1,0,3,3,0,3,2,1,1,0,1,2,2,0,4,4,2,0,1,3,1],
[0,4,4,4,0,3,0,3,0,2,2,0,1,2,3,3,4,3,0,4,1,2,3,3,0,2,2,3,0,0,0,2,4,2,3,4,2,3,4,0,2,0,1,1,3,4,2,2,4,4],
[2,1,2,3,4,3,1,2,0,0,0,0,0,0,3,4,3,3,1,2,2,1,3,4,1,2,4,0,1,4,1,0,0,0,2,1,1,1,3,0,0,3,1,1,4,2,1,3,4,1],
[1,0,3,0,2,1,4,2,3,3,1,1,3,4,4,0,1,2,1,3,0,3,1,1,3,0,2,4,4,4,2,3,1,4,3,4,0,1,4,1,1,1,4,0,0,2,3,4,0,4]]
// out
8
"Terpujilah yang terpendek dari yang terpendek, karena itu memenangkan kerajaan upvotes." -Buku St Golfus 13:37
"Janganlah kamu menggunakan celah, karena itu adalah perbuatan jahat dari Lusifer." -Letter ke Meta 13: 666
Visualisasi sedikit orang membuat salib
Terima kasih @Tallallacka untuk visualisasi.
Jawaban:
Grime , 20 byte
Cobalah online!
Implementasi spec yang sangat literal:
n`
buat Grime menghitung jumlah subrektifangles dari input yang menghasilkan kecocokan..\1./\3.\4/.\2.
mendefinisikan kotak 3x3:Di mana
.
bisa karakter apa saja.oO
adalah pengubah orientasi yang memungkinkan persegi ini muncul dalam rotasi atau refleksi. Yangv
digunakan untuk menurunkano
s diutamakan sehingga kita tidak perlu tanda kurung di sekitar alun-alun.sumber
Siput ,
1716 byteCobalah online!
Penjelasan
A
membuat Snail menghitung jumlah kemungkinan jalur yang cocok di seluruh input.o
menetapkan arah awal ke arah ortogonal mana pun (bukan hanya ke arah timur). Pola itu sendiri ada di baris kedua:sumber
Haskell,
10810293 byteCobalah online!
Tidak ada regex. Pencocokan pola
di sudut kiri atas matriks, ambil
1
jika(l*r-1)*(t*b-1)==11
dan secara rekursif pergi ke kanan (drop.l.
) dan ke bawah (drop baris pertama). Jika polanya tidak dapat dicocokkan (di perbatasan kanan atau bawah) ambil a0
. Jumlahkan semua hasil.Edit: -9 bytes berkat @xnor.
sumber
2^(l*r)+2^(t*b)==4100
untuk memeriksa nomor, tetapi tampaknya kedua solusi kami ditipu oleh2,6
di tempat3,4
.0..4
(l*r-1)*(t*b-1)==11
.Perl, 70 byte
Termasuk +2 untuk
0p
Berikan matriks input sebagai blok digit tanpa spasi di STDIN:
Putar salib dengan memutar digit
sumber
Retina ,
9283 byteCobalah online! Penjelasan:
Cari semua kotak 3x3 yang tumpang tindih. Terlihat di belakang menangkap indentasi dua kali sehingga dapat diseimbangkan pada baris kedua dan ketiga. Input diasumsikan persegi panjang sehingga kami tidak perlu memeriksa bahwa saldo grup. Sel tengah bawah / atas dan sel tengah kiri / kanan kemudian ditangkap.
Urutkan setiap pasang sel ke dalam urutan.
Hitung pola valid yang tersisa.
sumber
Jelly , 26 byte
Cobalah online!
Penjelasan
-3 byte terima kasih kepada Jonathan Allan (2) dan Mr. Xcoder (3) (digabung)
sumber
D
. Buruk saya, diperbaiki....Fµ€ċ4R¤
daripada...Ḍµ€ċ1234
(perhatikan juga yang1234
bisa diganti dengan⁽¡ḋ
menyimpan satu)Z3Ƥ
bukanṡ3Z€
dan⁼J$µ€S
bukannyaḌµ€ċ1234
.Java 8,
135133131 byte-2 byte terima kasih kepada @tehtmi untuk formula yang lebih pendek:
(l*r-1)*(t*b-1)==11
untuk~(l*r)*~(t*b)==39
Penjelasan:
Cobalah online.
sumber
~(l*r)*~(t*b)==39
(Haskell~
tampaknya tidak memiliki 1 byte .)Sekam , 23 byte
Cobalah online!
Penjelasan
sumber
Dyalog APL ,
3029282726 bytes ( SBSC )Cobalah online!
sumber
⌽∘⊖×⊢
bisa lebih pendek 2 byte, bisakah Anda menebak caranya?×∘⌽∘⊖⍨
(⌽×⊖)
⊢/
untuk -1 lainnya. Saya tidak memikirkan itu. Dalam situasi ini Anda seharusnya tidak memuji saya.Jelly , 36 byte
Cobalah online!
37 byte
Untuk beberapa alasan saya tidak dapat memindahkan tautan
Ḋm2$$
ke atas.Cobalah online!
sumber
Bersih ,
255... 162 byteTidaklah bermanfaat jika sering menggunakan filter pola dalam pemahaman, tetapi dalam kasus ini, itu menguntungkan.
Cobalah online!
Menentukan fungsi
$
, mengambil[[Int]]
dan mengembalikanInt
.Pertama-tama menghasilkan semua simetri dari matriks
m
(mentransformasikan melaluif
), mengambiltails
yang memiliki tiga baris atau lebih, dan secara serempak memeriksa berapa banyak dari tiga set kolom pertama daritails
masing-masing baris sesuai dengan pola salib.Hal ini setara dengan menghitung jumlah memerintahkan
tails
-of-tails
pencocokan pola[[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]
- yang pada gilirannya secara logis sama dengan memeriksa jika, untuk setiap sel dalam matriks, sel yang sudut kiri atas setiap rotasi salib.sumber
Python 3,
120118 byteCobalah online!
Menggunakan fakta bahwa produk pasangan angka yang berlawanan dalam pasangan harus masing-masing 2 dan 12, dan membandingkan dengan satu set untuk mencakup semua orientasi yang berbeda. Mengambil input sebagai array bilangan bulat 2D.
sumber
f=
dalam skorJapt
-x
,393833 byteCobalah online!
-1 byte terima kasih kepada @Shaggy.
-5 byte berkat @ETHproductions dengan refactoring array.
Dibongkar & Cara kerjanya
Ada harus tetap menjadi cara yang lebih baik untuk menguji salib ...
sumber
e[2C]
.2
dië2
?