Ini seharusnya menjadi tantangan kode golf di ujung spektrum yang lebih sederhana. Tapi saya pikir itu bisa bagus untuk mengeluarkan beberapa optimasi mikro di sini.
Ada tiga tipe dasar konektor DVI : DVI-A (analog), DVI-D (digital) dan DVI-I (terintegrasi). Selain itu, ada versi tautan tunggal dan tautan ganda konektor DVI-D dan DVI-I. Masing-masing dari lima konektor yang berbeda menggunakan set pin yang berbeda.
Mengingat salah satu A
, D1
, D2
, I1
, I2
sebagai pengidentifikasi untuk jenis konektor, mencetak representasi ASCII yang sesuai pin konektor ini:
A:
# # # # # # #
===== # # #
# # # # # #
D1:
# # # # # #
===== # # # # # #
# # # # # #
D2:
# # # # # # # #
===== # # # # # # # #
# # # # # # # #
I1:
# # # # # # # #
===== # # # # # #
# # # # # # # #
I2:
# # # # # # # # # #
===== # # # # # # # #
# # # # # # # # # #
( X:
Garis-garis bukan bagian dari output, Anda hanya harus mencetak 3 baris.)
Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN, ARGV atau argumen fungsi. Keluaran harus dicetak ke STDOUT, dengan umpan garis tambahan opsional.
Anda mungkin atau mungkin tidak menyertakan spasi tambahan di baris kedua A
konektor. Anda tidak boleh menggunakan spasi tambahan awal atau jejak di tempat lain.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
sumber
"I1"
bukanI1
?Jawaban:
CJam,
7970 byteTerinspirasi dari jawaban nutki . Ini juga memastikan bahwa tidak ada spasi spasi (kecuali untuk baris kedua)
Gunakan tautan ini untuk menyalin kode sebagai SE strip karakter yang tidak dapat dicetak.
Ada 5 karakter dalam rentang ASCII yang tidak dapat dicetak tetapi masih dalam satu byte (kode ASCII 255)
Cara kerjanya :
Cobalah online di sini
sumber
Perl -
10091 (termasuk 1 bendera)Gunakan ide-ide nutki untuk menggunakan
-p
dan mengurangi spasi ganda. Juga menghilangkan ruang trailing yang disederhanakan.Input berasal dari stdin dan hanya boleh berisi jenis konektor tanpa baris baru.
Sebelumnya:
Membawa argumen baris perintah. Tidak Disatukan:
sumber
$x=shift|" qb"
dan mengganti 3 kejadian ruang ganda denganb
di templat. Juga mengubah pemrosesan input ke '-p' memberi 7 ekstra (minus bendera):$x=$_|""
dan tidak perlu untuk finalsay
.x
menjadi#
. Tetapi baris kedua masih memiliki spasi tambahan di semua kasus. SebabA
, ruang meluas melampaui final#
dari garis lain (yang saya kira secara teknis diizinkan). Namun untukI1
,I2
, dll. kasus, masih ada ruang trailing yang perlu dijaga. Saya pikir saya bisa bermain golf beberapa karakter lebih dari itu.Python, 168 karakter
Tampaknya menjadi pendekatan baru. Saya punya string:
Aku mengganti
G
,H
dan2
berdasarkan masukan.sumber
J,
Diperkecil153 121119 karakterPendekatan ketiga: kemas semua
dan
Tidak ditambang#
ke dalam bilangan bulat besar sebagai bit. Tambahkan=
setelahnya. Namun, masih tidak menggunakan simetri dari banyak varian konektor.Minified (153)
Juga sebagai fungsi. Yang ini menggunakan pengkodean biner panjang variabel, dengan menghitungnya dalam biner dan memisahkan dengan nol. 0 satu dalam satu baris berarti
, 1 satu berarti
Tidak disatukan#
, 2 yang berarti=
, 3 yang berarti baris baru dan 4 yang memisahkan lima string dari satu sama lain.sumber
Marbelous, 281 byte / karakter
Diperkecil:
Ini membutuhkan
D1
,D2
,I1
,I2
atauA
dari STDIN. Mengejar baris baru dalam input adalah opsional. Output adalah ke STDOUT.Program ini memanggil subboard yang mencetak bagian-bagian konektor, baik mengisi
#
atau meninggalkan ruang tergantung pada input.Coba jawaban ini di sini ; papan silindris dibutuhkan.
dengan Komentar:
sumber
Perl 5: 105 (termasuk 1 bendera)
Namun solusi Perl lainnya. Menggunakan stdin untuk parameter.
sumber
GNU sed, 116 byte
Keluaran:
sumber
J,
Diperkecil198 194157 karakterDiimplementasikan sebagai fungsi. Perhatikan bahwa fungsinya adalah kereta api, artinya seseorang harus mengelilinginya dengan tanda kurung atau menugaskannya untuk menggunakannya (mungkin saya harus menghitung parens sebagai bagian dari fungsi, meskipun secara teknis mereka tidak).
Tidak disatukanIdenya adalah untuk menyimpan bagian umum dari string secara terpisah dari karakter yang berbeda di antara jenis konektor.
S1
menyimpan karakter unik, danS2
bertindak sebagai pola denganx
akting sebagai pengganti untuk diisi.sumber
Python -
167 166 164 161159sumber
JavaScript (ES6) 178
186Sunting Memiliki 7 blok dasar, gunakan basis 7
Dengan cara lurus, gunakan string building dengan replace dan 7 blok bangunan.
Keluaran ke stdout menggunakan peringatan seperti yang diminta oleh OP.
Sekarang saya akan mencoba beberapa optimasi mikro ...
Uji dalam konsol FireFox / FireBug - menghapus 'peringatan' untuk menyederhanakan pengujian
Keluaran
sumber
APL (115)
Uji:
sumber
JavScript ES6, 186 byte
Tampilkan cuplikan kode
Kode ini cepat dan kotor, tetapi menyelesaikan pekerjaan. Sebagian besar,
#
's dan spasi dimasukkan ke dalam biner dan kemudian basis 36. Saya mencari solusi yang lebih elegan dan mudah-mudahan lebih pendek.sumber
Perl 5 - 150 (149 + 1 untuk
n
)Golf:
Input dari STDIN, output ke STDOUT. Bekerja dengan mengisi karakter-karakter tertentu dengan
#
atautergantung pada input.
Tidak Disatukan:
sumber