Anda diberi satu string ASCII yang dapat dicetak yang tidak mengandung baris baru, dan "cetakan" multiline, yang mengandung spasi ( ), dan hash (
#
).
Anda harus menggunakan karakter demi karakter dalam string, dan mengganti hash menggunakan karakter dari string dalam urutan kiri-kanan, atas-bawah. Jika string terlalu pendek untuk mengisi cetakan, Anda berhenti mengeluarkan, jika string terlalu panjang Anda memotong string untuk secara tepat mengisi cetakan.
Contoh string / cetakan (string terlalu panjang, terpotong):
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Contoh output:
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipi
tmagn anoneratgravid acondi mentum .Vestibulumnecnisllore
m.Fus ce molest i evive rranib h,euelei fendni
slplac e r atno n.Na mblan dittur pislacu s,vita emole
stiela cus imp erdie tquis. Nullapu lvinar, exqui
ssolli citud inf acilisis,er atnull avolutp atl ectus,
etluct usenim vel itegetex.I nhacha bitas seplatead
ictumst.Donecinter dumn ullalacinia,sodalesloremin
,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,q
Contoh string / cetakan (string terlalu pendek, output berhenti):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Output yang sesuai:
Thi s p rob abl
y w o n '
t l ook g o
o d .
Kode terpendek dalam byte menang.
Penghargaan untuk ide ke situs web ini .
Jawaban:
CJam,
1614 byteTerima kasih kepada Sp3000 untuk menghemat 2 byte.
Berakhir dengan kesalahan jika string terlalu pendek, tetapi kesalahan dicetak ke STDERR.
Cobalah online!
Atau (jumlah byte yang sama):
Penjelasan
sumber
LabVIEW, 37 LabVIEW Primitif
membelah string menjadi teks dan cetakan kemudian mengubahnya menjadi sebuah array. Periksa cetakan jika ada # dan menempatkan char dari teks yang lain itu tidak melakukan apa-apa. Jika teks atau cetakan kosong, keluar dari loop
sumber
Haskell, 48 byte
disebut seperti "(ganti dengan string) # (string hashmark)":
Kurang bermain golf:
sumber
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Retina ,
4240 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Linefeed tambahan sangat penting.
Cobalah online!
Penjelasan
Kami pertama-tama mengganti
#
yang merupakan bagian dari kisi dengan karakter non-ASCII (tetapi diperluas ASCII)×
sehingga kami tidak membingungkan mereka dengan karakter#
yang mungkin muncul di baris pertama.Sekarang kita mengisi sebanyak
×
mungkin dari baris pertama dengan berulang kali mengganti karakter pertama yang×
dapat kita temukan dengan karakter pertama pada baris pertama (yang dihapus dalam proses).Akhirnya, kami menyingkirkan semua yang tertinggal di baris pertama dan juga apapun dari yang pertama
×
untuk memotong input di kedua arah.sumber
JavaScript (ES6),
575655 byteDisimpan 1 byte berkat @Neil !
Penjelasan
Bekerja dengan hash dalam string input dan mempertahankan spasi putih setelah string input selesai.
sumber
m.replace(/./g,c=>...)
lebih pendek./[^]/
bukan/.|\n/
. (Juga minta maaf karena saran yang salah/./
.)Python 3,
696867 byteIdeone
Terima kasih kepada FryAmTheEggman, Chiel ten Brinke untuk byte off. Atau, saya bisa menggunakan Python 2 untuk yang ekstra (
print
tanpa()
).sumber
print
denganreturn
.pb , 359 byte
Dalam pb, input benar-benar satu dimensi. Tidak mengerti bahwa Anda menggambar bentuk dengan input Anda, hanya melihat satu garis panjang dengan beberapa byte dengan nilai 10 dilemparkan ke sana. Hal pertama yang dilakukan program ini adalah menyalin semua kecuali "baris" pertama input ke Y = 0, Y = 1, dll, untuk membuat bentuk cetakan.
Sesuatu yang saya perhatikan banyak di golf kode, tetapi terutama ketika bermain golf bahasa esoteris, adalah bahwa Anda sering tidak ingin memiliki dua cabang untuk berurusan dengan; Anda hanya mengatur diri sendiri bahwa Anda melakukan hal yang sama dalam kedua kasus tersebut. Cara naif untuk menyelesaikan masalah ini mungkin akan memeriksa panjang string terhadap jumlah hash di sisa input dan melakukan sesuatu tergantung pada hasilnya, karena itu harus berperilaku berbeda tergantung pada apa yang terputus. Tapi itu banyak byte.
Sebagai gantinya, setelah menyelesaikan cetakan, garis tambahan ditambahkan ke bagian bawah. Ini hanya
n
hash berturut-turut, di manan
panjang string. Sekarang talinya dijamin pas! Setelah memasukkan semua karakter string, baris tambahan yang ditambahkan akan dihancurkan tanpa syarat. Setiap hash sisa dalam cetakan yang tepat dihapus juga, dan itulah output yang diperlukan!Tentu saja, itu akan melanggar spesifikasi untuk hanya menghancurkan semua hash. Bagaimanapun, mungkin ada hash dalam string input! Untuk menangani ini, saya merujuk ke bagian lain dari spesifikasi:
(Tekankan milikku.) Pada saat kita berurusan dengan string, kita tidak benar-benar peduli jika ada baris baru di dalamnya, tetapi kita tahu bahwa tidak ada. Jadi, semua hash diganti dengan baris baru sebelum dimasukkan ke dalam cetakan! Setelah semua hash dihancurkan, semua baris baru diganti dengan hash lagi. Ini tidak mengubah seluruh output menjadi garis hash-delimited tunggal karena sifat output 2D pb berarti bahwa itu tidak pernah benar-benar menempatkan baris baru di akhir setiap baris, itu hanya melanjutkan ke baris berikutnya.
Tidak Disatukan:
sumber
ES6, 59 byte
70 byte jika teks dapat berisi hash:
sumber
Perl,
535142 + 2 = 44 byteHarus
-p
dijalankan. Penjelasan:sumber
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
alih-alih bergabungJelly,
108 byteCoba di sini!
sumber
#
input.Perl 6 , 72 byte
sumber
ES6, 47 byte
Mungkin solusi yang paling mudah.
Kode ini menciptakan fungsi anonim yang menerima 2 parameter dan mengembalikan hasil akhir.
Parameter pertama
S
adalah string "map" dengan Anda"#"
, sedangkan parameter keduaR
adalah "pengganti" untuk itu"#"
.sumber
Python 3
152127 byteProgram lengkap.
106 byte
Fungsi yang mengambil aliran sebagai input.
sumber