Diberikan string 2D sebagai input, baik sebagai string dengan baris baru atau daftar garis, menampilkan koordinat (x, y)
semua hash ( #
) dalam daftar. Input hanya akan berisi hash dan spasi. (dan baris baru, jika Anda memilih untuk mengambil input sebagai string 2D)
Jika tidak ada hash, Anda dapat menampilkan apa pun.
Output harus jelas untuk nomor mana yang dipasangkan.
Contoh:
##
Haruskah output:
(0,0), (1,0)
Itu mengasumsikan pengindeksan berbasis 0, mulai dari kiri atas. Anda dapat mulai dari sudut mana pun, menggunakan pengindeksan berbasis 0 atau 1, dan / atau output y
terlebih dahulu. (misalnya dalam formulir y,x
).
Lebih banyak kasus uji (sekali lagi, semua menggunakan (x, y)
pengindeksan kiri-atas berbasis 0 ):
#
#####
#
(4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2)
# ###
### #
(0, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (4, 1)
Perhatikan bahwa semua kasus pengujian ini disusun menurut baris, bukan dengan mengikuti jalur.
Anda dapat mengasumsikan hash akan membentuk jejak berkelanjutan, yaitu # #
tidak akan pernah menjadi input. (mungkin tidak masalah, tetapi kalau-kalau ada yang ingin regex ini)
Anda juga dapat menampilkan koordinat dalam urutan apa pun yang Anda inginkan, yaitu kolom vertikal, baris horizontal, atau hanya daftar yang tidak disortir.
Jawaban:
Tergelincir , 2 + 1 = 3 byte
+1 byte untuk
p
bendera. Kode:Penjelasan:
The
p
-flag kembali posisi masing-masing kejadian berikut ini:Coba di sini!
sumber
Grime , 5 byte
Cobalah online! Format output agak funky, tetapi OP telah menyatakan bahwa itu valid.
Penjelasan
Grime adalah bahasa pencocokan pola 2D saya. Bagian setelahnya
`
adalah polanya , dalam hal ini 1 × 1 kotak yang mengandung karakter#
-c. Grime akan mencari kotak masukan untuk kecocokan, dan mencetak yang pertama ditemukan secara default. Bagian sebelumnya`
berisi opsi, dalam hal ini menandakan bahwa semua kecocokan (a
) harus dicetak, beserta posisi dan ukurannya (p
).sumber
MATL ,
7 65 byteIni menggunakan pengindeksan berbasis 1 dengan
(1,1)
di sudut kiri atas.Penjelasan:
Terima kasih @DJMcMayhem dan @LuisMendo untuk setiap -1 byte!
Cobalah online!
sumber
ooH#fh
untuk menghemat satu byte. (konversikan ke bilangan bulat, mod2) Karena spasi genap (mod 2 == 0, falsy) dan#
ganjil (mod 1 == 1, truthy)Python , 67 byte
Ini sebenarnya hanya golf jawaban Stack Overflow saya pada topik yang sama.
Cobalah online!
Loop melalui daftar 2D, merekam karakter hash, dan mengembalikan hasilnya. Kami menyimpan byte dengan menggunakan
char > '!'
daripadachar == '#'
, karena input hanya akan terdiri dari hash dan spasi, dan dengan demikian hashes (0x23
) akan menjadi satu-satunya karakter yang lebih besar daripada tanda seru (0x21
).sumber
JavaScript (ES6),
7067 byteKeluarkan daftar koordinat baris-dan-ruang-terpisah, misalnya
Anda bisa mendapatkan lebih pendek dengan format output aneh:
Ini output
untuk test case kedua. Masih jelas angka mana yang dipasangkan dengan ...
sumber
J , 12 byte
Cobalah online!
Penjelasan
sumber
Jelly , 8 byte
Cobalah online!
Diberikan array karakter 2D (= daftar string):
sumber
Dyalog APL 16.0, 5 karakter = 9 byte atau 6 karakter = 8 byte
Memberikan daftar (y, x) pasangan dari kiri atas.
⍸
dimana⎕
memasukkan=
sama dengan'#'
karakter ini ** Hal ini dimungkinkan untuk menyimpan karakter pada biaya satu byte dengan mengganti
'#'
dengan⍕#
(memformat root namespace)TryAPL online! Catatan yang
⍸
telah ditiru dengani
karena TryAPL menjalankan versi 14.0.sumber
⍸
tidak termasuk dalam versi byte tunggal. Lihat tautan "byte".JavaScript (Firefox 30-57), 61 byte
Mengembalikan koordinat berbasis 1. Beralih antara
[y, x]
dan[x, y]
memesan dengan mudah. Tidak Terkumpul:sumber
Vim, 37 byte
Karena sebagian besar V kompatibel dari belakang, Anda dapat mencobanya secara online!
Solusi regex langsung, di mana ia menggantikan masing-masing '#' dengan lokasi tempat ditemukannya (pengindeksan satu berbasis). Saya sedikit khawatir ketika menulis ini bahwa lokasi akan berubah setelah mengganti yang pertama pada satu baris, tetapi itu tampaknya tidak menjadi masalah. TBH Saya sangat terkejut dengan betapa sederhananya solusi ini.
Sayangnya, vimscript sangat bertele-tele, sehingga sebagian besar byte berasal dari memisahkan hasil sehingga masih terbaca. Kalau tidak, kita bisa melakukannya
Tetapi ini menciptakan keluaran yang cukup sulit untuk ditafsirkan. Selain itu, itu hanya akan berfungsi jika kisi selalu 9x9 atau lebih kecil.
Ini adalah solusi yang sangat menyenangkan karena menunjukkan setiap pasangan koordinat di lokasi hash yang diwakilinya. Misalnya input
output
Tentu saja, jika kami menggunakan V, kami dapat menghapus baris baru, dan mengompres regex. Maka itu bisa saja
(32 byte)
Tapi karena ini adalah pendekatan yang sama persis dan masih menyakitkan, sepertinya tidak layak menggunakan bahasa golf.
sumber
Haskell, 53 byte
Input diambil sebagai daftar string. Outputnya adalah daftar
(x,y)
pasangan (0 diindeks), misalnyasumber
Lua, 141 byte
Sekarang jam 2:30 pagi, saya di tempat tidur, di telepon saya. Mengapa aku melakukan ini?
sumber
Mathematica, 12 byte
Bentuk operator
Position
. Mengasumsikan array karakter 2D. 1-diindeks mulai dari entri kiri atas. Menghasilkan daftar koordinat dalam formulir{row,column}
.sumber
char[]
, yang sebenarnya merupakan cara umum untuk menyimpan string dalam bahasa berbasis C. Juga, uraian tugas ini secara khusus menyebutkan "baik sebagai string dengan baris baru atau daftar baris", dan tidak menyebutkan daftar-daftar-karakter atau matriks karakter 2D.PHP, 69 byte
Menggunakan pengindeksan berbasis 1 mulai dari kiri atas.
Gunakan seperti:
Akan menampilkan:
sumber
C, 113 byte
Output dari kasus uji:
Cobalah online!
sumber
RBX.Lua, 131 byte
Harus menganggap input valid (Z adalah sumbu datar, spasi putih adalah
White
ubin, hashes dapat warna lain, bagian kiri atas terletak di0, 0, 0
) dan semua bagian adalah bagian dari model yang samaM
, dan model dinyatakan kosong.Input / output sampel:
sumber
Perl 6 , 25 byte (22 karakter)
Mengambil input sebagai daftar baris.
Output satu daftar per baris, masing-masing berisi (y, x) tupel untuk koordinat.
Cobalah online!
Bagaimana itu bekerja
sumber
Groovy,
8068 byteContoh input:
Contoh Output:
sumber
Ruby , 24 + 1 = 25 byte
+1 byte untuk
-n
bendera. Koordinat berbasis 1, satu nomor per baris.Cobalah online!
sumber
C, 80 byte
Membutuhkan input sebagai array char yang dibatasi baris baru, mencetak output ke layar.
Tidak digabungkan & penggunaan:
sumber
x,y;f(char*s){for(x=y=0;*s;*s++==10?++y,x=0:++x)*s==35&&printf("%d,%d ",x,y);}