Saya sudah membuat ini dengan Python, tetapi tampaknya itu bisa dipersingkat banyak:
txt = input("Type something.. ")
c = "#"
b = " "
print(c * (len(txt) + 4))
print(c, b * len(txt), c)
print(c, txt, c)
print(c, b * len(txt), c)
print(c * (len(txt) + 4))
Jadi jika tipe pengguna:
Hello World
Program mencetak:
###############
# #
# Hello World #
# #
###############
Bytes paling sedikit menang — dan tentu saja, jawabannya dapat ditulis dalam bahasa apa pun.
Jawaban:
CJam,
2220 byteUji di sini.
Penjelasan
Bagaimana Anda membungkus kisi-kisi karakter 2D dalam satu lapisan spasi (atau karakter lain)? Benar: empat kali, Anda menambahkan spasi untuk setiap baris dan kemudian memutar grid dengan 90 derajat. Itulah yang saya lakukan di sini dengan delapan rotasi: empat untuk spasi, empat untuk
#
:sumber
vim,
2827 penekanan tombolAsumsikan input disediakan sebagai satu baris teks dalam file yang sedang terbuka.
Penjelasan:
Ini juga dapat dijalankan sebagai "program" seperti:
Yang agak berbelit-belit, tetapi berhasil.
sumber
pb - 89 byte
Ini adalah jenis tantangan yang dibuat pb! Bukannya itu kompetitif untuk tantangan semacam ini atau apa pun. Ini masih merupakan bahasa golf yang mengerikan. Namun, tantangan seperti ini jauh lebih sulit untuk diselesaikan di pb daripada yang lain. Karena pb memperlakukan outputnya sebagai kanvas 2D dan mampu menulis ke semua koordinat, apa pun yang melibatkan penempatan teks / gambar di sekitar teks (yaitu tantangan ini) ditangani agak secara intuitif.
Lihat saja:
Visualisasi ini dibuat dengan versi pbi, pb interpreter yang sedang dikembangkan. Garis dengan latar belakang biru adalah
Y=-1
, di mana input disimpan ketika program dimulai. Kotak dengan latar belakang merah adalah lokasi saat ini dari kuas. Persegi panjang dengan latar belakang kuning adalah di mana saja karakter ascii 32 (spasi) secara eksplisit ditulis ke kanvas. Setiap ruang kosong tanpa latar belakang ini sebenarnya memiliki nilai0
, yang dikonversi menjadi spasi.Berikut kode dengan komentar yang saya gunakan saat menulisnya, dengan beberapa tajuk bagian yang relevan secara tematik;)
sumber
Not that it's competitive... It's still a horrible golf language.
Saya mengatakan itu, tetapi saat ini saya hanya terikat untuk yang terakhir. Saya berharap untuk menjadi yang terakhir. : Dbrainfuck - 156 byte
Ini mungkin golf. Ada beberapa tempat di mana saya tidak tahu apakah akan lebih baik untuk menyimpan nilai di suatu tempat untuk digunakan kembali atau untuk memperbaikinya / pergi mendapatkannya dari tempat lain di kaset. Alih-alih melakukan pekerjaan untuk mencari tahu, saya tidak melakukan itu. : D
Dengan komentar:
sumber
K, 21 byte
Daftarkan string, Tambahkan spasi ke keempat sisi string, lalu tambahkan octothorpe ke setiap sisi string. Beraksi:
Bekerja di oK, Kona dan k5.
Ada beberapa variasi dalam satu karakter panjang yang menghilangkan redundansi di atas, tetapi tidak ada yang nampak impas ketika kita hanya perlu melakukan operasi "wrap" dua kali:
sumber
Pyth, 31 byte
Terima kasih kepada orang-orang di komentar yang memberikan petunjuk tentang cara bermain golf lebih lanjut, saya benar-benar tidak tahu bahasa dengan sebaik yang Anda bisa (mungkin) katakan.
sumber
"#"
sama dengan\#
. Jika Anda harus menggabungkan banyak objek yang sebaiknya Anda gunakanj""[
diikuti oleh daftar objek, yang sama denganjk[
.s[
sama denganjk[
untuk array string. Selain itu, Anda juga dapat menetapkanK
dengan cepat, sepertijk[K\#
, dan hanya membatalkan penetapan awal. Menugaskanlz
untukJ
tidak membantu jika hanya digunakan dua kali, jadi simpanJ
untuk hal lain. Di sini, jika Anda menukarZ
untukJ
Anda dapat menghapus=
. Akhirnya, Anda dapat menetapkanJ
dengan cepat. Kode kemudian terlihat seperti ini:_Js[K\#*d+2lzKb*K+4lz)jd[KzK)J
Python 3, 88 byte
Terima kasih @WorldSEnder
Contoh I / O:
sumber
s=" "
pada awalnya menghemat 1 byte secara keseluruhan saya pikir.;
bukannya baris baru btw? Keduanya harus satu byte, bukan?Perl,
4376 byteUbah setiap baris input teks seperti yang ditentukan:
Sebagai contoh:
Inilah cara melihat apa yang sebenarnya dilakukannya:
Jadi sesuatu yang lebih seperti ini:
sumber
e
pengubah ... tetapi jika Anda melakukan itu, Anda mungkin juga hanya drop substitusi sama sekali:$x="#"x(4+($z=y!!!c));$y="#".$"x(2+$z)."#\n";$_="$x\n$y# $_ #\n$y$x"
. Gunakan baris baru yang sebenarnya,\n
dan itu hanya 65 byte, ditambah 2 untuk-lp
.JavaScript (ES6), 73
Sangat menggunakan string template, 2 baris baru signifikan dan dihitung.
Tes menjalankan cuplikan di bawah ini di peramban apa pun yang mendukung EcmaScript 6 (FireFox dan Chrome terbaru, mungkin Safari).
Ini cukup pendek dari percobaan pertama saya, yang berasal dari tantangan lain ini :
sumber
z
sebagai efek samping?)Python 2, 74
Mengambil input dalam tanda kutip like
"Hello World"
.# _ #
.b
adalah# #
dengan jumlah yang tepat ruang, dikelilingi dengan baris baru untuk kedua sisi untuk mengurus semua empat baris.#
dikalikan dengan panjang inputGaris-garis digabungkan dan dicetak.
sumber
MATLAB,
9391 byteBukan yang tercantik, tapi itu menyelesaikan pekerjaan.
Penjelasan Kode
Langkah 1
Baca dalam string dari STDIN dan letakkan spasi tunggal yang memimpin dan tertinggal di dalamnya. 32 adalah kode ASCII untuk spasi dan bacaan di input sebagai tipe string menyatukan 32-an ke dalam spasi.
Langkah 2
Nyatakan larik karakter 5 tanda hash dalam vektor kolom.
Langkah # 3
Buat matriks karakter 2 baris yang diisi oleh tanda hash pertama diikuti oleh spasi setelah. Jumlah karakter adalah panjang dari string input ditambah 2 sehingga kita dapat mengakomodasi ruang sebelum dan sesudah string.
Langkah # 4
Kita akan menyatukan semuanya. Kami menempatkan kolom pertama dari 5 hash, diikuti oleh bagian tengah dan diikuti oleh kolom lain dari 5 hash. Bagian tengah terdiri dari matriks karakter 2 baris yang dibuat pada Langkah # 3, string input itu sendiri yang memiliki ruang trailing dan terdepan, diikuti oleh matriks karakter 2 baris tetapi dibalik.
Contoh Berjalan
sumber
Perl 5.14+,
5756 byte54 byte + 2 byte untuk
-lp
(jika input tidak berakhir pada baris baru,-l
dapat dijatuhkan untuk menghemat satu byte).Menerima input pada STDIN:
Bagaimana itu bekerja
Inti dari program ini adalah daftar slice:
Ini memberikan cara yang ringkas untuk menyimpan tiga baris unik dari output (dua baris pertama dari kotak pembatas adalah sama dengan dua baris terakhir, hanya dicerminkan). Untuk string input
foo
, hasil dari slice adalah:Menggabungkan nilai-nilai ini dengan
#\n#
memberi kami kotak kami.Perhatikan bahwa Perl 5.14+ diperlukan untuk menggunakan
r
pengubah non-destruktif untuk operator transliterasiy///
.sumber
PHP,
9593 byteTidak persis brilian atau yang serupa, tapi itu sebenarnya menyenangkan!
Tidak persis cantik atau apa pun, tetapi itu bekerja dengan cemerlang!
Terima kasih kepada @Titus karena telah menghemat 2 byte.
sumber
$argv
alih-alih$_GET
dan-r
.C ++, 198 Bytes
Penusukan pertama saya pada codegolf, dan sementara saya belajar C ++ mungkin bukan bahasa terbaik untuk bermain golf, saya merasa saya telah melakukan dengan sopan (?) Untuk percobaan pertama saya.
Tidak disatukan
n, o dan t mewakili garis hash sepenuhnya, input (dengan hash di masing-masing ujung) dan garis antara input dan garis hash masing-masing.
sumber
> <> ,
106104 BytesSaya merasa bahwa> <> mungkin bukan bahasa terbaik untuk ini, tapi saya sudah terlalu jauh untuk menyerah dan tidak memposting ini. Di
*
akhir baris 4 seharusnya spasi. Tidakkah Anda suka tampilan kode ini yang sangat aneh? Cobalah online .Berikut adalah versi tanpa perubahan arah kecuali untuk memberikan gambaran tentang bagaimana pointer bergerak (perhatikan bahwa saya telah meninggalkan pernyataan "teleport", yaitu
.
).Arah aliran:
Penjelasan
Visualisasi stack saya akan didasarkan pada input
input
. > <> adalah bahasa dua dimensi, jadi perhatikan di mana pointer bergerak di antara garis, karena mengeksekusi kode di bawahnya (dalam kode ini<>v^
ini terutama digunakan untuk mengubah arah). Saya akan memulai penjelasan saya dari tempat penunjuk dimulai. Perhatikan bahwa akan ada dua garis yang diulang, saat penunjuk bergerak mundur setelah garis kelima.Apa yang selalu saya temukan keren tentang> <> adalah kemampuannya untuk memodifikasi kode sumbernya sendiri, dan saya memanfaatkannya dalam program ini. Baris 3 dan 4 digunakan kembali untuk mencetak dua baris terakhir melalui modifikasi karakter di masing-masing.
Baris 1: Input loop
Tumpukan:
[-1,t,u,p,n,i]
Baris 2: Menghasilkan garis output ketiga
Tumpukan:
[9,9,9,9,#, ,t,u,p,n,i, ,#]
Baris 3: Mencetak baris pertama keluaran
Tumpukan:
[0,9,9,9,#, ,t,u,p,n,i, ,#]
Keluaran:
Baris 4: Mencetak baris kedua dari output
Tumpukan:
[0,9,9,#, ,t,u,p,n,i, ,#]
Output (
*
mewakili ruang):Baris 5: Mencetak baris ketiga dari hasil
Tumpukan:
[9,9,0]
Keluaran:
Baris 6: Mengatur dirinya untuk mencetak garis keluaran keempat dan kelima
Tumpukan:
[0,9,9,0]
Baris 4: Cetak baris keluaran keempat
Tumpukan:
[0,9,0]
Output (
*
mewakili ruang):Baris 3: Cetak baris keluaran terakhir
Tumpukan:
[0,0]
Keluaran:
sumber
PHP,
9391 byteMengambil input dari argumen baris perintah; keluar dari spasi atau gunakan tanda kutip tunggal. Jalankan dengan
-r
.sumber
Pyke (tidak kompetitif), 6 byte
Coba di sini!
Pyke ditulis setelah tantangan dan karenanya tidak kompetitif.
.X
mengambil string dan string konstan arg dan mengelilingi string dengan grup karakter tersebut. Arg konstan dapat hingga 8 karakter dan memiliki efek berbeda pada bagaimana string dikelilingi.sumber
05AB1E,
26 byte, Tidak bersaingCobalah online!
EDIT: Woah! Tidak menyadari bahwa ini adalah tantangan lama! Maaf!
sumber
C # - 142 byte (tubuh metode adalah 104)
Tidak Disatukan:
sumber
PowerShell,
8482 bytesumber
Lua, 90 byte
sumber
Ruby, 83 byte
Saya kira itu bisa golf lebih lanjut, tetapi karena belum ada jawaban Ruby, ini dia:
sumber
Racket 172 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
C #,
116110 byteTidak Disatukan:
Versi awal:
Program lengkap dengan uji kasus:
sumber
var
sebagai gantistring
.var
kata kunci hanya membolehkan satu deklarasi.C (gcc) 165 byte
Versi tidak disatukan
sumber
SmileBASIC, 73 byte
sumber