Grup adalah struktur yang banyak digunakan dalam Matematika, dan memiliki aplikasi dalam Ilmu Komputer. Tantangan kode ini adalah tentang karakter # paling sedikit untuk membuat tabel grup untuk grup aditif Z n .
Bagaimana tabel disusun: Untuk Z n , elemen-elemennya adalah {0, 1, 2, ..., n-1}. Tabel akan memiliki n baris dan kolom n. Untuk entri tabel ke-ij, nilainya adalah i + j mod n. Sebagai contoh, dalam Z 3 , entri 1-2 (baris 2, kolom 3 jika Anda menghitung baris awal / kolom sebagai 1) adalah (1 + 2)% 3 = 0 (lihat output sampel).
Input: bilangan bulat positif, n
Output: meja yang presentasi tekstual Z n , dibangun seperti dijelaskan di atas, dan ditampilkan seperti ditunjukkan di bawah output sampel. Spasi adalah opsional
Input sampel: 3
Output sampel:
0 1 2
1 2 0
2 0 1
Input sampel: 5
Output sampel:
0 1 2 3 4
1 2 3 4 0
2 3 4 0 1
3 4 0 1 2
4 0 1 2 3
Jawaban:
APL (10)
(Dengan asumsi
⎕IO=0
. Ia bekerja pada ngn / apl secara default, APL lain cenderung membutuhkan yang⎕IO←0
pertama.)Penjelasan:
⍳⍵
: angka [0.. 0.)∘.+⍨
: buat tabel jumlah⍵|
: angka dalam tabelmod
⍵sumber
⊢|⍳∘.+⍳
, atau apakah kereta tidak bekerja di versi ngn Juli 2014?GolfScript (13 karakter)
Saya mengerti dari komentar Anda tentang jawaban Claudiu bahwa spasi putih antara elemen-elemen baris tidak perlu. Atas pengertian itu:
Demo online
Pembedahan:
Jika spasi putih diperlukan, untuk 20 karakter:
sumber
Python 2, 66 byte
Rotasikan daftar dengan membuka dan menambahkan kembali.
Python 3, 53 byte
Menggunakan metode yang sama dengan @ mbomb007, tetapi menyalahgunakan
print
sebagai fungsi.sumber
*R,=
adalah konstruksi yang aneh ... Apakah hanya berfungsi untuk mengubahrange
output menjadi tuple?*R
range
adalah objek yang dapat diulang dimana seseorang dapat membongkar dan mengemas kembali, mengumpulkan semuanyaR
. Seharusnya setara denganR=list(range(n))
, yang pertama lebih ringkas.05AB1E ,
108 byteCobalah online!
Penjelasan
Jawaban sebelumnya: 10 byte
Cobalah online!
Percobaan pertama saya bermain golf di 05AB1E.
Penjelasan dari jawaban sebelumnya
sumber
FݨN._ðý,
danݨsGDÀ})»
Jangan ragu untuk bertanya apa pun di obrolan 05AB1E , dan lihat halaman tip 05AB1E jika Anda belum. :)Jelly , 4
Cobalah online!
sumber
Pyth , 16
Mencetak tabel dengan spasi putih yang tepat.
Penjelasan:
sumber
J, 20
Membaca dari stdin dan menghasilkan array 2D (yang menghasilkan sama dengan sampel dalam pertanyaan).
Jika suatu fungsi mengambil string sudah cukup
(|+/~@i.)@".
,. Jika fungsi yang mengambil integer sudah mencukupi,|+/~@i.
harus memadai.Penjelasan:
f g
dalam J (untuk fungsi f, g) menunjukkan "kait", yang merupakan fungsi gabungan yang menjalankan input melalui g (fungsi unary) dan kemudian input dan hasil dari g melalui f (fungsi biner). Jawabannya adalah garpu dengan komponen|
(modulus) dan+/~@i.
. Bagian terakhir adalah "tabel jumlah yang disusun-dengan daftar-indeks-upto" (i.
sedikit miriprange
dengan Python).sumber
|+/~@i.
, yang seharusnya dapat diterima oleh aturan standar di sini.Oktaf, 23
sumber
Python 2, 67
Cobalah keduanya di sini
Saya menggunakan pemisahan daftar untuk "memutar" daftar
n
waktu, mencetaknya setiap kali. (68 karakter)Saya berhasil mendapatkan satu karakter lebih pendek daripada yang di atas dengan trik aneh. (67 karakter)
sumber
def f(n):*R,=range(n);[print(*R[i:]+R[:i])for i in R]
. Saya tidak berpikir percikan akan benar-benar berfungsi tanpa parens.Matlab (28)
sumber
x86-64 Kode Mesin (Linux),
8064 byteSaya berharap solusi ini hanya beberapa byte lebih pendek untuk dapat mengalahkan beberapa kiriman lainnya di posting ini. Ada kemungkinan jika saya menggunakan beberapa versi 32 atau 16 bit dari register saya bisa mencukur beberapa byte.Konversi banyak register ke versi pengalamatan 32 bit disimpan 16 byte.Pada dasarnya fungsi ini dipanggil dari program C / C ++ yang melewati n melalui rdi, dan pointer ke alokasi melalui rsi. Pointer yang rsi miliki sebenarnya 1 byte dari akhir alokasi, karena tabel dibangun mundur. Ini membuatnya lebih mudah untuk mengkonversi integer ke karakter ASCII yang dapat dicetak (dilakukan dengan mengambil beberapa angka x mod 10 dan mengonversi hasilnya menjadi ASII).
Untuk melihat kode bungkus C ++ dan komentar di majelis, periksa repo saya .
sumber
Pari / GP , 26 byte
Cobalah online!
sumber
matrix(m,n,X,Y,expr)
menghasilkanmXn
matriks ekspresiexpr
, variabel barisX
dari1
kem
dan variabel kolomY
dari1
ken
.MathGolf ,
108 byteCobalah online!
-2 byte terima kasih kepada Jo King
Penjelasan
Saya akan menggunakan input contoh
3
untuk penjelasanAnda juga bisa melakukannya
r░y\(Åo╫
, yang mengurangi jumlah loop sebanyak 1 dan melewatkan discard setelah loop.sumber
q
untuk menghapus duplikasi?o
. Meskipun yang terbaik yang bisa kupikirkan dengan cara itu adalah ini . Bisa jadi 10 byte juga, tapi saya di ponsel.C - 96
sumber
Golfscript, 20 karakter
Pekerjaan yang sangat malas.
Jalankan di sini . (Baris pertama adalah mensimulasikan stdin).
Penjelasan :
Ketika program berakhir, tumpukan berisi masing-masing array dengan baris baru di antara mereka. Interpreter mengeluarkan apa yang tersisa di stack, memberikan hasil yang diinginkan.
sumber
CJam, 14 karakter
Uji di sini.
Penjelasan
Idenya adalah untuk mengulangi string dari
0
keN-1
, tetapi membaginya menjadi beberapa blokN+1
. Ketidakcocokan ini menggeser baris ke kiri setiap kali. Terakhir, kita perlu menyingkirkan karakter asing dan menggabungkan semuanya dengan baris baru.Berikut adalah kode yang meledak, bersama dengan konten tumpukan untuk input
3
.Hasilnya dicetak secara otomatis di akhir program. (Catatan, konten tumpukan untuk langkah terakhir secara teknis adalah array campuran yang berisi angka dan karakter baris baru, bukan string yang hanya berisi karakter.)
Atau, 11 karakter
Dengan penambahan baru-baru
ew
ini (ini lebih baru dari tantangan - ia mengembalikan semua substring yang tumpang tindih dengan panjang yang diberikan), seseorang dapat melakukan 11 byte:Inilah cara kerjanya:
sumber
l~_,\{_(+N\}*;
. Saya bertanya-tanya apakah kita bisa melakukan yang lebih baik dengan ini .ew
mungkin bekerja tetapi lebih baru dari tantangan.MATL , 6 byte
Cobalah online!
sumber
Excel VBA, 77 Bytes
Fungsi jendela langsung VBE anonim yang mengambil input, sebagai integer, n, dari range
[A1]
dan output ke rangeA2.Resize(n,n)
.sumber
Perl 6 , 23 byte
Cobalah online!
Blok kode anonim yang mengambil angka dan mencetak matriks dalam format yang diberikan dengan spasi. Jika kita bisa mengembalikan sesuatu, maka itu
.put
bisa dihapus.Penjelasan:
sumber
Arang , 13 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Catatan: Ruang tambahan. Penjelasan:
sumber
APL (NARS), 15 karakter, 30 byte
uji:
di sini bahasa tidak perlu komentar ...
sumber
Japt
-R
, 5 byteCobalah
Jika menggunakan koma sebagai pemisah tidak valid maka tambahkan byte tanpa pemisah:
Cobalah
Atau 2 byte untuk menggunakan spasi:
Cobalah
sumber
R , 37 byte
Membuat vektor dari 0 hingga n-1, dan secara berurutan menambahkan 1, lalu 2 ... lalu n, dan memodulasi matriks dengan panjang vektor, yaitu n.
Cobalah online!
sumber
Keempat (gforth) , 53 byte
Cobalah online!
Penjelasan
Nested loop yang menampilkan baris baru setiap n angka
Penjelasan Kode
sumber