Wikipedia'ya göre güçlü bir Darboux işlevi
her (boş olmayan) açık aralığın görüntüsünün tamamı gerçek çizgi
Diğer bir deyişle, işlevinin 3 rasgele gerçek sayı , ve verildiği takdirde kuvvetle Darboux'dur , f ( x ) = y olacak şekilde (farklı) a ve b arasında bir bulmak her zaman mümkündür .
Bu zorluğun amaçları için, bunun yerine rasyonlar üzerinde Darboux işlevlerini güçlü bir şekilde ele alacağız.
Sorun, aşağıdakileri yapan bir program veya işlev yazmaktır:
- her rasyonel sayı girişi için çıkış olarak rasyonel bir sayı verir,
- verilen bir giriş için her zaman aynı çıktıyı verir ve
- güçlü Darboux özelliğine sahiptir.
Giriş ve çıkış aşağıdakilerden biri olabilir:
- dilinizde bir tane varsa (veya biri için bir kitaplığı varsa, örn. GMP) rastgele bir sayı türü.
- sayının dize olarak temsil edileceği varsayılır, her zaman ondalık bir nokta ve her iki tarafta en az bir basamak bulunur. Herhangi bir baz , ancak giriş ve çıkış aynı bazda olmalıdır. Rakamlar ve ondalık nokta için herhangi bir karakter kümesi kullanabilirsiniz (ancak yine giriş ve çıkış arasında tutarlı olmalıdırlar).
Giriş her zaman bir sonlandırma tabanı genişlemesine sahip olacaktır . Fonksiyon seçiminize bağlı olarak teorik olarak sonlandırılmayan baz genişlemesine sahip olabilen çıktıya gelince , aşağıdakilerden herhangi birini seçebilirsiniz:
- sonsuza kadar basamak basar.
- en az o basamaktan giriş ve çıkış olarak ek bir tamsayı alın.
- en az girdi içerdiği kadar basamak (bu sayı sıfır içerebilir).
Bu zorluğun doğası gereği, yukarıdaki seçenek 2'de açıklanan ikinci girdi haricinde, sayıların standart sayı türleriyle temsil edilebileceği varsayımının geçerli olmadığını unutmayın.
Yalnızca sonlandırılmayan gerekçelerde tanımlanan işlevlere sahip boşluklardan kaçınmak için, gönderiminizin pratikte istenen değere yakın keyfi olarak çıktı üretebilmesi gerekir . Resmi olarak rasyonel numaraları verilmiş , , , ve , bir rasyonel sayı olmalıdır o seçtiğiniz tabanında son bulur, öyle ki ve .
Size bazı fikirler vermek için, Conway base 13 işlevinin açıklaması aşağıdadır :
- Dönüştürme tabana 13 ve ondalık noktayı kaldırın.
- Sonuç biçimindeyse , burada ve yalnızca 0 ile 9 arasındaki rakamlardan oluşur, sonra .
- Sonuç biçimindeyse , burada ve yalnızca 0 ile 9 arasındaki rakamlardan oluşur, sonra .
- Aksi takdirde, .
Bu işlev kesinlikle Darboux'dur. Ki, örneğin, istediğimiz bazı bulmak için arasında ve bu şekilde . Temel 13 değeri bu gereksinimi karşılar.
Uygulamanız çok daha kısa olan güçlü Darboux işlevleri olduğundan şüphelenmeme rağmen, başvurunuz bu işlevin bir uygulaması olabilir. :)