Tạo mọi số nguyên chỉ với bốn chữ số 2
(eli.thegreenplace.net)- Bài toán đố tạo số chỉ bằng bốn chữ số 2 có thể mở rộng từ câu đố bốn phép tính cơ bản thành một trò chơi toán học nâng cao, tùy theo việc cho phép những phép toán nào
- Chỉ với phân số và bốn phép tính cơ bản, có thể tạo ra các số từ 1 đến 6; nếu thêm lũy thừa và giai thừa thì còn có thể dựng được các số lớn như 18, 28, 256, 65536
- Nếu cho phép ghép các chữ số 2 thành 22 hay 222, hoặc dùng số phức và giá trị tuyệt đối, thì có thể biểu diễn cả những số khó tạo bằng phép tính đơn giản theo nhiều cách khác nhau
- 7 được biết đến là một số khó tạo, nhưng nếu cho phép những công cụ như hàm gamma thì có thể tạo trực tiếp từ bốn chữ số 2
- Nghiệm tổng quát của Paul Dirac dùng căn bậc hai lồng nhau và logarit cơ số 2 để biểu diễn một số bất kỳ, rồi dùng phép thay
2 = √(2+2)để khớp chính xác bốn chữ số 2
Quy tắc cơ bản để tạo số bằng bốn chữ số 2
- Điều kiện của câu đố là phải dùng chữ số 2 đúng bốn lần và tạo ra số mục tiêu chỉ bằng các phép toán, không dùng chữ số nào khác
- Chỉ với bốn phép tính cơ bản và phân số, các số nhỏ có thể tạo ra khá dễ dàng
1 = (2+2)/(2+2)2 = 2/2 + 2/23 = 2·2 - 2/24 = 2+2+2-25 = 2·2 + 2/26 = 2·2·2 - 2
- Nếu cho phép lũy thừa và giai thừa, phạm vi biểu diễn sẽ mở rộng đáng kể
18 = 2^(2^2) + 228 = (2+2)! + 2 + 2256 = (2+2)^(2+2)65536 = 2^(2^(2^2))
- Cách ghép các chữ số lại với nhau cũng là một mẹo thường dùng trong câu đố này
26 = 22 + 2 + 211 = 22 / √(2+2)444 = 222 · 2
- Đặc biệt, 7 là một số khó tạo, nhưng nếu dùng hàm gamma thì có thể biểu diễn là
7 = Γ(2) + 2 + 2 + 2 - Trong chuỗi thảo luận trên Math StackExchange có các ví dụ dùng tích phân, số thập phân tuần hoàn, toán tử tổ hợp, v.v.
- Nếu dùng số phức và giá trị tuyệt đối, ta cũng có các biểu thức như
12 = |2 + 2√-2|²
Nghiệm tổng quát của Dirac
- Paul Dirac đã tìm ra một nghiệm tổng quát áp dụng cho mọi số, và công cụ cốt lõi là căn bậc hai lồng nhau
- Nếu lặp lại phép lấy căn bậc hai trên 2, ta có thể viết dưới dạng số mũ như sau
√2 = 2^(1/2) = 2^(2^-1)√√2 = 2^(1/4) = 2^(2^-2)√√√2 = 2^(1/8) = 2^(2^-3)
- Nếu áp dụng căn bậc hai n lần thì có dạng
√√...√2 = 2^(2^-n) - Lấy logarit cơ số 2 một lần sẽ được
2^-n, rồi lấy logarit thêm một lần nữa sẽ được-n - Vì vậy, một số n bất kỳ có thể được biểu diễn dưới dạng
n = -log₂(log₂(√√...√2)) - Biểu thức gốc chỉ dùng chữ số 2 ba lần, nên có thể thay một chữ số 2 bằng
2 = √(2+2)để bảo đảm dùng đúng bốn chữ số 2 - Ví dụ, số 7 có thể được biểu diễn bằng cách lồng căn bậc hai 7 lần như sau
7 = -log_{√(2+2)}(log₂(√√√√√√√2)) - Ký hiệu
ntrong biểu thức không phải là con số thực sự xuất hiện trong cách biểu diễn, mà là ký hiệu phụ trợ để đếm số lần lặp căn bậc hai - Cuối cùng, cánh cửa biểu diễn mọi số đều đã mở ra, nhưng vẫn còn việc phải viết chính xác số lượng dấu căn cần thiết
1 bình luận
Các ý kiến trên Hacker News
Ngay khoảnh khắc cho phép dùng hàm, tôi có cảm giác đã vứt bỏ mục đích của trò chơi
Ví dụ, hàm gamma là
(n-1)!, nên giờ chẳng khác nào tạo ra 7 bằng bốn số 2 và một số 1Nếu có thể giấu số bên trong lời gọi hàm thì việc luôn thành công trở nên quá dễ
+,-(nhị phân/đơn phân),×,÷cũng là hàm, và lũy thừa cũng là hàm. Vậy tại sao lại nên cho phép chúng?Trong các câu đố kiểu này, phạm vi của hàm sơ cấp luôn có thể gây tranh luận, nhưng tôi không nghĩ cần cấm căn bậc hai
Về chuyện nói hàm gamma là
(n-1)!, thì rốt cuộc 2 cũng chỉ làS(S(0))mà thôi (https://en.wikipedia.org/wiki/Peano_axioms)Cấu trúc của Paul Dirac khó có thể gọi là tầm thường, và tôi tò mò liệu bạn thật sự xem nó là tầm thường hay biết một cấu trúc đơn giản hơn
Nếu cho phép hàm gamma thì tại sao các hàm khác lại không được? Nếu đưa vào một hàm tùy ý, ta có thể giải trò chơi theo bất cứ cách nào
Rốt cuộc, ngay từ đầu bài viết tôi đã xem đây là một bài toán không được định nghĩa quy tắc rõ ràng. Cần nêu rõ tập hợp hàm hoặc phép toán được phép dùng, và ý định cho thấy bài toán mở rộng ra sao tùy theo mức độ kiến thức vẫn có thể được giữ nguyên sau khi chỉnh như vậy
Nếu muốn, cũng có thể giới hạn vào các tập con hàm khác nhau rồi thử chứng minh trong đó số nào có thể hoặc không thể tạo ra
Trong bài cũng nói là “công cụ toán học”, chứ không nói là hàm tùy ý
Tuy nhiên, nếu chỉ cho phép các hàm ánh xạ bộ số nguyên sang số nguyên
((Z, Z, ...) -> Z)thì mục đích ban đầu của trò chơi vẫn được giữNhư vậy căn bậc hai và logarit bị loại, cộng·trừ·nhân còn lại nhưng chia thì bị loại. Giai thừa
n!và lũy thừa với số mũ không âm cũng có thể được cho phépTôi tò mò liệu trong ràng buộc này có thể tạo ra một lời giải tổng quát hay không
Nếu là “dùng bất kỳ phép toán nào” thì dễ thôi, chỉ cần dùng hàm kế tiếp
S(n) = n+16 = 2*2*2-27 = S(2*2*2-2)8 = S(S(2*2*2-2))Cứ thế tiếp tục là được
Câu đố này không có quy tắc thật sự, nhưng hàm này có vẻ hoàn toàn không nổi tiếng
Nếu không quy định cụ thể có thể dùng toán tử nào bao nhiêu lần, toàn bộ dự án này không thật sự nhất quán lắm
Liên quan đến chủ đề này còn có “Representing numbers using only one 4” do Donald Knuth viết năm 1964, khi ông 26 tuổi (https://www.jstor.org/stable/2689238)
Bài này cũng được in lại trong chương 10 của Selected Papers on Fun and Games của ông, và chỉ dùng một chữ số 4 cùng ba phép toán
√x(căn bậc hai),⌊x⌋(hàm sàn),x!(giai thừa)Bài kết thúc bằng một phỏng đoán vẫn chưa được giải: liệu mọi số nguyên có thể được biểu diễn theo cách này hay không
Phụ lục trong cuốn sách năm 2011 cũng giới thiệu bài báo 1,5 trang còn sớm hơn, “π in Four 4's”, của J. H. Conway và M. J. T. Guy vào năm 1962. Đó là một ý tưởng tương tự mà hai người viết khi còn là sinh viên Cambridge: https://archive.org/details/eureka-25/page/18/mode/1up?view=...
Ví dụ
5 = ⌊√√√√√(4!)!⌋, vì24!nằm giữa5^32và6^32Không biết có phải chỉ mình tôi không, nhưng lựa chọn dùng
sqrt(2+2)thay vìsqrt(2*2)haysqrt(2^2)trông hơi lạNó che mất một cách không cần thiết lý do vì sao
2=sqrt(2+2)Toàn bộ bài viết, từng lập luận, luận điểm chung, câu chữ, định dạng, v.v. đều tiêu tốn băng thông nhận thức, và có thể còn có áp lực thời gian
Người phê bình có thể thong thả chỉ tập trung vào một điểm, nên chuyện đó trông có vẻ hiển nhiên thôi :)
“Dirac hack” có vẻ sẽ tốn khá nhiều điểm
2+2,2*2,2^2đều hiển nhiên là 4 vàsqrt(4)=2, nên tôi không hiểu vì sao+lại lạ hơn các phép kiaCá nhân tôi thích hướng ngắn gọn hơn
Tôi đã tạo một máy stack dùng lệnh một ký tự, và phải giải một biến thể của bài toán này. Chỉ có các chữ số từ 0 đến 9, và chuỗi
23có nghĩa là push 2 rồi push 3. Để biểu diễn số 23 thật sự thì phải viết kiểu như45*3+Vì vậy còn lại bài toán mã hóa mỗi số nguyên bằng số ký tự ít nhất
Các công cụ có thể dùng là chữ số
0~9,P: Pi,*:(a * b),/:(a / b),-:(a - b),+:(a + b),s:sin(a),c:cos(a),q:sqrt(a),l:log(a),~:abs(a),#:round(a),$:Math.floor(a),C:clamp(a),<:min(a, b),>:max(a, b),^:pow(a, b),a:atan2(a, b),%:positiveMod(a, b),!:(1 - a),?:(a <= 0 ? 0 : 1),o:a xor b scaled by c; ((a*c) xor (b*c))/c,d: nhân đôi phần tử trên đỉnh stack,:: hoán đổi hai phần tử trên cùng,;: hoán đổi phần tử trên cùng và phần tử thứ baSau này tôi tò mò nếu làm lại máy stack này thành stack số phức thì có thể làm được những gì
Lần tới đăng thứ như thế này chắc tôi sẽ không viết bằng điện thoại nữa
https://en.wikipedia.org/wiki/Kolmogorov_complexity
" 23"digit + * digit + *, hoặc dạng tương đươngNói là một lỗi nhỏ rằng “chỉ dùng số 2 ba lần” thì đúng là vậy nếu bỏ qua việc ký hiệu căn lấy giá trị chung làm mặc định và che giấu lũy thừa 1/2
Có khá nhiều số 2 bị ẩn đi
Nếu vậy thì cũng phải thừa nhận rằng 2 che giấu
1+1, và trò chơi có trở nên bất khả thi không?Vì đa thức bậc hai phổ biến hơn rất nhiều so với đa thức bậc cao, căn bậc hai có cảm giác cơ bản hơn các lũy thừa tùy ý
Có nhiều ý kiến chỉ ra rằng sau khi cho phép các hàm hoa mỹ thì trò chơi trở nên buồn cười, nhưng cá nhân tôi thấy cái thú lớn nằm ở việc tìm lời giải thỏa mãn ngay cả khi không có giới hạn quy tắc cụ thể
Liên quan đến chuyện này, từng có một bài reverse engineering/CTF. Tôi sẽ không nêu tên để tránh gian lận, nhưng lời giải của tôi là chèn shellcode cộng một con số cụ thể vào stack pointer
Tuy nhiên toàn bộ shellcode, kể cả con số được cộng vào, chỉ được dùng các byte ASCII chữ và số
Vì vậy tôi dùng một SAT solver để tìm tổ hợp các số được cộng sao cho ra giá trị mong muốn mà không dùng byte bị cấm
https://docs.google.com/presentation/d/19K7SK1L49reoFgjEPKCF...
Tôi nhớ đến game mobile Tchisla. Đó là game phải dùng một số cho trước cùng vài toán tử, căn bậc hai,
!, v.v. để tạo mọi số đến 1000 hoặc 10000Khá thú vị; chơi một lúc sẽ hình thành chiến lược, và trải nghiệm người dùng cũng đơn giản, hiệu quả. Nhưng nên biết trước là nó cực kỳ ngốn thời gian
[0] https://apps.apple.com/fr/app/tchisla-number-puzzle/id110062...
Có bài toán kinh điển bốn số 4, tôi đã biết hồi nhỏ qua cuốn “The Man Who Counted”
https://en.wikipedia.org/wiki/Four_fours
https://en.wikipedia.org/wiki/The_Man_Who_Counted
The Definitive Four Fours Answer Key
https://dwheeler.com/fourfours/
Nhờ nó mà tôi học được quy nạp sai. Tôi cũng thích câu chuyện về những người đứng thành hàng, có thứ gì đó dán sau lưng và phải đoán đó là gì
Đúng là ấn tượng, nhưng có quá nhiều số 2 ẩn bên trong ký hiệu
sqrtđó