Mengingat topografi tanah dalam format gambar ASCII, cari tahu ke mana danau akan pergi dan mengisinya. Asumsikan jumlah hujan yang tak terbatas.
contoh
memasukkan
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
keluaran
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
Input hanya akan berisi spasi dan #
tanda. Setiap baris akan memiliki panjang yang sama. Outputnya harus #
pola yang identik dengan ruang di mana air akan terakumulasi diisi dengan @
tanda.
Baris input bawah akan selalu menjadi semua # tanda. Tidak akan ada lubang atau overhang di tanah. Kode terpendek menang.
@
yang terisi.([char[]]"$a"-eq'@').Count
sini. Tidak terlalu banyak menambahkan. Setuju pada hal ini menjadi agak terlalu mudah. Namun, tidak jatuh ke ranah apa yang saya turunkan.Jawaban:
sed -r,
2724 (27 dengan-r
)24 (27):
27 (30):Bersaing dengan yang terbaik dari dua solusi perlsumber
#|@
akan menjadi satu char lebih pendeke
s, dan satu lagi dari saran S.Mark untuk kembali ke 27.Perl, 25
sumber
-p
mungkin?).e
tidakkah dihitung dan dengan demikian hanya diperlukan 3 karakter tambahan?Perl (> = v5.9.5), 24 karakter
Jalankan dengan
perl -p
:Ini membutuhkan Perl 5.9.5 atau lebih baru untuk menggunakan pelarian khusus
\K
.sumber
. I don't know the full rules about flags, so not sure the
e`.Windows PowerShell, 36
74138sumber
Retina , 10 byte
Retina (jauh) lebih baru dari tantangan ini. Tetapi solusi ini terlalu rapi untuk tidak mempostingnya:
Cobalah online.
Ini hanyalah tahap transliterasi yang menggantikan ruang dengan
@
, tetapi operasi terbatas pada kecocokan#.*#
, yaitu karakter yang dikelilingi oleh tanah di kedua sisi.sumber
Ruby 1,8, 30 karakter
Jika ada yang tahu mengapa ini tidak berhasil di Ruby 1.9 (diuji dengan 1.9.2p0 dan 1.9.2p204), meskipun dokumentasi mengatakan itu harus bekerja , beri tahu saya!
sumber
$_=$_.
awal baris kedua membuatnya bekerja di 1.9.2 sehingga ada hubungannya denganKernel.gsub
. Rubinius juga gagal tanpa menambahkan secara eksplisit$_
.-p
bendera). Bash hash dan nama penerjemah tidak masuk hitungan.Python,
9592 bytesumber
05AB1E ,
1716 byteCobalah online.
Penjelasan:
sumber
Javascript, 107 byte
Tidak Disatukan:
sumber
return
, dan Anda dapat menghapus dua titik koma, dan itu bisa sajafunction f(x)...
atauf=function(x)...
Python,
10810692 bytesumber
Jelly , 15 byte
Cobalah online!
sumber
Pip , 15 byte
Mengambil input sebagai string multiline melalui argumen baris perintah: Cobalah online! (Bergantian, menentukan
-rn
bendera dan mengubah pertamaa
untukg
, dan Anda dapat memberikan masukan melalui stdin: Cobalah secara online )Ide yang sama dengan jawaban Retina: ganti setiap pertandingan regex
#.*#
dengan hasil transliterasi ruang ke@
dalam pertandingan. Pip tidak bisa menandingi ketegaran Retina untuk masalah regex murni - tapi tidak setiap hari Anda bisa mengikat dengan Jelly.sumber