Kejahatan bahasa pemrograman esoterik memiliki operasi yang menarik pada nilai byte yang disebutnya "tenun". Ini pada dasarnya adalah permutasi dari delapan bit byte (tidak masalah dari mana kita mulai menghitung, karena polanya simetris):
- Bit 0 dipindahkan ke bit 2
- Bit 1 dipindahkan ke bit 0
- Bit 2 dipindahkan ke bit 4
- Bit 3 dipindahkan ke bit 1
- Bit 4 dipindahkan ke bit 6
- Bit 5 dipindahkan ke bit 3
- Bit 6 dipindahkan ke bit 7
- Bit 7 dipindahkan ke bit 5
Untuk kenyamanan, berikut adalah dua representasi lain dari permutasi. Sebagai sebuah siklus:
(02467531)
Dan sebagai daftar pasangan pemetaan:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Tugas Anda adalah untuk memvisualisasikan permutasi ini, menggunakan karakter kotak-gambar ─
, │
, ┌
, ┐
, └
, ┘
, ┼
(kode Unicode poin: U + 2500, U + 2502, U + 250C, U + 2510, U + 2514, U + 2518, U + 253C). Visualisasi ini harus memenuhi batasan-batasan berikut:
Baris pertama dan terakhir persis:
0 1 2 3 4 5 6 7
Di antara itu, Anda dapat menggunakan sebanyak mungkin garis yang Anda inginkan masing-masing hingga 15 karakter agar sesuai dengan karakter menggambar kotak Anda (Anda membutuhkan setidaknya 4 baris). Garis harus mulai secara vertikal di bawah salah satu digit di baris pertama dan berakhir secara vertikal di atas angka yang sesuai di baris terakhir. Delapan garis harus terhubung, dan hanya dapat melewati ┼
(yang selalu merupakan persimpangan, tidak pernah dua garis yang saling bersentuhan). Jalur yang tepat dari garis-garis itu terserah Anda (dan menemukan tata letak khusus golf adalah inti dari tantangan ini). Satu output yang valid adalah:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
Namun, tata letak lain yang menghubungkan dengan benar digit yang tepat juga baik. Tolong tunjukkan hasil pilihan Anda dalam jawaban Anda.
Anda dapat menulis suatu program atau fungsi dan tidak akan mengambil input apa pun. Keluarkan diagram baik ke STDOUT (atau alternatif terdekat) atau sebagai nilai pengembalian fungsi dalam bentuk string atau daftar string (masing-masing mewakili satu baris).
Standar kode-golf aturan berlaku, sehingga kode terpendek (dalam bytes) menang.
sumber
01234567
sebagai masukan dan kemudian menghubungkan bahwa ke01234567
? Jadi Anda harus mencari tahu tautannya sendiri? Ini akan menjadi tugas yang jauh lebih menantang, terutama untuk bermain golf.Jawaban:
Sebenarnya, 69 byte
Cobalah online! (perataan sedikit kacau di penerjemah online)
Sebenarnya memiliki keunggulan BESAR di sini - semua karakter menggambar kotak berada di CP437, jadi masing-masing hanya satu byte Meskipun setiap karakter yang diperlukan secara teoritis dapat dikodekan dalam 4 bit (karena hanya ada 9 karakter unik), 31 byte yang disimpan dengan mengompresi string akan hilang karena kemampuan pemrosesan string yang sangat buruk. Ini juga berarti bahwa konfigurasi 8x4 akan menghasilkan skor yang sama. Karena 8x4 tampaknya merupakan konfigurasi (vertikal) terpendek yang mungkin, ini optimal.
Terima kasih untuk Martin selama 3 byte!
Terima kasih kepada TimmyD untuk 4 byte lagi!
Penjelasan:
sumber
PowerShell v2 +,
172153148145142131123 byte (81 karakter)Saya bermain golf lebih jauh, menghilangkan kebutuhan untuk beberapa variabel dengan menggunakan blok kode inline. Ini mungkin dalam beberapa byte optimal.
Kami mulai dengan menyetel
$a
sama dengan rentang0..7
yang telah digabungkan dengan spasi. Ini karena default$ofs
(Output Field Separator) untuk sebuah array adalah spasi, jadi ketika array tersebut dikompilasi dengan""+
(dengan operator seperti ini, PowerShell akan mencoba untuk secara implisit melemparkan objek kanan sebagai objek kiri), hasilnya adalah rentang yang dipisahkan ruang.Itu diringkas dalam parens, yang menambahkan hasilnya ke dalam pipa. Kami kemudian menyiapkan satu variabel pembantu
$b
, diikuti oleh empat baris output dengan variabel yang sesuai di tempat (dipisah dengan baris baru literal), dan menggunakan blok kode sebaris untuk bagian berulang, diikuti oleh$a
lagi. Keempat garis dan$a
juga ditempatkan pada pipa, dan output tersirat di akhir.sumber
Javascript ES6,
168167 byteSunting: Whoops, ternyata saya menggunakan pipa
|
char bukan U + 2502│
di bagian fungsi, diperbarui jumlah byte.Mengembalikan string.
Keluaran:
Ekstra: Menggunakan metode @ TimmyD, saya punya solusi 167 byte lainnya:
sumber
JavaScript (ES6),
137134 byteSebagai bell-ringer, saya segera mengenali ini sebagai dua baris pertama dari Plain Hunt Major (perhatikan bahwa gambar yang ditautkan menggunakan 1-8 bukannya 0-7).
sumber
Pyth -
11910410081 byteSangat sederhana. (Ini sebenarnya byte saat ini).
Cobalah online di sini .
Saya juga mencuri output @ TimmyD:
sumber
MS-DOS Batch, 136 byte
Menggunakan output @ TimmyD. Ini mungkin bekerja di Windows Batch juga, tetapi halaman kode saya ada CP850, bukan CP437.
sumber
MATLAB / Oktaf,
112109 byteKeluaran:
Kode saya didasarkan pada ouputs dari @Dendrobium dan @ Neil .
sumber
/// , 112 byte (100 karakter)
Terima kasih @MartinEnder untuk -3 byte!
Terima kasih @MartinEnder untuk -9 byte!
Terima kasih @MartinEnder (OP) untuk menunjukkan aturan 15-char
Menggunakan
output @ TimmyD@ Marcosumber
Python3, 209 byte
Mengembalikan string.
Terima kasih kepada @Mego karena telah menghemat 2 byte!
Penghargaan badan karakter diberikan ke @TimmyD!
sumber
a,
bagian itu, yang juga akan menghapus kebutuhan untuk dipanggil dengan parameter.Sprects , 99 byte (87 karakter)
Menggunakan output @ Marco (ganti setiap karakter ke-16 dengan baris baru (regex:
(.{15}).
->\1\n
)).sumber
Bash + GNU sed, 140 byte
Keluaran:
Menggunakan output @ TimmyD : 142 byte
Keluaran:
sumber
Tcl , 205 byte
Cobalah online!
output
sumber
SOGL V0.12 , 64 byte
Coba Di Sini!
Pola dicuri dari PowerShell
sumber