Theo Wikipedia , một chức năng Darboux mạnh mẽ là
một trong đó hình ảnh của mỗi khoảng mở (không trống) là toàn bộ dòng thực
Nói cách khác, hàm rất mạnh Darboux nếu được cho 3 số thực , và tùy ý , luôn có thể tìm thấy một giữa (phân biệt) và sao cho .
Đối với mục đích của thách thức này, chúng tôi sẽ xem xét các chức năng Darboux mạnh mẽ hơn các lý do thay thế.
Thách thức của bạn là viết một chương trình hoặc chức năng:
- đưa ra một số hữu tỷ làm đầu ra cho mỗi đầu vào số hữu tỷ,
- luôn luôn cung cấp cùng một đầu ra cho một đầu vào nhất định và
- có tài sản Darboux mạnh mẽ.
Đầu vào và đầu ra có thể là một trong những điều sau đây:
- một loại số chính xác tùy ý, nếu ngôn ngữ của bạn có một (hoặc có một thư viện cho một, ví dụ như GMP).
- một chuỗi đại diện cho số mà bạn có thể giả sử sẽ luôn chứa dấu thập phân và ít nhất một chữ số ở hai bên. Nó có thể ở bất kỳ cơ sở , nhưng đầu vào và đầu ra phải nằm trong cùng một cơ sở. Bạn có thể sử dụng bất kỳ bộ ký tự nào cho chữ số và dấu thập phân (nhưng một lần nữa, chúng phải nhất quán giữa đầu vào và đầu ra).
Đầu vào sẽ luôn có một mở rộng cơ sở kết thúc . Đối với đầu ra, có thể có mở rộng cơ sở không kết thúc về mặt lý thuyết tùy thuộc vào lựa chọn chức năng của bạn, bạn có thể chọn bất kỳ tùy chọn nào sau đây:
- chữ số đầu ra mãi mãi.
- lấy một số nguyên bổ sung làm đầu vào và đầu ra ít nhất là nhiều chữ số.
- đầu ra ít nhất là nhiều chữ số trong đầu vào (có thể chứa các số 0 ở cuối).
Lưu ý rằng theo bản chất của thách thức này, quy ước rằng các số có thể được coi là đại diện cho các loại số tiêu chuẩn không được áp dụng, ngoại trừ đầu vào thứ hai được mô tả trong tùy chọn 2 ở trên.
Để tránh các sơ hở với các hàm chỉ được xác định trên các tỷ lệ không kết thúc, trình của bạn phải có thể tạo ra đầu ra tùy ý gần với giá trị mong muốn trong thực tế . Chính thức, được đưa ra con số hợp lý , , , và , thì phải có một số lượng hợp lý mà chấm dứt trong cơ sở của bạn chọn sao cho và .
Để cung cấp cho bạn một số ý tưởng, đây là mô tả về chức năng Conway cơ sở 13 :
- Chuyển sang cơ sở 13 và xóa dấu thập phân.
- Nếu kết quả có dạng , trong đó và bao gồm các chữ số từ 0 đến 9, thì .
- Nếu kết quả có dạng , trong đó và bao gồm các chữ số từ 0 đến 9, thì .
- Mặt khác, .
Chức năng này là mạnh mẽ Darboux. Ví dụ, giả sử rằng chúng tôi muốn tìm một số trong khoảng và sao cho . Giá trị cơ sở 13 sẽ đáp ứng yêu cầu này.
Việc gửi của bạn có thể là việc thực hiện chức năng này, mặc dù tôi nghi ngờ rằng có những chức năng Darboux mạnh mẽ khác ngắn hơn rất nhiều để thực hiện. :)