Terkadang, ketika saya benar-benar bosan ( sangat bosan), saya suka menggambar segmen garis dan menggambar poin di atasnya.
Pertama, saya menggambar segmen garis dengan ukuran tertentu, yaitu 2 ^ N untuk beberapa nilai N. Baris akan diwakili oleh serangkaian .karakter.
................
Kemudian, saya merencanakan titik di ujung kiri. Poin akan diwakili oleh Xkarakter.
X...............
Lalu, saya mengikuti sebuah pola. Mulai dari titik diplot terakhir (yang saya sebut A), saya maju ke titik diplot berikutnya (B) di telepon (membungkus seperlunya). Kemudian, saya maju ke titik diplot berikutnya pada baris (C). Kemudian, saya memplot titik baru setengah jalan di antara titik ketiga ini (C) dan titik yang sudah diplot berikutnya (D).
Setiap kali Anda membungkus garis, "tengah" ditentukan dengan cara membungkus. Titik yang baru diplot selalu di sebelah kanan C.
Katakanlah baris berikut adalah baris saya saat ini. Inilah cara saya merencanakan dua poin berikutnya. Untuk contoh ini, saya akan memberi label setiap poin penting dengan huruf.
X...A...X.X...X.
^
X...A...B.X...X.
^
X...A...B.C...X.
^
X...A...B.C...D.
^
X...X...X.X.A.X.
^
X...X...X.X.A.B.
^
C...X...X.X.A.B.
^
C...D...X.X.A.B.
^
X.A.X...X.X.X.X.
^
Kembali ke contoh sebelumnya, titik berikutnya akan diplot di tengah garis.
X.......X.......
Ini mungkin sedikit kasus khusus: maju ke titik berikutnya hanya membuat Anda di mana Anda mulai. Satu-satunya titik setengah yang berguna adalah titik setengah "siklik" (titik setengah pada garis), berlawanan dengan merencanakan titik pada bagian atas dirinya sendiri.
Di bawah ini adalah serangkaian poin yang akan saya plot pada garis dari sini sampai akhir.
X.......X.......
X.......X...X...
X.......X.X.X...
X...X...X.X.X...
X...X...X.XXX...
X.X.X...X.XXX...
X.X.X...XXXXX...
Tidak ada lagi ruang untuk plot titik berikutnya, karena harus terjepit di antara dua titik yang berdekatan, jadi saya telah mencapai kedalaman maksimum untuk nilai yang diberikan N = 4. Baris terakhir dalam daftar di atas adalah "lengkap . "
Tantangan
Tujuannya adalah untuk menulis fungsi program / nama terpendek yang akan mencetak / mengembalikan garis yang telah diselesaikan untuk nilai N. yang diberikan. Yang di atas menunjukkan N = 4.
Memasukkan
Input akan berupa bilangan bulat non-negatif tunggal N. Panjang garis yang dihasilkan akan menjadi 2 ^ N.
Keluaran
Output akan berupa garis panjang 2 ^ N, yang dibentuk oleh .dan Xkarakter. Baris baru yang tertinggal tidak masalah.
Contoh I / O
0
X
1
XX
2
X.XX
3
X.X.XXX.
4
X.X.X...XXXXX...
5
X.X.X...X...X...X.XXX.XXX.......
(c%b+b)%b? Apakah Anda berharapcmenjadi negatif?