Tantangan ini diinspirasi oleh blog pemrograman yang sering saya kunjungi. Silakan lihat posting asli di sini: Puzzle Pemrograman
Tantangan
Tetapkan fungsi f:Q->Q
sedemikian rupa f(f(n)) = -n
untuk semua bilangan bulat bukan nol n
, dan di mana Q
himpunan bilangan rasional.
Detail
Dalam bahasa apa pun yang Anda inginkan, sebutkan satu fungsi atau program f
yang menerima sebagai parameter satu nomor n
dan mengembalikan atau menampilkan satu nomor f(n)
.
Input dapat diberikan melalui mekanisme apa pun yang paling alami untuk bahasa Anda: argumen fungsi, baca dari STDIN, argumen baris perintah, posisi tumpukan, input suara, tanda-tanda geng, dll.
Output harus berupa nilai balik dari fungsi / program atau dicetak ke STDOUT.
Saya ingin membatasi jawaban untuk fungsi yang tidak memanfaatkan status program atau memori / data global yang terlihat dari luar fungsi f
. Misalnya, menjaga penghitung di luar f
itu dihitung berapa kali f
dipanggil dan hanya melakukan negasi berdasarkan perhitungan ini tidak terlalu menantang atau menarik bagi siapa pun. Keputusan yang diambil f
harus hanya bergantung pada data dalam f
lingkup leksikal.
Namun, batasan ini mungkin tidak sesuai untuk beberapa bahasa berorientasi tumpukan atau jenis bahasa lain yang tidak membedakan tipe data atau cakupan ini. Silakan gunakan penilaian terbaik Anda untuk tetap dengan semangat tantangan ini.
Mencetak gol
Aturan golf kode umum berlaku - skor Anda adalah jumlah byte dalam kode sumber Anda.
Jawaban minimal membutuhkan domain dan kode f
untuk menjadi subset dari rasional Q
. Jika Anda membatasi domain dan kode domain Anda f
ke bilangan bulat Z
, maka skor Anda adalah batas tertinggi 90% dari jumlah byte dalam kode sumber Anda.
Tiebreak
Dalam hal seri, berikut ini akan digunakan secara berurutan:
- Jumlah simbol non-spasi putih yang dapat dicetak dalam kode sumber Anda
- Tanggal dan waktu paling awal pengiriman jawaban
Edit
Anda tidak diharuskan untuk mendukung angka-angka berukuran sewenang-wenang. Silakan mengartikan set Z
dan Q
sebagai tipe data dalam bahasa yang Anda pilih (biasanya integer dan floating point, masing-masing).
Jika solusi Anda sepenuhnya bergantung pada struktur atau pola bit dari tipe data, mohon jelaskan keterbatasannya dan bagaimana itu digunakan.
f:Q->Q
artinya?
f
adalah fungsi pemetaan anggota Q
(angka rasional) ke anggota lain (mungkin sama) dari Q
. lihat en.wikipedia.org/wiki/Function_(mathematics)#Notation