Công thức tự tham khảo của Tupper (được sao chép từ Wikipedia)
Công thức tự tham chiếu của Tupper là một công thức được định nghĩa bởi Jeff Tupper, khi được vẽ biểu đồ theo hai chiều tại một vị trí rất cụ thể trong mặt phẳng, có thể được "lập trình" để tự tái tạo trực quan công thức. Nó được sử dụng trong các khóa học toán và khoa học máy tính khác nhau như một bài tập trong các công thức đồ thị.
Trường hợp là hàm sàn.
Hãy k
là số có 543 chữ số sau đây:
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
Nếu một biểu đồ tập hợp các điểm (x, y)
trong 0 <= x < 106
và k <= y < k + 17
thỏa mãn bất đẳng thức đã cho ở trên, thì biểu đồ kết quả trông như thế này (lưu ý rằng các trục trong biểu đồ này đã bị đảo ngược, nếu không thì hình ảnh bị lộn ngược):
Vậy thì sao?
Điều thú vị về công thức này là nó có thể được sử dụng để vẽ biểu đồ cho bất kỳ hình ảnh 106x17 đen trắng nào có thể. Bây giờ, thực sự tìm kiếm để tìm kiếm sẽ vô cùng tẻ nhạt, vì vậy có một cách để tìm ra giá trị k nơi hình ảnh của bạn xuất hiện. Quá trình này khá đơn giản:
- Bắt đầu từ pixel dưới cùng của cột đầu tiên của hình ảnh của bạn.
- Nếu pixel có màu trắng, 0 sẽ được thêm vào giá trị k. Nếu nó màu đen, nối thêm 1.
- Di chuyển lên cột, lặp lại bước 2.
- Khi ở cuối cột, di chuyển đến cột tiếp theo và bắt đầu từ dưới cùng, theo quy trình tương tự.
- Sau khi mỗi pixel được phân tích, chuyển đổi chuỗi nhị phân này thành số thập phân và nhân với 17 để có giá trị k.
Công việc của tôi là gì?
Công việc của bạn là tạo ra một chương trình có thể lấy bất kỳ hình ảnh 106x17 nào và xuất giá trị k tương ứng của nó. Bạn có thể đưa ra các giả định sau:
- Tất cả hình ảnh sẽ chính xác 106x17
- Tất cả hình ảnh sẽ chỉ chứa pixel đen (# 000000) hoặc trắng (#FFFFFF), không có gì ở giữa.
Cũng có một vài quy tắc:
- Đầu ra chỉ đơn giản là giá trị k. Nó phải ở trong cơ sở thích hợp, nhưng có thể ở bất kỳ định dạng nào.
- Hình ảnh phải được đọc từ PNG hoặc PPM.
- Không có sơ hở tiêu chuẩn.
Hình ảnh thử nghiệm
[ ] sẽ tạo ra ~ 1.4946x10 542
[ ] sẽ tạo ra ~ 7.2355x10 159
[ ] nên tạo 2 1801 * 17
[ ] sẽ tạo ra (2 1802 -1) * 17
Kiểm tra Gist này cho các giải pháp chính xác.
Đây là mã golf , vì vậy số byte ít nhất sẽ thắng.
Liên kết hữu ích
quine
ở đâu đó.