Hal-hal keren
Rosace berikut dapat membantu menghitung angka modulo 7.
Untuk melakukan itu, Anda harus mulai dari 0 dan putar searah jarum jam sejumlah langkah yang diberikan oleh digit pertama. Kemudian, untuk setiap digit berturut-turut, ikuti panah dan kemudian putar searah jarum jam jumlah langkah yang diberikan oleh digit itu.
Inilah cara Anda melanjutkan ke nomor 294:
- Anda mulai dari lingkaran 0.
- Anda memutar searah jarum jam jumlah langkah yang diberikan oleh digit pertama (yang merupakan 2, Anda berakhir di 2).
- Anda mengikuti panah di sana (Anda berakhir di 6).
- Anda memutar searah jarum jam jumlah langkah yang diberikan oleh digit kedua (yang merupakan 9, Anda berakhir pada 1).
- Anda mengikuti panah di sana (Anda berakhir pada 3).
- Anda memutar searah jarum jam jumlah langkah yang diberikan oleh angka ketiga (yaitu 4, Anda berakhir pada 0).
- 294 mod 7 = 0 (artinya 294 adalah kelipatan dari 7).
( Penjelasan video jika Anda masih belum mendapatkannya )
Hasil
Cari tahu cara kerjanya (saya tahu tapi saya tidak akan memberi tahu Anda).
Buat program yang mengambil angka n
dalam parameter dan yang menghasilkan rosace untuk mod n
.
Rosace dapat ditampilkan dengan cara apa pun yang Anda inginkan (ASCII, menghasilkan PNG, menghasilkan SVG, ...) selama itu dapat digunakan oleh anak berusia 8 tahun ( jadi tidak ada daftar aturan, saya ingin gambar )!
Anda dapat menggunakan garis selat, bahkan jika itu sedikit kurang jelas dari apa yang saya buat sebagai contoh, tetapi Anda harus menunjukkan dengan jelas angka yang menunjuk pada diri mereka sendiri dengan semacam panah menggigit ekor.
Uji kasus
(Saya hanya memberikan tautan di antara angka-angka, silakan mengedit pertanyaan saya setelah program Anda berhasil menghasilkannya)
mod 2:
0 -> 0
1 -> 0
mod 3:
0 -> 0
1 -> 1
2 -> 2
mod 4:
0 -> 0
1 -> 2
2 -> 0
3 -> 2
mod 5:
0 -> 0
1 -> 0
2 -> 0
3 -> 0
4 -> 0
mod 6:
0 -> 0
1 -> 4
2 -> 2
3 -> 0
4 -> 4
5 -> 2
mod 7:
0 -> 0
1 -> 3
2 -> 6
3 -> 2
4 -> 5
5 -> 1
6 -> 4
mod 8:
0 -> 0
1 -> 2
2 -> 4
3 -> 6
4 -> 0
5 -> 2
6 -> 4
7 -> 6
mod 9:
0 -> 0
1 -> 1
2 -> 2
3 -> 3
4 -> 4
5 -> 5
6 -> 6
7 -> 7
8 -> 8
mod 10:
0 -> 0
1 -> 0
2 -> 0
3 -> 0
4 -> 0
5 -> 0
6 -> 0
7 -> 0
8 -> 0
9 -> 0
Aturan
Ini adalah kode-golf , kode terpendek dalam byte yang menang.
Seperti biasa, celah dan cheat dilarang.
sumber
Jawaban:
Mathematica, 192 byte
Jenis tantangan ini (perhitungan matematika nontrivial bersama-sama dengan output grafis tingkat tinggi) adalah tujuan dibuatnya Mathematica!
Diperluas dan dijelaskan:
Baris 1 dan 8 membatasi fungsi satu argumen yang tidak disebutkan namanya. Baris 3 dan 7 membatasi beberapa perintah yang menghasilkan gambar.
Baris 2 menyimpan input sebagai
d
; mendefinisikan fungsi biner yangt
memberikan koordinat titikn/d
jalan di sekitar lingkaran jari-jarir
, searah jarum jam dari atas (dalam semangat situs ini, saya menyimpan byte dengan membulatkan 2π ke6.3
!); dan mendefinisikan fungsi unary yangm
menghitung tujuan panah dimulai dari argumennya.Baris 4 membuat angka-angka
0
untukd–1
spasi yang sama di sekitar lingkaran jari-jari 9 (jari-jari tepat tidak penting, dipilih untuk memaksimalkan subjek estetika yang pas dalam satu byte).Baris 5 menerjemahkan panah lurus searah jarum jam di sekitar keliling lingkaran. The
1/7
dan6/7
meninggalkan ruang yang cukup untuk membaca angka.Baris 6 menerjemahkan panah melengkung dari setiap angka ke (10 kali angka modulo
d
).BezierCurve
secara otomatis menggambar kurva Bézier menggunakan titik kontrol yang diberikan. Untungnya, menggunakan titik asal sebagai titik kontrol interior tunggal menghasilkan output yang masuk akal.Keluaran sampel (perhatikan bahwa kasing 9, 10, dan 11 sepele dalam berbagai cara):
d = 7
d = 8
d = 9
d = 10
d = 11
d = 12
d = 13
d = 37
Input terakhir ini dipilih karena 37 membagi 10 ^ 3–1, dan dengan demikian panah interior (tidak termasuk panah diri wajib dari 0 hingga 0) membentuk banyak siklus segitiga.
sumber
Python 2, 294 byte
Mencetak diagram dalam format ini:
Saya tidak tahu apakah format ini baik-baik saja, karena itu saya akan membiarkan jawaban ini tidak valid untuk saat ini.Yay, ini valid!Cobalah di repl.it!
sumber
n
angka -digit. Saya tidak yakin apakah tantangannya mengharuskan Anda melakukannyan>9
.PHP + SVG, 500 Bytes
panah kecil untuk koneksi antara nilai yang sama
untuk melihat panah ke nilai yang sama saya menggunakan nilai warna ini
rgba(255,0,0,0.3)
. itu adalah kemungkinan untuk mempersingkatnya.diperluas
output untuk n = 45
320 Bytes bekerja dengan rect
diperluas
output untuk n = 72
sumber
Python 2,
540464431 byteBeberapa bermain golf seperti menggunakan nama variabel pendek, substitusi variabel, pemahaman daftar dan mengubah semuanya menjadi putih (kecuali teks). Hemat terbesar adalah mengubah posisi yang dihitung sebelumnya menjadi dinamis (lihat
L
).L
menghitung posisi lingkaran berdasarkan jarak ke asal untuk yang besar berisi angka dan yang kecil di luar yang menunjukkan pengarahan diri sendiri.Loop pertama menarik koneksinya: baris pertama adalah lingkaran di sekeliling dan baris kedua ada di bagian dalam, lingkaran kecil ditambahkan untuk menunjukkan arah atau pengarahan diri sendiri.
Loop kedua menempatkan lingkaran dan angka besar.
Jelas ini tidak sebagus jawaban Mathematica, tetapi semuanya dibuat dari awal.
sumber
Mathematica,
124121 byteMembuat gambar sebagai grafik dengan tepi terarah. Output grafik sekarang mengikuti pola yang sama kecuali berlawanan arah jarum jam. Saya lebih suka solusi Greg Martin lebih karena output jauh lebih estetis.
Grafik yang kurang menyenangkan secara visual dapat dihasilkan untuk 82 byte menggunakan
Untuk d = 8,
sumber
Graph
tetapi memiliki reaksi negatif yang sama. Juga, untuk algoritme, penting untuk membedakan antara tepi "searah jarum jam" dan tepi "kali 10". Saya yakin ada pilihan untukGraph
pegangan itu — tetapi kemudian, ini dia lebih banyak byte ....Graph
fitur dan menemukan trik seperti menggunakan->
daripadaDirectedEdge
. Saya mempersingkat versi 100 byte awal menjadi 82 byte, tetapi kemudian memperbaikinya dalam format yang tepat menambahkan 42 byte.CircularEmbedding
, tetapi tidak menempatkan simpul dalam urutan searah jarum jam untukn=7
(saya akui saya tidak mencoba input lain). Apakah itu cocok untuk Andan=7
?Join
danTranspose
sehingga tepi luar akan didaftar terlebih dahulu sebelum tepi interior. Verteks disusun dengan benar di sepanjang jalur melingkar, tetapi karena tepi lebih suka lurus, ujungnya menyerupai n- gon.Python 2 + graphviz, 147 byte
Tidak selalu menggambar lingkaran, menghasilkan file pdf yang disebut
o
sumber
Haskell, 350 byte
Terinspirasi oleh @Loovjo, saya juga menggunakan seni ASCII. Ini berfungsi untuk angka di bawah 100000 (atau sesuatu seperti itu).
Pada dasarnya Anda menunjuk dari x ke (x * 10)% n.
Anda dapat mencoba ini di sini . Tetapi karena codepad tidak mendukung input, ubah q ke nilai n yang Anda inginkan, dan kirim kembali. (Perhatikan bahwa forking tidak berfungsi, jadi salin dan kirim kembali dari halaman utama). Kode yang dikirimkan ada sedikit berbeda, karena versi di atas mengambil input dari konsol.
Saya harap hasilnya intuitif. Saran kompresi dipersilahkan (terutama jika itu mengalahkan 294 ;)).
sumber
foldl (++) ""$map (\...
Batch, 394 byte
Melarikan diri dalam Batch adalah saat-saat paling buruk. Contoh output untuk 7:
sumber
>0<
menunjukkan bahwa0
peta untuk dirinya sendiri, sementara>2<<<3<
menunjukkan bahwa3
peta untuk2
.