Untuk tantangan ini, Anda perlu mengimplementasikan dua fungsi, f dan g , pada bilangan bulat, sehingga f ∘ g adalah fungsi yang sangat menurun sementara g g f adalah fungsi yang benar-benar meningkat. Dengan kata lain, jika Anda mengambil dua bilangan bulat a <b , maka f (g (a))> f (g (b)) dan g (f (a)) <g (f (b)) . Tidak ada batasan pada f dan g secara terpisah, kecuali bahwa mereka masing-masing harus memetakan satu bilangan bulat ke bilangan bulat lainnya.
Harap sertakan deskripsi singkat tentang f dan g dan argumen mengapa mereka memiliki properti yang diperlukan.
Kredit: Tantangan ini terinspirasi oleh masalah dalam kompetisi Master of Mathematics Romania 2011 (yang menanyakan hal yang sama tetapi pada bilangan real, bukan bilangan bulat). Jika Anda benar-benar ingin spoiler, Anda sekarang tahu apa yang harus dicari.
Aturan
Kata "fungsi" dalam tantangan ini harus diambil dalam arti matematis memetakan satu bilangan bulat ke yang lain: Anda dapat menulis dua program atau dua fungsi dan menggunakan salah satu metode standar untuk menerima input dan memberikan output, seperti biasa. Anda dapat menggunakan representasi string dari integer alih-alih variabel integer yang sebenarnya, tetapi jenis input dan output harus identik, sehingga fungsi dapat dikomposisikan tanpa secara manual mengkonversi tipe di antaranya. Ingatlah bahwa secara konseptual, f dan g masih harus berfungsi pada ℤ, jadi Anda tidak dapat menipu dengan menggunakan dua representasi string yang berbeda dari angka yang sama atau yang seperti itu.
Ingatlah bahwa fungsi mungkin tidak disebutkan namanya , selama namanya tidak diperlukan dengan sendirinya atau fungsi lain yang Anda tetapkan. Jika Anda menyebutkan satu atau kedua fungsi, Anda dapat mengasumsikan bahwa mereka ada dalam program yang sama, sehingga mereka dapat merujuk satu sama lain dalam implementasinya (mis. Dengan
def f(x): return -g(x)
Python).Aturan bilangan bulat bilangan bulat yang biasa berlaku: solusi Anda harus dapat bekerja untuk bilangan bulat besar yang sewenang-wenang dalam versi hipotetis (atau mungkin nyata) bahasa Anda di mana semua bilangan bulat tidak terikat secara default, tetapi jika program Anda gagal dalam praktik karena implementasi tidak mendukung bilangan bulat yang besar, itu tidak membatalkan solusi.
Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , jadi skor Anda adalah jumlah dari jumlah byte dari kedua fungsi dan jawaban tersingkat yang menang.