Ambil bilangan bulat positif n sebagai input, dan hasilkan matriks kotak - kotak n-oleh-n yang terdiri dari 1 dan 0 .
Digit kiri atas harus selalu 1 .
Kasus uji:
n = 1
1
n = 2
1 0
0 1
n = 3
1 0 1
0 1 0
1 0 1
n = 4
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Format input dan output adalah opsional. Mengeluarkan matriks sebagai daftar daftar diterima.
Jawaban:
Jelly , 4 byte
52 detik!
Cobalah online!
sumber
MATL , 5 byte
Cobalah di MATL online!
Penjelasan
Pertimbangkan input
4
sebagai contoh.sumber
Japt , 6 byte
Uji secara online! (Menggunakan
-Q
bendera untuk memudahkan visualisasi)Penjelasan
Suatu hal yang menarik untuk dicatat adalah bahwa
v
itu bukan built-in "habis dibagi 2". Alih-alih, ini built-in "habis dibagi X". Namun, tidak seperti kebanyakan bahasa golf, fungsi Japt tidak memiliki arity tetap (mereka dapat menerima sejumlah argumen kanan). Ketika diberi 0 argumen kanan,v
anggap Anda inginkan2
, dan bertindaklah persis seperti itu diberikan,2
bukan apa-apa.sumber
V ,
16, 15 byteCobalah online!
Hexdump:
sumber
Haskell ,
50413938 byteTerima kasih kepada nimi dan xnor karena telah membantu mengurangi total
910 byteBergantian, untuk satu byte lagi:
atau:
Mungkin suboptimal, tetapi pendekatan yang bersih dan langsung.
sumber
concat.repeat
adalahcycle
:n!l=take n$cycle l
. Jika Anda pergi pointfree menghemat satu lagi byte:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
atau serupa. tapi Haskell tampaknya menyimpulkan tipe yang salahr
? Ini bekerja dengan mengetik secara eksplisitf n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
tidak membantu. Tidak jugaRank2Types
atauRankNTypes
. Apakah Anda tahu apa yang terjadi di sana?APL (Dyalog) , 8 byte
Cobalah online!
Penjelasan
Mari kita sebut argumennya
n
.Ini menciptakan sebuah matriks
Kemudian
2|
ambil modulo 2 dari matriks (itu vectorises) setelah yang~
mengambil TIDAK hasil.sumber
Mathematica, 25 byte
sumber
JavaScript ES6,
55545146 byteDisimpan 1 byte berkat @Neil
Disimpan 2 byte berkat @Arnauld
Cobalah online!
Output ini sebagai array array. Rentang JavaScript sangat tidak biasa tapi saya menggunakan
[...Array(n)]
yang menghasilkan array ukurann
sumber
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Retina ,
3330 byteCobalah online! Penjelasan: Tahap pertama mengubah input menjadi unary menggunakan
1
s (dengan mudah!) Sedangkan tahap kedua mengubah nilai menjadi kotak. Tahap ketiga membalikkan bit-bit alternatif pada setiap baris, sedangkan stage terakhir membalikkan bit-bit pada baris-baris alternatif. Sunting: Disimpan 3 byte berkat @MartinEnder.sumber
$`1$'
hanya$_
.$_
, terima kasih!MATL , 7 byte
Cobalah online!
Penjelasan:
Catatan: Saya mulai memecahkan ini di MATL setelah saya memposting tantangan.
sumber
:&+o~
Y
instruksi yang dimodifikasi sial yang digunakan oleh @LuisMendo.Brachylog , 15 byte
Cobalah online!
Penjelasan
sumber
Clojure, 36 byte
Yay, alat yang tepat untuk pekerjaan itu.
sumber
05AB1E ,
97 byte-2 byte terima kasih kepada Emigna
Cobalah online!
Penjelasan
sumber
»
output sebagai daftar daftar tidak apa-apa dan Anda juga dapat menghapuss
.Java (OpenJDK 8) ,
8077 byte-3 byte terima kasih kepada Kevin Cruijssen
Cobalah online!
Oh, lihat, jawaban java yang setengah masuk akal, dengan banyak operator yang menyenangkan.
lambda yang mengambil int dan mengembalikan sebuah String. Bekerja dengan menggunakan nomor baris dan nomor kolom menggunakan / dan% untuk menentukan nilai yang seharusnya, mod 2;
Tidak Disatukan:
sumber
(i++/j+i%j)%2
kei++/j+i%j&1
sehingga Anda tidak perlu kurung tersebut. Yang membuat total 1 byte lebih pendek dari solusi nested for-loop saya (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), jadi +1 dari saya. :)Arang, 8 byte
Cobalah online! Penjelasan: Ini diterjemahkan secara kasar ke kode verbose berikut (sayangnya deverbosifier saat ini menambahkan pemisah yang tidak perlu):
sumber
Pyth , 9 byte
Coba ini!
solusi 9 byte lainnya:
Cobalah!
sumber
J , 9 byte
Cobalah online!
sumber
Mathematica, 23 byte
sumber
Oktaf , 24 byte
Cobalah online!
Atau sama panjangnya:
Cobalah online!
sumber
R ,
3837 byteCobalah online!
-1 byte terima kasih kepada Giuseppe
Mengambil keuntungan dari aturan daur ulang R, pertama saat membuat matriks, dan kedua saat menambahkan 0: (n-1) ke matriks itu.
sumber
t
dan bukannya membangun matriks denganbyrow=T
, yaitu,(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
lebih pendek beberapa byte :)Swi-Prolog, 142 byte.
Coba online - http://swish.swi-prolog.org/p/BuabBPrw.pl
Ini menghasilkan daftar bersarang, jadi aturannya mengatakan:
t()
adalah toggle, itu membuat 0 -> 1 dan 1 -> 0.r()
berhasil untuk baris individual, yang merupakan pemeriksaan rekursif ke baris yang merupakan baris pengganti dan nol saja.f()
secara rekursif memeriksa semua baris, bahwa mereka adalah panjang yang tepat, bahwa mereka adalah baris yang valid denganr()
dan bahwa setiap baris dimulai dengan 0/1 yang berbeda.c(N,C)
mengatakan bahwa C adalah kotak-kotak yang valid dari ukuran N jika jumlah baris (daftar bersarang) adalah N, dan helper f berhasil.Kasus uji:
sumber
C,
696763 byteTerima kasih kepada @Kevin Cruijssen karena telah menghemat dua byte dan @ceilingcat karena telah menghemat empat byte!
Cobalah online!
sumber
printf("%d "
, karena itu metode output yang valid.(j+++i)%2
kej+++i&1
untuk menghapus tanda kurung tersebut.QBIC , 19 byte
Penjelasan
sumber
Brachylog , 19 byte
Cobalah online!
sumber
PHP , 56 byte
Keluaran sebagai string
Cobalah online!
PHP , 66 byte
Output sebagai array 2 D
Cobalah online!
sumber
CJam , 17 byte
Cobalah online!
Mengembalikan daftar (tautan TIO telah diformat keluaran).
sumber
Bash + rs, 42
Cobalah online .
sumber
Cheddar , 38 byte
Cobalah online!
sumber
/// , 87 byte + input
Cobalah online! (masukan untuk 4)
Input unary dalam
1
s, 95 byte + inputCobalah online! (masukan untuk 8)
Bagaimana cara kerjanya?
V
danD
untuk golf\/
dan//
masing - masing./*/k#/
dan/&1/k#&//&|//
pisahkan input menjadi setara dengan'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
pindahkan semuak
ke/r/S/
blokS
s hanya digunakan untuk membuat instance dari manak
setelahnya/
sehingga mereka tidak dipindahkan ke tempat lain, danS
kemudian dihapus#
s kemudian diubah menjadir\n
sString
k
s berubah menjadi1010...
string bergantianThe
r\n
s berubah menjadi1010...\n
sSetiap pasangan
1010...\n1010\n
diubah menjadi1010...\01010...;\n
Baik
0;
atau1;
dipangkas (karena01010...
string terlalu panjang 1)sumber
Mathematica, 28 byte
Fungsi murni mengambil bilangan bulat positif sebagai input dan mengembalikan array 2D. Menggunakan fungsi periodik cos² (πx / 2) untuk menghasilkan 1s dan 0s.
Untuk sedikit lebih menyenangkan, bagaimana dengan solusi 32-byte
yang menggunakan lokasi nol sepele dari fungsi Riemann zeta.
sumber