Hanya diberi penggaris dan kompas, tulislah sebuah belah ketupat di dalam persegi panjang yang diberikan, bagikan dua titik yang berlawanan.
Memasukkan
Input adalah dimensi persegi panjang. Dalam contoh yang ditunjukkan, itu akan menjadi 125, 50
. Anda dapat mengambil input dengan cara apa pun yang paling nyaman (seperti dua bilangan bulat, daftar, string, dll).
Dimensi yang lebih besar akan menjadi 100 minimum, sedangkan yang lebih kecil akan menjadi minimum 25. Keduanya tutup pada 200.
Keluaran
Output akan berupa gambar (ditampilkan di layar atau disimpan sebagai file) yang ditampilkan
- Kotak input
- Semua garis / lingkaran "yang berfungsi"
- Belah ketupat yang tertulis
dalam warna berbeda. Pada gambar di atas, persegi panjang berwarna hitam, garis kerja biru, dan oranye belah ketupat. Garis-garis harus digambar dalam urutan yang ditunjukkan dalam daftar (misalnya, belah ketupat menimpa garis yang bekerja dan persegi panjang).
Gambar output harus cukup besar untuk memuat semuanya. Misalnya, lingkaran yang ditampilkan tidak dapat melampaui batas.
metode
Metode yang digunakan dalam contoh gambar di atas adalah:
- Gambarlah sebuah lingkaran menggunakan sudut kiri bawah sebagai pusat, dan kanan atas sebagai titik pada perimeter, memberikan jari-jari sama dengan diagonal persegi panjang itu.
- Lakukan hal yang sama, tetapi bertukar titik pusat dan perimeter.
- Gambarlah garis di antara persimpangan dua lingkaran, berikan garis-berat tegak lurus ke diagonal persegi panjang itu.
- Gunakan persimpangan garis dan persegi panjang baru untuk menggambar belah ketupat.
Ini berhasil karena diagonal interior belah ketupat selalu saling membagi dua. Saya tidak menyertakan bukti lengkap tentang hal ini di sini.
Ini bukan satu - satunya metode untuk mendapatkan belah ketupat Anda, dan Anda dapat menggunakan yang lain, mengingat Anda menjelaskan apa yang Anda lakukan. Saya percaya itu mungkin yang paling mudah.
Aturan
Anda hanya dapat menggambar lingkaran dan garis (atau lebih tepatnya, segmen garis). Lingkaran didefinisikan dengan titik pusat dan titik perimeter. Garis ditentukan oleh dua titik. Garis tidak harus panjang tertentu, tetapi paling tidak harus mencakup titik-titik yang menentukan (perhatikan contoh gambar: garis melewati sedikit persimpangan lingkaran, tetapi tidak ke tepi). Untuk lingkaran, jari-jari dari pusat ke titik perimeter yang dipilih dianggap sebagai garis kerja, dan harus ditunjukkan.
Untuk meraster garis, Anda dapat menggunakan algoritme yang dikenali (misalnya milik Bresenham), atau bergantung pada apa pun yang mungkin dimiliki bahasa Anda. Jika output Anda berbasis vektor, pastikan ditampilkan pada resolusi setidaknya sebesar persegi input dalam piksel. Selain itu, Anda akan menggambar di atas kanvas polos, jadi harap tekan tanda kisi atau keluaran yang asing.
Jangan curang! Anda hanya dapat menentukan penempatan titik / garis / lingkaran menggunakan apa yang telah Anda buat sejauh ini. Jika Anda tidak dapat menjelaskan cara menggunakan garis / lingkaran kerja Anda untuk menunjukkan bahwa itu adalah belah ketupat, Anda salah melakukannya.
Anda dapat menggunakan pasangan titik berlawanan mana saja yang Anda inginkan, dan persegi panjang tidak perlu ditarik garis-sejajar, asalkan outputnya benar.
Input akan selalu menjadi persegi panjang non-persegi, jadi jangan khawatir tentang casing khusus itu.
Terakhir, ini adalah kode standar golf, jadi ukuran terendah dalam byte menang.