Latar Belakang
Dengan memperluas dan membatalkan persyaratan, mudah untuk menunjukkan identitas berikut:
Namun, ini merupakan masalah terbuka apakah semua persegi panjang 1 / n-oleh-1 / (n + 1) dapat membentuk kotak unit.
Tugas
Program Anda harus mengambil bilangan bulat positif N sebagai input dengan cara yang mudah, dan kemas semua persegi panjang 1 / n-by-1 / (n + 1) dengan n antara 1 dan N termasuk ke dalam unit square, sehingga tidak ada dua tumpang tindih .
Untuk setiap kotak Anda harus membuat bilangan bulat berikut secara berurutan:
- 1 jika tepi horisontal lebih panjang dari tepi vertikal, kalau tidak 0
- Pembilang dan penyebut koordinat-x sudut kiri bawah
- Pembilang dan penyebut koordinat y dari sudut kiri bawah
Perhatikan bahwa kita mengambil unit square menjadi (0, 1) x (0, 1)
, dengan nilai x berjalan dari kiri ke kanan, dan nilai y berjalan dari bawah ke atas.
Hasil akhir yang diharapkan adalah gabungan bilangan bulat ini untuk setiap persegi panjang dalam urutan peningkatan n, dalam format apa pun yang nyaman (misalnya dicetak ke stdout, atau sebagai daftar yang dikembalikan dari suatu fungsi).
Contoh Input dan Output
Memasukkan:
3
Keluaran:
0 0 1 0 1 1 1 2 0 1 1 1 2 1 3
Ini mem-parsing sebagai berikut:
0 (0/1, 0/1) 1 (1/2, 0/1) 1 (1/2, 1/3)
Mencetak gol
Ini adalah tantangan kode-golf, jadi jawabannya dengan byte paling sedikit menang. Namun, algoritma Anda juga harus cukup efisien; itu harus bisa berjalan untuk semua N<=100
dalam total sekitar 10 menit.
Solusi Anda harus memberikan solusi yang valid untuk semua N<=100
, tetapi algoritme yang lengkap dan lengkap juga dapat diterima meskipun itu bukan yang terpendek.