pengantar
Saya pikir semua orang setuju bahwa gambar yang bagus harus memiliki bingkai yang bagus. Tetapi sebagian besar tantangan di situs ini tentang ASCII-Art hanya ingin gambaran mentah dan tidak peduli tentang pelestariannya.
Bukankah lebih baik jika kita memiliki program yang membutuhkan ASCII-Art dan mengelilinginya dengan bingkai yang bagus?
Tantangan
Tulis sebuah program yang menggunakan ASCII-Art sebagai input dan outputnya dikelilingi oleh frame yang bagus.
Contoh:
***** *** * *** *****
menjadi
╔═══════╗ ║ ***** ║ ║ *** ║ ║ * ║ ║ *** ║ ║ ***** ║ ╚═══════╝
- Anda harus menggunakan karakter yang sama persis untuk bingkai seperti dalam contoh:
═ ║ ╔ ╗ ╚ ╝
- Bagian atas dan bawah bingkai dimasukkan sebelum baris pertama dan setelah input terakhir.
- Bagian kiri dan kanan frame harus memiliki satu bantalan ruang yang tepat untuk garis input terluas.
- Mungkin tidak ada spasi putih memimpin atau tertinggal dalam output. Hanya baris tambahan yang diizinkan.
- Anda dapat berasumsi bahwa input tersebut tidak memiliki spasi putih terkemuka yang tidak perlu.
- Anda dapat mengasumsikan bahwa input tidak memiliki spasi spasi tambahan pada garis apa pun.
- Anda tidak harus menangani input kosong.
- Input hanya akan berisi karakter ASCII yang dapat dicetak dan baris baru.
Aturan
- Fungsi atau program lengkap diizinkan.
- Aturan default untuk input / output.
- Celah standar berlaku.
- Ini adalah kode-golf , sehingga byte-count terendah akan menang. Tiebreak adalah pengiriman sebelumnya.
Selamat Coding!
Menggunakan beberapa ASCII-Art yang hebat, yang dihasilkan dalam setiap tantangan di situs ini, sebagai masukan untuk program Anda dan menunjukkannya dengan kerangka yang bagus sangat dianjurkan!
#
four times. Adapting such an approach here will be tricky at best, and not viable at worst.)Jawaban:
CJam, 45 chars / 52 bytes
Trying to avoid those expensive 3-byte chars was... interesting.
Try it online
Explanation
sumber
Haskell, 139 bytes
As an example I'm framing snowman "12333321".
How it works:
sumber
JavaScript (ES6), 138 bytes
This is 138 bytes in the IBM866 encoding, which at time of writing is still supported in Firefox, but 152 in UTF-8.
sumber
Bash,
173171150148147 bytes,157136134133 charactersMultiline:
Example execution:
Sample run from script:
sumber
...?${#2}+2:n))
instead of+1
, drop 2 spaces andprintf -v z %${n}s;
instead ofprintf -v z " %*.s" $n
.AWK, 159 bytes
Apparently
awk
can print Unicode if you can figure out how to get it in the code.sumber
Perl, 111 characters
(score includes +5 for the interpreter flags)
First, we find the longest line length
$n
, by numerically sorting the lengths of all lines.We set
$l
to be the header/footer bar to be$n
repetitions of the horizontal frame character.Then we print each line formatted to left-align in a field of width
$n
, sandwiched in between the frame characters.Result:
sumber
Pyth, 44 chars (58 bytes)
Explanation
Try it here.
sumber
PHP 5.3, 209 bytes
This only works using the encoding OEM 860. It is an Extended ASCII superset, used in Portuguese DOS versions. Since I'm Portuguese (and I used to love doing these "frames" in Pascal) and this is a standard encoding, I went ahead with this:
Here's the base64:
This answer was based on my answer on: https://codegolf.stackexchange.com/a/57883/14732 (the heavy lifting was all made there, just had to twitch a bit).
sumber
22+58+11+5+11+24+66+12=209
The last 12 is newlines and as it is DOS that means CRLF, or two bytes per newline. The charactercountonline site does not count newlines. Each of the non-ASCII glyphs are 1 byte in OEM 860.\n
into\r\n
, when opening the file in ASCII/text mode.Python 3, 119 Bytes
126 bytesInput:Output:
sumber
print"╔"+h+"╗\n"+"".join(o)+"╚"+h+"╝"
.def f(x):
n='\n';s="║ ";e=" ║";h=(x.find(n)+2)*"═";return"╔"+h+"╗"+n+s+x.replace(n,e+n+s)+e+n+"╚"+h+"╝"
<s>...</s>
). Also you can add<!-- language-all: lang-python -->
before your code-block to add syntax highlighting to your code.Python 2, 115 Bytes
Looks shorter than 115 here, but working file includes 3-byte UTF-8 BOM mark signature, bumping it up to 115 bytes. If you were to run it in Python 3 you wouldn't need the BOM and it'd get down to 112 bytes.
sumber
sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' codeGolf.py
C, 290 bytes
Golfed function
B
, with dependencies; takes input as null-terminated char*Somewhat-ungolfed function in full program
input
output
C golfing tips appreciated!
sumber