Anda harus menulis sebuah program atau fungsi yang diberikan N
oleh N
kotak persegi dengan spasi sama dan lingkaran yang bertuliskan menghasilkan atau mengembalikan jumlah kotak kotak yang tumpang tindih sebagian atau seluruhnya oleh lingkaran padat.
Tumpang tindih berukuran 0 (yaitu ketika lingkaran hanya menyentuh garis) tidak dihitung. (Tumpang tindih ini terjadi pada misalnya N = 10
.)
Contoh
N = 8 (64 squares), Slices = 60
Memasukkan
- Bilangan bulat
N > 0
. (Kotak akan memilikiN * N
kotak.)
Keluaran
- Integer, jumlah irisan lingkaran padat.
Contohnya
(pasangan input-output)
Inputs: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Outputs: 1 4 9 16 25 36 45 60 77 88 109 132 149 172 201
Ini adalah kode-golf sehingga entri terpendek menang.
N^2
.Jawaban:
Pyth,
2726Cobalah secara online: Pyth Compiler / Executor
Saya menggunakan
2Nx2N
kotak dan menghitung2x2
kotak yang tumpang tindih . Itu sedikit lebih pendek, karena saya sudah tahu jari-jarinyaN
.Dan sebenarnya saya tidak menghitung kotak yang tumpang tindih. Saya menghitung kuadrat non-tumpang tindih kuadran kedua, kalikan jumlahnya dengan 4 dan kurangi hasilnya
N*N
.Penjelasan untuk solusi 27:
Penjelasan untuk solusi 26:
Saya perhatikan bahwa saya menggunakan koordinat hanya sekali dan segera kurangi koordinat dari
Q
. Mengapa tidak hanya menghasilkan nilaiQ - coords
secara langsung?Ini terjadi di
%2_UtQ
. Hanya satu char yang lebih besar dari pada solusi sebelumnya dan menghemat 2 karakter, karena saya tidak perlu mengurangi-Q
.sumber
Python 2, 72
Tidak Terkumpul:
Poin grid untuk sebuah
(n+1)*(n+1)
kotak. Sebuah sel tumpang tindih lingkaran jika titik grid terdekat pusat berada di dalam lingkaran. Jadi, kita dapat menghitung titik kisi, kecuali ini melewatkan2*n+1
titik kisi pada sumbu (baik untuk genap dan ganjiln
), jadi kami memperbaikinya secara manual.Kode menyimpan karakter dengan menggunakan jarak kompleks untuk menghitung jarak ke pusat dan loop runtuh untuk beralih pada indeks tunggal.
sumber
CJam,
36 35 3427 byteIni ternyata sama dengan algoritma xnor, tapi saya ingin tahu apakah ada yang lebih baik.
Penjelasan kode :
MEMPERBARUI : Menggunakan trik 2N dari Jakube bersama dengan beberapa teknik lain untuk menghemat 7 byte!
Cobalah online di sini
sumber
Pyth,
4436Mencoba untuk membersihkannya sedikit kalau-kalau aku bisa mencukur beberapa byte.
Penjelasan
Saya harus secara eksplisit memeriksa
n = 1
, karena algoritma saya hanya memeriksa sudut alun-alun terdekat dengan pusat (dan tidak ada yang tercakup dalamn = 1
).sumber
Oktaf
(74) (66)(64)Di sini versi oktaf. Pada dasarnya menemukan semua simpul dalam lingkaran dan kemudian menemukan semua kotak dengan satu atau lebih simpul yang valid melalui konvolusi. 64 Bytes:
66 Bytes:
74 Bytes:
sumber
R - 64
sumber