Kemarin, saya meninggalkan sandwich saya di atas meja. Ketika saya bangun hari ini, ada gigitan di dalamnya ... Apakah itu milik saya? Saya tidak ingat ...
Masalah:
Ambil representasi sandwich dan pola gigitan saya dan beri tahu saya apakah itu gigitan saya atau tidak.
Contoh:
Contoh 1:
Pola gigitan saya:
..
.
Sandwich:
#####
.####
..###
Keluaran:
truthy
Contoh 2:
Pola gigitan saya:
..
..
Sandwich:
...##
..###
.####
Keluaran:
falsy
Contoh 3:
Jika setidaknya ada 1 rotasi yang dianggap benar, hasilnya benar.
Pola gigitan saya:
.
.
.
Sandwich:
##.
#.#
.##
Keluaran:
Dua kemungkinan rotasi (menggigit di sudut timur laut atau barat daya).
truthy
Beberapa gigitan yang valid:
..
.
...
.
.
.
.
.
..
. .
..
..
.
. .
Beberapa gigitan tidak valid:
..
...
.
..
.
.
Aturan:
Orientasi pola gigitan saya akan selalu untuk menggigit sudut barat laut. Dan harus diputar untuk menggigit sudut lainnya;
Akan selalu ada 1 dan hanya 1 gigitan di sandwich;
Gigitan di sandwich bisa di salah satu dari 4 sudut (diputar sesuai);
Pola gigitan akan selalu simetris di sepanjang diagonal utama;
Pola gigitan akan selalu setidaknya 1 lebar dan tidak kosong;
Sandwich akan selalu berbentuk persegi panjang dengan lebar dan tinggi sama atau lebih besar dari lebar pola gigitan saya;
Di input Anda, Anda dapat memilih 2 karakter non-spasi putih yang berbeda untuk mewakili sandwich dan gigitan;
Ruang dalam pola gigitan berarti bahwa gigitan saya tidak menyentuh bagian sandwich itu.
sumber
..
,..
?Jawaban:
Ruby ,
103 byte101 byteCobalah online!
Disimpan 2 byte dengan memindahkan penugasan ke penggunaan pertama a. Rupanya Ruby cukup pintar untuk tidak membingungkan koma dalam definisi array dan koma yang akan muncul dari penugasan variabel simultan (setidaknya dalam kasus ini: D)
sumber
Python 2 , 134 byte
Mengambil input sebagai dua daftar string (satu untuk setiap baris). Mengasumsikan tidak ada spasi spasi di garis.
Cobalah online!
Contoh:
sumber
Python 2, 173 byte
Cobalah online
Mengambil input sebagai dua daftar daftar karakter.
Pertama - sandwich
Kedua - gigitan
Pertama-tama ia memperluas bite array ke ukuran sandwich array:
[y<'.'and'#'or y for y in x]
mengganti semua spasi untuk#
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))
menghitung jumlah elemen yang hilangKemudian membandingkan semua 4 rotasi gigitan "diperpanjang" ini ke sandwich:
lambda R digunakan untuk mencerminkan daftar daftar secara horizontal
Dalam contoh sandwich yang ditautkan adalah:
Dan gigitan adalah:
sumber
R=Lambda:map...
dan tidakR=map...
B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]
untuk -4R=[x[::-1]for x in B]
untuk -4 juga. Secara umum, jangan gunakan peta dengan fungsi lambda