Diberikan 3 item input, daftar pasangan koordinat, string 2D, dan string karakter tunggal, menampilkan apakah karakter pada setiap koordinat string 2D sama dengan karakter tunggal. Anda dapat mengambil input dalam urutan apa pun dan koordinatnya dapat diindeks 1.
Anda dapat menggunakan string 2D sebagai daftar 2D, daftar garis, atau string 2D.
Contoh: (0,0), "#_\n__", "#" -> True
String adalah
#_
__
Char di koordinat (0,0)
(dari kiri atas) adalah #
. Ini sama dengan item input ketiga #
,, sehingga Anda menghasilkan True
(atau nilai kebenaran apa pun)
Contoh: [(0,0), (1,1)], "#_\n_#", "#" -> True
String adalah
#_
_#
Karakter pada koordinat (0,0)
dan (1,1)
keduanya #
, sehingga hasilnya benar.
Output hanya benar jika setiap koordinat cocok dengan hash. Tidak semua hash harus memiliki koordinat yang cocok. Jika tidak ada kemunculan char tunggal ( #
dalam beberapa kasus uji) dalam string 2D, outputnya masih palsu.
Anda dapat mengasumsikan koordinat akan selalu berada dalam batas-batas string 2D.
Lebih banyak kasus uji: (Saya menempatkan char kedua untuk kemudahan keterbacaan)
[(0,0), (2,1), (3,0)], #
#_##
#_##
True
[(0,0), (1,1), (3,0)], #
#_##
#_##
False (1,1 is not a hash)
[(1,1)], a
#a##
#a##
True
[(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)], ' '
####
#
#
True
Perhatikan case tes terakhir menggunakan spasi sebagai string char tunggal, dan hash di sekitar spasi.
Terkait (kebalikan dari tantangan ini)
(row, column)
tetapi dalam contoh koordinat terakhir dalam format(column, row)
.Jawaban:
Dyalog APL , 8 byte
Meminta daftar pasangan koordinat (baris, kolom), lalu array 2D, lalu karakter.
[⎕]
meminta koordinat dan menggunakannya untuk menyebarkan pick dari⎕
input yang diminta (array 2D)=
bandingkan elemen yang dipilih⎕
input (karakter)∧/
periksa apakah semuanya benar (DAN-reduksi)Uji kasus (
⎕IO←0
untuk mencocokkan contoh, tetapi ini tidak perlu):Contoh pertama
Contoh kedua
Contoh ketiga
Contoh keempat
Contoh kelima
sumber
Python, 39 byte
Mengambil input:
a
daftar(x, y)
koordinat bilangan bulatb
daftar stringc
string karakter tunggalsumber
f=
. Selamat datang di PPCG!JavaScript (ES6), 37 byte
Mengambil input:
a
array[x, y]
koordinat bilangan bulats
berbagai stringc
string karakter tunggalsumber
Oktaf,
453829 byteFungsi yang mengambil array karakter 2D sebagai
A
dan koordinat (berbasis 0)B
sebagai matriks dua kolom[col row]
dan karakter yang cocok sebagaiC
. Koordinat dua elemen (menggunakan perkalian matriks) dikonversi ke indeks linier.Catatan: Jawaban sebelumnya yang menggunakan matriks jarang salah.
Kontributor Lainnya:
Stewie Griffin karena menyimpan 5 byte, mencatat bahwa [0 1 0] dapat dianggap sebagai nilai palsu !!
Luis Mendo untuk menyimpan 2 byte itu
~0 == true
dan pemberitahuan tentang matriks jarang.Cobalah secara Online
sumber
all
dan menyimpan tiga byte.1 1 1
itu benar, dan1 0 1
salah dalam oktaf, jadi itu harus OK. :)true
dengan~0
menyimpan 2 byteMathematica, 28 byte
1-diindeks. Karena bagaimana susunan disusun dalam Mathematica, koordinat input harus dibalik (yaitu
(row, column)
)Pemakaian
sumber
Haskell, 27 byte
Contoh penggunaan:
( ["#_##","#_##"] ! '#' ) [(0,0), (2,1), (3,0)]
->True
.sumber
Jelly , 10 byte
Ini hanya berfungsi sebagai program lengkap. Urutan input adalah indeks, array string, string singleton.
Cobalah online!
Bagaimana itu bekerja
sumber
Perl 6 ,
4140 byteMengharapkan string 2D sebagai daftar 2D.
Berkat b2gills untuk -1 byte.
sumber
$_
alih-alih,\c
Anda bisa menggunakan.map:{…}
tabungan satu byte.map: {…}
. Itu berguna untuk diketahui. Juga, sayang sekali bahwa awalan||
belum diimplementasikan, itu bisa membuat lambda dalam hanyan eq h[||$_]
...C #,
8077 byteDisimpan 3 byte, berkat pinkfloydx33
a adalah pasangan koordinat, b adalah daftar garis, dan c adalah string karakter tunggal.
sumber
false
dengan1<0
dantrue
dengan1>0
dan menyimpan 3 byte.Haskell,
7263 byteInput dari
c [(0,0), (1,0), (3,0)] "#_##\n#_##" '#'
OutputFalse
Memasukkan
c [(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)] " \n ####\n # \n # " ' '
Keluaran
True
Tidak disatukan
sumber
c[]_ _=1<2;c((f,s):t)m n|n/=lines m!!s!!f=1>2|1>0=c t m n
if n/=lines m!!s!!f then False else c t m n
dapat digantikan olehn/=lines m!!s!!f&&c t m n
.You may take the 2D string as a 2D list, a list of lines, or a 2D string.
Anda dapat menjatuhkanlines
dan langsung mengambil daftar garis sebagai input.Scala, 68 byte
sumber
Clojure, 39 byte
Contoh (input string adalah vec dari vec karakter):
sumber