Menurut Wikipedia , fungsi yang sangat kuat adalah Darboux
satu yang gambar setiap interval terbuka (tidak kosong) adalah seluruh garis nyata
Dengan kata lain, suatu fungsi adalah Darboux kuat jika diberikan 3 bilangan real arbitrer , , dan , selalu mungkin untuk menemukan antara (berbeda) dan sedemikian rupa sehingga .
Untuk keperluan tantangan ini, kami akan mempertimbangkan fungsi-fungsi Darboux yang kuat atas dasar pemikiran.
Tantangan Anda adalah menulis program atau fungsi yang:
- memberikan angka rasional sebagai output untuk setiap input angka rasional,
- selalu memberikan output yang sama untuk input yang diberikan, dan
- memiliki properti sangat Darboux.
Input dan output dapat berupa salah satu dari berikut ini:
- tipe angka presisi arbitrer, jika bahasa Anda memiliki satu (atau memiliki perpustakaan untuk satu, misalnya GMP).
- representasi string angka, yang Anda anggap akan selalu berisi titik desimal dan setidaknya satu digit di kedua sisi. Mungkin ada di basis apa saja , tetapi input dan output harus dalam basis yang sama. Anda dapat menggunakan serangkaian karakter apa pun untuk digit dan titik desimal (tetapi sekali lagi, mereka harus konsisten antara input dan output).
Input akan selalu memiliki basis pemutusan . Adapun output, yang mungkin memiliki basis ekspansi secara teoritis non-terminasi tergantung pada pilihan fungsi Anda, Anda dapat memilih salah satu dari berikut ini:
- digit keluaran selamanya.
- ambil bilangan bulat tambahan sebagai input dan output setidaknya sebanyak itu digit.
- output setidaknya sebanyak digit dalam input (yang mungkin mengandung nol trailing).
Perhatikan bahwa dengan sifat tantangan ini, konvensi yang nomor dapat diasumsikan representable oleh jenis nomor standar tidak tidak berlaku, kecuali untuk input kedua dijelaskan dalam opsi 2 di atas.
Untuk menghindari celah dengan fungsi yang hanya ditentukan pada rasional yang tidak berakhir, kiriman Anda harus dapat menghasilkan output yang mendekati sewenang-wenang dengan nilai yang diinginkan dalam praktiknya . Secara formal, mengingat bilangan rasional , , , dan , harus ada bilangan rasional yang berakhir pada basis yang Anda pilih sehingga dan .
Untuk memberi Anda beberapa ide, berikut adalah deskripsi fungsi Conway base 13 :
- Konversikan ke basis 13 dan hapus titik desimal.
- Jika hasilnya dalam bentuk , di mana dan hanya terdiri dari digit dari 0 hingga 9, maka .
- Jika hasilnya dalam bentuk , di mana dan hanya terdiri dari digit dari 0 hingga 9, maka .
- Kalau tidak, .
Fungsi ini sangat Darboux. Katakan, misalnya, bahwa kita ingin menemukan beberapa antara dan sedemikian rupa sehingga . Nilai base-13 akan memenuhi persyaratan ini.
Kiriman Anda mungkin merupakan implementasi dari fungsi ini, meskipun saya menduga ada fungsi-fungsi Darboux kuat lainnya yang jauh lebih pendek untuk diimplementasikan. :)
Jawaban:
Retina 0.8.2 ,
4350 byteCobalah online! I / O adalah sebagai string biner. Enkode nomor biner
y
dekat dengan nomor biner laina
sebagai berikut:a
tidak mengandung.
, sufiks satu.a
berisi angka ganjil setelah.
, sufiks a0
.y
negatif maka akhiran11
sebaliknya akhiran10
.y
, akhiran0
diikuti oleh digit itu.y
mengandung.
, suffix11
pada titik itu, jika tidak suffix setelah semua digit dalamy
.Penjelasan:
Pasangkan digit mulai dari titik biner. Jika nomor tersebut merupakan penyandian yang valid, maka decode
1x
pasangan digit terakhir ke a.
dan yang kedua terakhir ke-
tanda opsional . Digit sebelum itu diabaikan.Ini seharusnya meninggalkan pasangan yang memulai
0
, jadi hapus0
s.sumber
-.
. Apakah itu menyiratkan nol atau tidak seharusnya diproduksi?*
s ke+
, yang akan menjamin setidaknya satu digit sebelum dan sesudah.
?.
. Saya pikir saya masih bisa menjamin satu digit sebelum.
sekalipun..
tidak mengubah nilainya, tetapi perubahan pada input fungsi Anda mengubah output. Mungkin Anda diizinkan untuk memperbaikinya dengan mengasumsikan input tidak memiliki 0s. Juga, jika Anda mengelompokkan pasangan dari kanan, bagaimana ini "secara teoritis bekerja untuk input nyata"?11
ditambahkan pada langkah 2.)Jelly , 71 byte
Cobalah online!
Program lengkap yang menggunakan nomor basis-10 sebagai input dan output dan mengimplementasikan fungsi Conway base 13 tetapi menggunakan basis 7 dan 10 daripada 10 dan 13. Kedua input dan output menggunakan koma sebagai pemisah desimal. Output akan memiliki yang memimpin - untuk angka negatif.
sumber
Retina ,
28252628 byteCobalah online!
Penjelasan
Ini dapat menampilkan nol di depan dan di belakang, dan angka tanpa bagian integer.
Bisa golf 2 atau 3 byte lebih banyak jika saya bisa menggunakan
4+
. Tapi saya tidak yakin bagaimana mendefinisikan hasil teoritis jika input memiliki aliran4
s yang tak berujung .sumber