Melihat ini dalam tantangan PHP. Tujuannya adalah membuat papan catur dengan 64 kotak (8 * 8) dengan jumlah kode minimum. Cukup sederhana, saya membuat saya dalam PHP dalam 356 byte (tidak mengesankan, saya tahu) dan saya ingin melihat beberapa pendekatan lain. Ini bisa dibuat dalam bahasa pilihan Anda, selama Anda menyimpannya vanili, jadi tidak perlu impor. Hitungan byte terkecil menang.
Outputnya akan terlihat seperti ini:
Dan kode saya:
<table><?php
$c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);}
Atau dapat dibaca:
<table><tr>
<?php
$color = 'black';
function printcolor($color, $nl) {
echo '<td style="width:50px; height:50px; background:' . $color . '"></td>';
if ($nl == true) {
echo "</tr><tr>";
}
}
for ($i=1; $i<=64;$i++) {
if ($i % 8 == 0 && $color == "black") {
$color = "white";
$nl = true;
} elseif ($i % 8 == 0 && $color == "white") {
$color = "black";
$nl = true;
} elseif (isset($nl) && $nl == true) {
$nl = false;
} elseif ($color == "black") {
$nl = false;
$color = "white";
}
elseif ($color == "white") {
$nl = false;
$color = "black";
}
printcolor($color, $nl);
}
Edit:
Maaf saya tidak terlalu spesifik pada awalnya:
- Kotak harus memiliki 50px * 50px kecuali untuk gambar vektorial.
- Format atau ukuran keluaran tidak relevan juga tidak perlu berupa gambar.
- Untuk tujuan evaluasi, output harus terlihat seperti dalam file gambar atau tangkapan layar
- Tidak ada perpustakaan yang ditulis setelah tantangan diposting
code-golf
graphical-output
Bruno
sumber
sumber
Jawaban:
Oktaf,
2018 byteTerima kasih kepada @Bruno untuk mencukur 2 byte.
Hasil:
Jawaban ini menggunakan teknik yang ditemukan di sini . Ini juga bergantung pada penskalaan otomatis gambar dalam Oktaf tergantung pada ukuran jendela gambar.
sumber
vim,
47464443dicoret 44 masih teratur 44 ...
Output dalam format NetPPM (PBM):
sumber
<C-p>
dalam vim tanpa mulai mengetik kata ... itu sangat berguna!CSS, 244 byte
Tampilkan cuplikan kode
Penjelasan: Gradien linier 100x100px linier dibuat dengan empat berhenti sehingga sebagian besar gradien transparan kecuali untuk dua sudut segitiga 50px. (Lihat cuplikan di bawah). Menambahkan gradien kedua dengan mengisi offset 50x50px di bagian yang hilang dari kotak. Meningkatkan ukuran tubuh kemudian memungkinkan pola yang dihasilkan untuk mengulangi untuk mengisi seluruh papan catur.
Tampilkan cuplikan kode
sumber
}
.html{background:#fff}
? Secara default 99% browser mengatur latar belakang menjadi putih, afaikMathematica, 34 byte
Outputnya adalah gambar vektor dan dikelilingi dalam bingkai.
Alih-alih memposisikan 32 persegi panjang dengan benar, kita bisa membuat matriks biner dan membuatkannya
ArrayPlot
untuk kita:sumber
GenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50]
tidak berhasil? ;)Mathematica,
817255 byteGambar adalah evaluasi versi sebelumnya, tetapi masih terlihat sama.
sumber
Oktaf, 48 byte
Ini berfungsi persis sama dengan jawaban Matlab saya , tetapi tidak ada
spiral
dalam Oktaf. Sebagai gantinya, kami menggunakan fitur yang tidak dimiliki Matlab: Kami dapat menggunakan penugasant
sudah sebagai ekspresi, dan kemudian menggunakant
lagi dalam ekspresi yang sama.(Ini adalah versi yang diskala ulang, saya tidak ingin mengacaukan jawaban di sini =)
sumber
Bash Murni (tidak ada utilitas eksternal), 133
Saya melihat komentar @ Doorknob sebagai sedikit tantangan. Agak panjang, tapi begini:
Output dalam format .txt Imagemagick . Perhatikan ini murni Bash. Baik Imagemagick maupun utilitas eksternal lainnya tidak dihasilkan untuk menghasilkan output ini. Namun, output mungkin diarahkan ke file .txt dan dilihat dengan
display
utilitas ImageMagick :Format gambar ini bagus karena bukan hanya teks murni, tetapi sedikit lebih dari daftar semua piksel (x, y dan nilai warna), satu per baris. Ini adalah masalah yang cukup sederhana untuk mendapatkan semua nilai piksel secara hitung dalam satu lingkaran besar.
Jawaban sebelumnya, 167
Output dalam format file gambar teks X_PixMap , yang juga dapat dilihat dengan
display
utilitas ImageMagick .Catatan Saya telah mengambil sebanyak mungkin dari format XPM yang saya bisa sehingga
display
masih akan menerimanya. Saya bisa mengambil semua c boilerplate dengan pengecualian"
tanda kutip ganda di setiap baris. Tidak tahu apa lagi - jika ada - utilitas akan menerima ini.sumber
PowerShell + browser pilihan Anda,
149143 byteKetidakmampuan untuk menggunakan impor benar-benar sulit, karena semua panggilan GDI (yaitu, hal-hal yang digunakan PowerShell untuk menggambar) terkubur di belakang impor di .NET ...
Edit - disimpan enam byte berkat @NotThatCharles
Ini menggunakan dua for-loop dari
1..8
untuk menghasilkan string HTML big-ol ', mirip dengan contoh PHP yang disediakan, dan output ke pipeline. Setiap kali kita menghitung apakah akan menambahkan;background:#000
latar belakang hitam dengan mengambil posisi kita saat ini di papan modulo 2.Untuk menggunakannya, arahkan output ke file pilihan Anda (misalnya, dengan sesuatu seperti
> chessboard.htm
) dan kemudian luncurkan di browser pilihan Anda. Untuk tangkapan layar di bawah, saya menggunakan "c.htm" dan Firefox.sumber
white
danblack
bisa#fff
dan#000
... tapi mengapa repot menentukan putih?(";background:#000","")[($a+$_)%2]
saja.PHP + CSS + HTML, 136 byte
Mengambil pendekatan tabel ke tingkat yang lebih tinggi:
Ini menghasilkan kode berikut:
Ini sangat bergantung pada kebaikan browser dan CSS.
sumber
++$i<9
dengan@++$i<9
. Juga, agar berfungsi tanpa<?php
, seseorang harus memiliki arahanshort_open_tags=On
, yang merupakan default pada beberapa lingkungan. Baca lebih lanjut di stackoverflow.com/a/2185331/2729937Jelly, 26 byte
Karena Jelly tidak memiliki dukungan untuk gambar bawaan, kami mencetak gambar PPM.
Cobalah online! (papan lebih kecil untuk kecepatan, PPM mentah)
Hasil
Bagaimana itu bekerja
Versi tidak bersaing (24 byte)
Juru bahasa Jelly terbaru yang ada sebelum posting ini tidak melakukan vektorisasi
x
dengan benar. Dengan versi terbaru, 2 byte tambahan dapat disimpan.Satu-satunya perbedaan adalah bahwa
x50
menghasilkan daftar datar (dengan setiap elemen asli diulang 50 kali), jadiF
tidak perlu lagi.sumber
;
...;)MATL , 11 (27) byte
Ini menghasilkan gambar berikut. Itu tidak memiliki ukuran intrinsik; itu secara otomatis diskalakan tergantung pada ukuran jendela gambar. Ini sepertinya diizinkan oleh tantangan.
Penjelasan
Jika penskalaan otomatis tidak diizinkan:
menghasilkan gambar berikut dengan kotak 50x50-pixel
Penjelasan
sumber
Pyth,
2826 bytePenjelasan
Setara dengan python
Coba di sini (hanya nilai warnanya)
Keluaran:
sumber
Matlab, 47 (24) byte
Ini berfungsi persis sama dengan jawaban Oktaf saya , tetapi saya bisa menggunakan
spiral
yang disimpan satu byte.spiral(n)
membuatnxn
matriks dan mengisinya dengann^2
bilangan bulat pertama .Jika vectorgraphics diperbolehkan, kita bisa melakukannya dalam 24 byte:
(Ini adalah versi yang diskala ulang, saya tidak ingin mengacaukan jawaban di sini =)
sumber
FFmpeg, 78
82 100byteAkhirnya sempat membersihkan papan.
Lebih tua :
Akan keluar dengan kesalahan, tetapi setelah menghasilkan gambar di bawah ini.
(Dewan mengumpulkan debu)
sumber
CJam, 27 byte
Cobalah online! (papan lebih kecil untuk kecepatan, PPM mentah)
Hasil
Bagaimana itu bekerja
sumber
HTML dengan utf-8 - 66b
▚ adalah kata pendek langsung untuk entitas & # 9626;
Karakter Unicode 'KIRI UPPER KUADRAN DAN KANAN RENDAH' (U + 259A)
konyol saya, sedang mencari solusi 1 utf-8 char - pasti ... 1b!
sumber
▞
sehingga persegi kiri atas berwarna putih seperti pada papan catur standar. Selain itu, gunakan<pre>
alih-alih<div>
agar Anda dapat menggunakan baris baru<br>
.▚
dihitung selama 3 byte menggunakan pengkodean UTF-8. Di masa mendatang, Anda dapat menggunakan ini untuk memeriksa UTF-8 Byte Count AndaPHP,
166158155 byteBekerja di PHP 7.0.2 (diaktifkan tag pendek) dan Chrome 48.0.2564.97 m
sumber
bgcolor=0
untuk menghasilkan latar belakang hitam. Itu harus mengurangi satu ton byte! Dan alih-alih$v%2==0
, gunakan$v&1
, yang seharusnya mencukur beberapa byte.PHP> = 5.4,
175159149116 BytesCatatan
sumber
<table><tr><?php for(;++$i<65;){echo'<td style="width:50px;height:50px;background:#'.(($i+$m)%2?'000':'').'"></td>';if($i%8<1){echo"</tr><tr>";$m=!$m;}}
TR
.++$i<65
dengan@++$i<65
, karena Anda khawatir tentang peringatan itu. Ini berarti Anda dapat mengurangi$m=$i=0
menjadi hanya$m=0
, menghemat 2 byte. Alih-alihecho 'a'.'b'.'c';
, Anda bisa melakukannyaecho 'a','b','c';
. Ini berarti Andaecho
dapatecho'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';
menghemat lebih banyak 2 byte. Atribut HTML juga tidak memerlukan penawaran. Hapus dan sabe 2 byte. Juga, adabgcolor
atribut yang jauh lebih pendek , yang mengurangi lebih banyak byte! Anda dapat menggunakanprint()
dalamfor
untuk menyimpan lebih banyak byte!($i+$m)%2
dengan$i+@$m&1
, yang memungkinkan saya untuk menghapusnya$m=0
. Di depan, saya dapat menghapus Andaif
, dan menggantinya dengan operasi tren. Untuk menyimpan lebih banyak lagi , saya telah menghapus Andastyle
dan menambahkan propertiwidth
danheight
. Untuk mendapatkan lebih banyak ke sisi hacky, saya telah menemukan bahwa Chrome 48.0.2564.103 m menggunakan hitam jika warna latar belakangnya0
, menggunakan propertibgcolor
. Itu memungkinkan saya untuk mengurangi lebih banyak! Lebih banyak pengurangan lebih baik!JavaScript, 150
Ini pasti bisa golf. Itu menciptakan HTML.
sumber
iKe , 24 byte
Inti dari teknik ini adalah untuk menghasilkan daftar koordinat x, divmod mereka dan kemudian mengambil produk silang kesetaraan untuk menghasilkan bitmap yang sesuai. Menggunakan contoh yang lebih kecil untuk tujuan ilustrasi:
coba di sini . Secara teknis iKe bekerja pada kanvas logis 160x160 piksel, tetapi dalam mode layar penuh (default saat mengikuti tautan yang disimpan) ini ditingkatkan dengan 3x. Saya pikir ini masih mengikuti semangat pertanyaan, karena program ini dapat mengumpulkan bitmap yang jauh lebih besar dengan jumlah karakter yang sama; itu hanya sampai pada batasan tampilan sewenang-wenang.
Memperbarui:
iKe terutama tidak dirancang untuk golf, tetapi livecoding masih mendapat manfaat dari singkatnya dan standar waras. Sebagai hasil dari bermain-main dengan masalah ini, saya telah memutuskan untuk mengizinkannya menggunakan palet default jika tidak ada yang disediakan. Solusi khusus ini sekarang dapat diekspresikan dengan:
Menyimpan (tidak memenuhi syarat) 3 byte.
sumber
Ruby with Shoes, 97 karakter
Output sampel:
sumber
Lua + LÖVE,
138113112106 karakterOutput sampel:
sumber
//
operator divisi integer, tetapi tampaknya masih belum ada LÖVE yang dibuat dengan LuaJIT yang menampilkannya. ☹GIMP, 539 byte
Script Skema Tidak Dikunci-fu:
Dalam mode batch, buat gambar kosong, buat 50x50 pilihan persegi panjang, isi, dan lalu gerakkan berulang kali di sekitar gambar, isi kotak. Lalu simpan ke
c.png
dan keluar.Keluaran:
sumber
J,
3331 byteSaya menggunakan trik dengan biner.
... karena 43605 dalam biner adalah 1010101001010101 (kami menggunakan
#:
primitif untuk mendapatkannya).$
Bentuk primitif array angka biner ini ke dalam matriks yang ditentukan dengan dimensi8 8
. Danviewmat
hanya perpustakaan sistem. Jendela sepenuhnya dapat diubah ukurannya.Terima kasih kepada @FrownyFrog karena telah mempersingkatnya menjadi:
sumber
viewmat 8$#:170 85
lebih pendek 1 byteviewmat#:8$170 85
Excel VBA, 82 Bytes
Fungsi jendela langsung VBE anonim yang tidak mengambil input dan menampilkan kotak-kotak ke kisaran
A1:H8
objek ActiveSheetFungsi ini berfungsi dengan terlebih dahulu membuat 4 kolom hitam dalam rentang
B1:B8,D1:D8,F1:F8,H1:H8
dan kemudian mengimbangi pewarnaan dalam baris2,4,6 and 8
ke kiri oleh satu sel.Output Sampel
sumber
Perl 5 - 80
Menghasilkan file .PBM:
sumber
PowerShell + GDI, 346 byte
(baris baru dihitung sama dengan titik koma, jadi baris baru untuk keterbacaan)
Berbeda dengan jawaban saya yang lain , yang ini menggunakan rakitan .NET untuk memanggil panggilan fungsi GDI + . Menariknya, panjangnya sekitar dua kali lipat.
Dua baris pertama memuat
System.Windows.Forms
danSystem.Drawing
berkumpul. Yang pertama digunakan untuk jendela literal dan kanvas di atasnya, yang kedua digunakan untuk objek menggambar (dalam kode ini, kuas) yang membuat grafik pada kanvas.Kami kemudian membuat formulir kami
$f
dengan baris berikutnya, dan mengaturnyawidth
danheight
menjadi450
. Perhatikan bahwa ini bukan50*8
, karena angka-angka ini sesuai dengan tepi batas-ke-batas pada jendela formulir, termasuk bilah judul, tombol tutup, dll.Baris berikutnya membuat kanvas kita
$g
dengan memanggil konstruktor kosong. Ini default ke kiri atas area non-sistem dari bentuk yang sama dengan0,0
dan meningkat ke kanan dan ke bawah, sempurna untuk kebutuhan kita.Baris berikutnya adalah panggilan aktual yang menggambar grafik, dengan
$f.add_paint({...})
. Kami membuat panggilan grafik dengan double-for looping dari0..7
dan membawa variabel pembantu$y
melalui setiap loop luar. Setiap loop batin, kami memberitahu kanvas kami.FillRectangle(...,...)
untuk menggambar kotak kami. Parameter pertama membangun yang baruSolidBrush
dengan warna berdasarkan di mana kita berada di papan tulis. Pilihan lain di sini bisa berupa palka, gradien, dll. Parameter kedua adalahRectangle
objek baru mulai dari x$_*50
dan$y*50
koordinat yang ditentukan dan diperluas untuk50
di setiap arah. Ingat itu0,0
adalah kiri atas.Baris terakhir hanya menampilkan output dengan
.showDialog()
.Perhatikan bahwa karena kita membuat objek formulir , dan PowerShell adalah semua tentang pipeline, menutup formulir pop-up akan meneruskan
System.Enum.DialogResult
objekCancel
, karena itulah yang secara teknis dilakukan pengguna. Karena kita tidak menangkap atau melakukan apa pun dengan hasil itu, kataCancel
tersebut akan ditampilkan ke STDOUT ketika program berakhir, seperti dibiarkan di dalam pipa.sumber
MEMILIH. ,
88448278 byteTentu itu panjang, tetapi dua versi pertama yang saya hasilkan untuk tugas ini dua kali lebih lama.
Keluaran:
Bagaimana itu bekerja:
Inilah program yang digunakan untuk menghasilkannya:
Dengan kata lain, loop n dari 0 hingga 63, menggambar kotak di (n% 8-4) + (n // 8-4) i jika (-1) ^ (n // 8 + n% 8) tidak positif.
sumber
JavaScript (ES6), 147
sumber
Python, 57 byte
c
adalah garis 50 putih dan 50 piksel hitam,200*c
adalah baris dengan putih di depan,200*c[::-1]
kebalikannya.Output sebagai PPM, penggunaan:
sumber