Saya benci kode mengasapi!
Jadi saya memutuskan untuk mengganti sistem Windows 7 saya dengan versi golf. Namun, saya tahu itu tidak mudah, jadi mari kita membangun prototipe terlebih dahulu. Ini akan mengambil daftar windows dari pengguna dan menunjukkannya menggunakan tampilan pseudo-grafis pada output standar.
Misalnya: input pengguna:
0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5
Keluaran Code Golf® Window Manager ™:
┌──────────────┐ │ :::::::: ┌─────┴┐ │ :::::::: │: ┌────┴┐ │ :::::::: └─┤: ┌───┴┐ │ :::::::::: └─┤ :::: ├┐ │ :::::::::::: └─┬──┘├┐ │ :::::::::::::: ├─┬─┘│ │ :::::::::::::: │ └──┘ │ :::::::::::::: │ │ :::::::::::::: │ └────────────────── │ :::: │ │ :::: │ ┌────┤ :::: │ │ :::: │ :::: │ └────┴────┘
Memasukkan:
- Diambil dari input standar (atau, jika sistem Anda tidak memiliki
stdin
, metode apa pun yang dapat memberikan beberapa jalur input) - Setiap baris berisi 4 angka, dibatasi oleh koma - koordinat jendela
- Dua angka pertama: sudut kiri atas; dua angka terakhir: sudut kanan bawah
- Menggunakan
x,y
notasi
Keluaran:
- Tulis ke output standar (atau, jika sistem Anda tidak memiliki
stdout
, apa pun yang menampilkan teks monospace) - Gunakan karakter menggambar kotak tunggal dari Kode 437 untuk menggambar batas jendela
- Windows yang ditentukan kemudian dalam input mengaburkan yang ditentukan sebelumnya
- Isi jendela dengan karakter titik dua:
:
- Ruang depan dan belakang tidak apa-apa, asalkan tidak merusak perataan jendela
Catatan:
- Resolusi maksimum yang ingin saya dukung: 76 (horizontal) oleh 57 (vertikal)
- Tidak perlu mendukung input yang buruk
- Jumlah jendela maksimum: 255 (jika Anda membutuhkan batas)
cmd
Shell Windows 7 saya menampilkan codepage 437 karakter secara default; jika ada yang punya cara untuk melakukannya di linux (menggunakanxterm
atau apa pun), tolong jelaskan di sini
Untuk referensi, kode karakter adalah:
┌da ─c4 ┬c2 ┐bf
│b3 :3a │b3 │b3
├c3 ─c4 ┼c5 ┤b4
└c0 ─c4 ┴c1 ┘d9
Total: 12 karakter berbeda.
javascript:$('pre').css('line-height','1em')
Jawaban:
Python, 397 karakter
Ubah
C="...
keC=u"...
dan itu akan dicetak dalam unicode saja! Mungkin sulit untuk mendapatkan file untuk disimpan dengan benar karena halaman kode 437 karakter tidak lolos (baris komentar 'coding' pertama diperlukan).Pendekatannya adalah membangun peta secara bertahap menggunakan operator bit-wise. Versi yang kurang golf dengan komentar:
sumber
JavaScript ES6 (FF ≥ 31.0), 404 karakter
Tanpa ES6:
w('0,0,15,10\n15,10,20,15\n10,13,15,15\n9,1,16,3\n17,5,20,7\n11,2,17,4\n15,4,19,6\n13,3,18,5');
menampilkan dengan benar contoh OP.Tepi jendela dibuat menggunakan operator bitwise (Atas = 8, Bawah = 4, Kiri = 2, Kanan = 1).
sumber
function w(s){...}
menjadiw=(s)=>{...}
(dan seperti bijak untuk semua fungsi literal lainnya). Dan tabel pencarian karakter mungkin bisa diganti dengan string dengan karakter yang sama.Array.fill()
untuk menginisialisasi ke "desktop".[].fill([].fill(0,0,76),0,57)
, sayang sekali tidak berhasil. Bisakah saya menulis lebih pendek darinew Array(57).fill(new Array(76).fill(0))
?new
operator:Array(57).fill(Array(76).fill(0))
.Python, 672 karakter
Versi yang kurang mudah dibaca:
Dimulai dari versi di bawah ini:
sumber