Input: angka positif, lebih kecil dari 80, dari stdin atau sebagai argumen baris perintah.
Output: Pola papan catur persegi, ukuran nomor input. Bidang gelap diwakili oleh huruf 'X', bidang putih dengan spasi. Bidang kiri atas harus 'X'.
Diperlukan program yang lengkap.
Contoh:
Input : 1
Keluaran :
X
Input : 8
Keluaran :
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
Jawaban:
Pyth, 13 karakter
Catatan: Pyth terlalu baru untuk dapat menang. Namun, itu adalah golf yang menyenangkan dan saya pikir saya akan membagikannya.
Coba di sini.
Bagaimana itu bekerja:
Pada dasarnya, ini digunakan
X
untuk menghasilkan"X "
atau secara" X"
bergantian, kemudian mengulangi string ituQ
kali, dan mengambilQ
karakter pertamanya . Ini berulangQ
kali.Bagaimana cara fungsi
X
(assign at) bekerja? Dibutuhkan string asli," "
dalam hal ini, lokasi tugas,N
dalam hal ini, dan karakter pengganti,"X"
dalam kasus ini. Karena penugasan Pyth adalah modular, ini menggantikan ruang di lokasiN%2
denganX
, dan mengembalikan string yang dihasilkan, yang karenanya"X "
pada baris pertama, ketiga, dll., Dan" X"
yang lain.sumber
Golfscript - 17 karakter
Analisis
~
konversi input ke:N
penyimpanan int dalam variabel N,{...}
untuk setiap nilai [0 ... N-1]"X "N*
ulangi "X" untuk memberikan string karakter N * 2,>
ambil substring mulai dari indeks loop ...N<
... Mengakhiri N karakter kemudiann
menempatkan baris baru di akhir setiap stringsumber
Perl,
4140Perl 5.10 atau lebih baru, jalankan dengan
perl -nE 'code'
(n
dihitung dalam ukuran kode)Output sampel:
sumber
x
adalah operator pengulangan string.'a' x 3
hasil panen'aaa'
.Python, 48 Karakter
sumber
Python, 76 karakter
sumber
Scala -
14195 karakterPenggunaan: di
scala filename N
mana n adalah input Anda ke program.sumber
APL (16)
Dengan asumsi
⎕IO=0
(yaitu array yang diindeks nol, ini adalah pengaturan)Penjelasan:
⍳2⍴⎕
: baca angka N, dan buat matriks N × N yang mengandung (0,0) hingga (N-1, N-1).2⊤¨
: dapatkan bit paling signifikan dari setiap angka dalam matriks. (Jadi sekarang kita memiliki (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: untuk setiap pasangan, lihat apakah kedua angka itu sama. (Sekarang kami memiliki 1 0 1 0 1 0 ...)' X'[
...]
: beri spasi untuk setiap 0 dan X untuk masing-masing 1.sumber
Ruby
4542Demo: http://ideone.com/Mw25e
sumber
(x=gets.to_i).times
menghemat tiga karakter. Mengapa tiba-tiba minat baru pada oldie ini?Python
48 CharsEDIT: Agak Salah ... Pada akhirnya ada ruang ekstra ... tapi itu tidak terlihat. Jika Anda mengubah ruang menjadi "O" (atau karakter non-spasi putih), kemudian ubah
[i%2:n]
menjadi[i%2:n+i%2]
. untuk versi yang benar.sumber
C ++ - 253 karakter dikaburkan
sumber
JavaScript, 169
sumber
+'1'
bukanparseInt('1')
. Tidak akan memberi Anda bilangan bulat, tapi saya pikir itu bukan bilangan bulat itu penting di sini, bukan?k (26 karakter)
26 Untuk fungsi telanjang:
Atau 7 lagi untuk mengambil input dari stdin
sumber
Bash: 60 karakter
Ukuran tabel dilewatkan sebagai parameter baris perintah, misalnya
bash chesstable.sh 8
.sumber
Java 10, fungsi lambda,
928784 byteCobalah online sini .
Terima kasih untuk ceilingcat untuk bermain golf 4 byte dan untuk Kevin Cruijssen untuk bermain golf 3 lagi.
Versi tidak disatukan:
Java 8, program lengkap,
155139 byteCobalah online sini .
Versi tidak disatukan:
sumber
s+=
adalah 2 byte lebih pendek dari tanda kurung:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
. Cobalah online."X ".charAt(i%n+i/n&1)
alih-alih((i%n+i/n)%2<1?"X":" ")
Japt,
87 byteJalankan secara online
76 byte jika kita dapat menggantiX
denganx
:Jalankan secara online
Alternatif solusi 8 byte :
Jalankan secara online
sumber
APL (Dyalog Extended) , 12 byte SBCS
Fungsi awalan diam-diam anonim. Membutuhkan
⎕IO←0
(pengindeksan berbasis nol).Cobalah online!
⍳
ɩ ndices 0… n – 1+⍀
plus tabel dengan itu secara horizontal dan vertikal:⍳
ɩ ndices 0… n – 12|
pembagian divisi ketika dibagi dua'X '⊇⍨
gunakan matriks itu untuk mengindeks ke dalam stringsumber
Scala, 68 byte
atau
Cobalah online!
sumber
Brainfuck, 140 byte
sumber
Javascript, 67 byte
Cobalah online
C, 83 byte
Cobalah online
C64 Dasar, 89 byte
sumber
on...go to
perintah secara kondisional, seperti diON-(I+JAND1)GOTO3:?"X";:
mana nol, itu akan jatuh ke pernyataan berikut, dalam hal ini, jika(I + J AND 1) === 0
kemudian akan mencetak X. Ini memungkinkan Anda untuk mengemas lebih banyak pernyataan per baris dan menyimpan byte.Scala, 40 dan 54
Jumlah karakter adalah 40 untuk suatu fungsi, 54 untuk program yang lengkap.
Solusi yang hanya memberikan fungsi tubuh adalah:
("X "*n)sliding n take n foreach println
Cobalah online
Solusi yang memberikan program lengkap adalah:
val n=readInt;("X "*n)sliding n take n foreach println
Anda dapat menjalankannya menggunakan baris perintah berikut.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
dimana 8 adalah input.
sumber
("X "*n)sliding n take n map println
Python - 127 karakter
sumber
C -
9286sumber
Q, 33
sumber
{(x;x-1-x mod 2)#"X "}
untuk 22 ... ah tidak, memiliki bug yang sama seperti milik Anda - tidak memiliki 4 X pada baris aneh untuk input 8.Ruby 58
sumber
PHP - 136 karakter (tanpa spasi)
Mengizinkan input fungsi x dan y.
Juga mendukung input ganjil sekarang.
Jika Anda mendesain output memiliki ketinggian garis 0,65 em dan ubah ▒█ dan █░ menjadi □ ■ dan ■ □ maka hasilnya akan terlihat seperti papan catur nyata (persegi).
Kode:
Keluaran:
sumber
PHP, 87
sumber
CJam, 18 byte
Saya mungkin bisa saja porting jawaban GolfScript, tetapi di sini ada pendekatan yang berbeda. (Dan CJam tidak memenuhi syarat untuk menang.)
Uji di sini.
Idenya adalah untuk iterate atas grid 2D dengan x dan y indeks pada stack, menggunakan para
f{f{...}}
trik . Diberikan x dan y, kita cukup menentukan hitam dan putih sebagai(x+y)%2
dan menggunakannya untuk memilih antara karakterX
dan string yang berisi spasi.sumber
J, 21 karakter
J juga hilang.
Sebelumnya, 22 karakter:
Kode char dari pola mod2
row #
+column #
:sumber
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Cobalah online!VB.net, 161
sumber
PHP, 75 byte
sumber