สร้างจำนวนเต็มทั้งหมดด้วยเลข 2 จำนวน 4 ตัว
(eli.thegreenplace.net)- ปริศนาการสร้างจำนวนด้วยเลข 2 เพียงสี่ตัว จะขยายจาก ปริศนาการคำนวณพื้นฐาน ไปเป็นการเล่นคณิตศาสตร์ขั้นสูง ขึ้นอยู่กับว่าจะขยายขอบเขตการดำเนินการที่อนุญาตไปไกลแค่ไหน
- ใช้เพียงเศษส่วนและการคำนวณพื้นฐานก็สร้างได้ตั้งแต่ 1 ถึง 6 และเมื่อเพิ่ม เลขยกกำลัง·แฟกทอเรียล ก็สามารถประกอบจำนวนใหญ่ ๆ เช่น 18, 28, 256, 65536 ได้
- หากนำเลข 2 มาต่อกันเป็น 22 หรือ 222 หรือใช้จำนวนเชิงซ้อนกับค่าสัมบูรณ์ ก็สามารถแสดงจำนวนที่ยากต่อการคำนวณแบบง่าย ๆ ได้หลากหลายวิธี
- 7 เป็นที่รู้กันว่าเป็นจำนวนที่สร้างได้ยาก แต่ถ้าอนุญาตให้ใช้เครื่องมืออย่างฟังก์ชันแกมมา ก็สามารถสร้างจากเลข 2 สี่ตัวได้โดยตรง
- คำตอบทั่วไปของ Paul Dirac ใช้ รากที่สองซ้อนกัน และลอการิทึมฐาน 2 เพื่อแสดงจำนวนใด ๆ และใช้การแทนค่า
2 = √(2+2)เพื่อให้ใช้เลข 2 ได้ครบพอดีสี่ตัว
กฎพื้นฐานของการสร้างจำนวนด้วยเลข 2 สี่ตัว
- เงื่อนไขของปริศนาคือ ต้องใช้ตัวเลข 2 ให้ครบพอดีสี่ครั้ง และสร้างจำนวนเป้าหมายด้วยการดำเนินการทางคณิตศาสตร์เท่านั้น โดยไม่ใช้ตัวเลขอื่น
- ใช้เพียงการคำนวณพื้นฐานและเศษส่วน ก็สร้างจำนวนเล็ก ๆ ได้ค่อนข้างง่าย
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
- หากอนุญาตให้ใช้ เลขยกกำลังและแฟกทอเรียล ขอบเขตของสิ่งที่แสดงได้จะกว้างขึ้นมาก
18 = 2^(2^2) + 228 = (2+2)! + 2 + 2256 = (2+2)^(2+2)65536 = 2^(2^(2^2))
- การนำตัวเลขมาต่อกันก็เป็นทริกที่ใช้บ่อยในปริศนานี้
26 = 22 + 2 + 211 = 22 / √(2+2)444 = 222 · 2
- โดยเฉพาะ 7 เป็นจำนวนที่สร้างได้ยาก แต่ถ้าใช้ ฟังก์ชันแกมมา ก็แสดงได้เป็น
7 = Γ(2) + 2 + 2 + 2 - ใน เธรด Math StackExchange มีตัวอย่างที่ใช้ปริพันธ์ ทศนิยมซ้ำ และตัวดำเนินการเชิงจัดหมู่ เป็นต้น
- หากใช้จำนวนเชิงซ้อนและค่าสัมบูรณ์ ก็มีนิพจน์อย่าง
12 = |2 + 2√-2|²ได้เช่นกัน
คำตอบทั่วไปของ Dirac
- Paul Dirac พบคำตอบทั่วไปที่ใช้ได้กับทุกจำนวน โดยเครื่องมือสำคัญคือ รากที่สองซ้อนกัน
- เมื่อนำรากที่สองมาใช้ซ้ำกับ 2 จะสามารถจัดรูปเป็นเลขยกกำลังได้ดังนี้
√2 = 2^(1/2) = 2^(2^-1)√√2 = 2^(1/4) = 2^(2^-2)√√√2 = 2^(1/8) = 2^(2^-3)
- หากใช้รากที่สอง n ครั้ง จะได้รูป
√√...√2 = 2^(2^-n) - จากนั้นเมื่อใช้ลอการิทึมฐาน 2 หนึ่งครั้ง จะได้
2^-nและเมื่อใช้ลอการิทึมอีกครั้ง จะได้-n - ดังนั้น n ใด ๆ จึงสามารถแสดงได้ในรูป
n = -log₂(log₂(√√...√2)) - สูตรเดิมใช้เลข 2 เพียงสามครั้ง ดังนั้นหากใช้
2 = √(2+2)แทนเลข 2 หนึ่งตำแหน่ง ก็จะกลายเป็นสูตรที่ใช้เลข 2 ครบพอดีสี่ตัว - ตัวอย่างเช่น 7 สามารถแสดงได้โดยซ้อนรากที่สอง 7 ครั้งดังนี้
7 = -log_{√(2+2)}(log₂(√√√√√√√2)) nในสูตรไม่ใช่ตัวเลขที่ปรากฏจริงในนิพจน์ แต่เป็นสัญลักษณ์ช่วยนับ จำนวนครั้งที่ทำซ้ำรากที่สอง- ท้ายที่สุด แม้จะเปิดทางให้แสดงจำนวนทั้งหมดได้ แต่ก็ยังต้องเขียนเครื่องหมายรากที่สองให้ถูกต้องตามจำนวนที่จำเป็น
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ทันทีที่ยอมให้ใช้ฟังก์ชัน ก็รู้สึกเหมือนทิ้งเจตนาของเกมไปแล้ว
ตัวอย่างเช่น ฟังก์ชันแกมมาคือ
(n-1)!ดังนั้นตอนนี้ก็เหมือนสร้าง 7 จากเลข 2 สี่ตัวกับเลข 1 หนึ่งตัวถ้าซ่อนตัวเลขไว้ในฟังก์ชันคอลได้ การทำให้สำเร็จเสมอก็ง่ายเกินไป
+,-(แบบสองตัวถูกดำเนินการ/แบบเอกภาค),×,÷ก็เป็นฟังก์ชัน และการยกกำลังก็เป็นฟังก์ชันเช่นกัน แล้วทำไมถึงควรอนุญาตพวกนั้นล่ะ?ในปริศนาแบบนี้ ย่อมมีความเห็นต่างกันเสมอว่า ฟังก์ชันพื้นฐาน ควรกินความแค่ไหน แต่ผมไม่คิดว่าจำเป็นต้องห้ามรากที่สอง
ส่วนที่บอกว่าฟังก์ชันแกมมาคือ
(n-1)!นั้น เลข 2 เองสุดท้ายก็เป็นแค่S(S(0))เท่านั้น (https://en.wikipedia.org/wiki/Peano_axioms)โครงสร้างของ Paul Dirac เรียกว่าเป็นเรื่องจิ๊บจ๊อยได้ยาก และอยากรู้ว่าคิดว่ามันจิ๊บจ๊อยจริง ๆ หรือรู้จักโครงสร้างที่ง่ายกว่านี้
อนุญาตฟังก์ชันแกมมาแล้วทำไมฟังก์ชันอื่นถึงไม่อนุญาต? ถ้าใส่ฟังก์ชันตามใจได้ ก็แก้เกมได้ตามใจชอบ
สุดท้ายผมมองว่าตั้งแต่ต้นบทความ นี่คือ โจทย์ที่ไม่ได้กำหนดกติกาไว้อย่างเหมาะสม ควรระบุชุดของฟังก์ชันหรือการดำเนินการที่อนุญาต และเจตนาที่อยากแสดงให้เห็นว่าโจทย์ขยายออกไปอย่างไรตามระดับความรู้ก็ยังคงอยู่ได้แม้แก้แบบนั้น
ถ้าต้องการ ก็จำกัดเป็นสับเซตของฟังก์ชันต่าง ๆ แล้วลองพิสูจน์ภายในนั้นว่าจำนวนใดทำได้หรือทำไม่ได้ก็ได้
ในบทความก็พูดว่า “เครื่องมือทางคณิตศาสตร์” ไม่ได้บอกว่าเป็นฟังก์ชันตามอำเภอใจ
เพียงแต่ถ้าอนุญาตเฉพาะฟังก์ชันที่ส่งทูเพิลของจำนวนเต็มไปเป็นจำนวนเต็ม
((Z, Z, ...) -> Z)ก็จะยังรักษาเจตนาเดิมของเกมไว้ได้แบบนี้รากที่สองและลอการิทึมจะหลุดออกไป บวก·ลบ·คูณยังอยู่ แต่หารจะหลุดออกไป แฟกทอเรียล
n!และการยกกำลังด้วยเลขชี้กำลังที่ไม่เป็นลบก็น่าจะอนุญาตได้สงสัยว่าจะสร้างวิธีแก้ทั่วไปภายใต้ข้อจำกัดนี้ได้ไหม
ถ้าเป็น “ใช้การดำเนินการทางคณิตศาสตร์อะไรก็ได้” ก็ง่าย แค่ใช้ ฟังก์ชันตัวถัดไป ก็พอ
S(n) = n+16 = 2*2*2-27 = S(2*2*2-2)8 = S(S(2*2*2-2))ทำแบบนี้ต่อไปได้เรื่อย ๆ
ปริศนานี้ไม่ได้มีกติกาจริง ๆ อยู่แล้ว แต่ฟังก์ชันนี้ดูไม่เป็นที่รู้จักเลย
ถ้าไม่กำหนดให้ชัดว่าใช้ตัวดำเนินการใดได้กี่ครั้ง ทั้งโปรเจกต์ก็ไม่ค่อยสอดคล้องกันนัก
ที่เกี่ยวข้องกัน ยังมี “Representing numbers using only one 4” ที่ Donald Knuth เขียนเมื่อปี 1964 ตอนอายุ 26 ปีด้วย (https://www.jstor.org/stable/2689238)
บทความนี้ถูกนำมาพิมพ์ซ้ำในบทที่ 10 ของ Selected Papers on Fun and Games ของเขาด้วย และใช้เพียงเลข 4 หนึ่งตัวกับการดำเนินการสามอย่างคือ
√x(รากที่สอง),⌊x⌋(ฟังก์ชันปัดลง),x!(แฟกทอเรียล)ปิดท้ายด้วยข้อคาดการณ์ที่ยังแก้ไม่ได้ว่า จำนวนเต็มทุกจำนวนสามารถเขียนแทนในรูปแบบนี้ได้หรือไม่
ภาคผนวกที่แนบมากับหนังสือปี 2011 ยังแนะนำบทความสั้น 1.5 หน้าในปี 1962 ที่เก่ากว่านั้นของ J. H. Conway และ M. J. T. Guy ชื่อ “π in Four 4's” ด้วย เป็นแนวคิดคล้ายกันที่ทั้งคู่เขียนตอนเป็นนักศึกษาที่ Cambridge: https://archive.org/details/eureka-25/page/18/mode/1up?view=...
เช่น
5 = ⌊√√√√√(4!)!⌋เพราะ24!อยู่ระหว่าง5^32กับ6^32ไม่รู้ว่ามีแค่ผมหรือเปล่า แต่การเลือกใช้
sqrt(2+2)แทนsqrt(2*2)หรือsqrt(2^2)ดูแปลกมันบดบังเหตุผลที่เห็นได้ชัดว่าเหตุใด
2=sqrt(2+2)โดยไม่จำเป็นทั้งบทความ ข้อโต้แย้งแต่ละส่วน ประเด็นรวม ประโยค การจัดรูปแบบ ฯลฯ ล้วนใช้ แบนด์วิดท์ทางการรับรู้ และอาจมีแรงกดดันเรื่องเวลาด้วย
ฝ่ายวิจารณ์สามารถโฟกัสสบาย ๆ แค่จุดเดียวได้ มันจึงดูเป็นเรื่องชัดเจน :)
“การแฮ็กแบบ Dirac” น่าจะกินคะแนนเยอะ
2+2,2*2,2^2ล้วนเห็นได้ชัดว่าเป็น 4 และsqrt(4)=2ผมเลยไม่เข้าใจว่า+แปลกกว่าตัวอื่นตรงไหนโดยส่วนตัวแล้วผมชอบฝั่ง ความกระชับ มากกว่า
ผมเคยสร้าง stack machine ที่ใช้คำสั่งเป็นอักขระเดี่ยว และต้องแก้โจทย์ดัดแปลงของปัญหานี้ ตัวเลขมีได้แค่ 0 ถึง 9 และอักขระ
23หมายถึงพุช 2 แล้วตามด้วยพุช 3 ถ้าจะสื่อถึงเลขจริง ๆ อย่าง 23 ต้องเขียนนิพจน์ประมาณ45*3+ดังนั้นจึงเหลือโจทย์ว่า จะเข้ารหัสจำนวนเต็มแต่ละตัวด้วยจำนวนอักขระให้น้อยที่สุดได้อย่างไร
เครื่องมือที่ใช้ได้คือ ตัวเลข
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: ทำซ้ำค่าบนสุดของสแตก,:: สลับสองรายการบนสุด,;: สลับรายการบนสุดกับรายการที่สามต่อไปผมสงสัยว่าถ้าลองสร้าง stack machine นี้ใหม่เป็น สแตกจำนวนเชิงซ้อน จะทำอะไรได้บ้าง
คราวหน้าถ้าจะโพสต์อะไรแบบนี้ คงจะไม่เขียนบนมือถือแล้ว
https://en.wikipedia.org/wiki/Kolmogorov_complexity
" 23"digit + * digit + *หรือรูปแบบที่เทียบเท่ากันจะว่าเป็นข้อบกพร่องเล็ก ๆ ว่า “ใช้เลข 2 แค่สามครั้ง” ก็ได้ แต่เป็นแบบนั้นก็ต่อเมื่อมองข้ามข้อเท็จจริงที่ว่าสัญลักษณ์รากใช้ค่าร่วมเป็นค่าเริ่มต้นและซ่อน ยกกำลัง 1/2 ไว้
มีเลข 2 ที่ซ่อนอยู่ไม่น้อยเลย
ถ้าอย่างนั้นเราก็ต้องยอมรับด้วยว่า 2 ซ่อน
1+1อยู่ แล้วเกมนี้จะกลายเป็นเล่นไม่ได้หรือเปล่า?ในแง่ที่พหุนามดีกรีสองพบได้บ่อยกว่าพหุนามดีกรีสูงมาก รากที่สองจึงให้ความรู้สึกพื้นฐานกว่าการยกกำลังแบบใดก็ได้
มีคนชี้กันเยอะว่าเมื่ออนุญาตให้ใช้ฟังก์ชันหวือหวาแล้วเกมจะดูน่าขัน แต่โดยส่วนตัวผมมองว่าความสนุกคือการหาคำตอบที่น่าพอใจได้ แม้ไม่มีการจำกัดกติกาแบบเฉพาะเจาะจงก็ตาม
เรื่องที่เกี่ยวข้องกัน เคยมีโจทย์ reverse engineering/CTF โจทย์หนึ่ง ขอไม่บอกชื่อเพื่อป้องกันการโกง แต่คำตอบของผมคือฉีด shellcode ที่บวกตัวเลขหนึ่งเข้ากับ stack pointer
แต่ shellcode ทั้งหมด รวมถึงตัวเลขที่จะบวก ต้องใช้ได้เฉพาะไบต์ ASCII ที่เป็นตัวอักษรและตัวเลขเท่านั้น
ดังนั้นผมจึงใช้ SAT solver เพื่อหาชุดของตัวเลขที่นำมาบวกกันแล้วได้ค่าที่ต้องการ โดยไม่ใช้ไบต์ต้องห้าม
https://docs.google.com/presentation/d/19K7SK1L49reoFgjEPKCF...
นึกถึงเกมมือถือ Tchisla เป็นเกมที่ให้ใช้ตัวเลขหนึ่งตัวที่กำหนดมา พร้อมโอเปอเรเตอร์ไม่กี่ตัว รากที่สองและ
!เป็นต้น เพื่อสร้างเลขทุกตัวจนถึง 1000 หรือ 10000สนุกทีเดียว เล่นไปก็เริ่มมีกลยุทธ์ และประสบการณ์ผู้ใช้ก็เรียบง่ายมีประสิทธิภาพ แต่ควรรู้ไว้ก่อนว่ามันกินเวลาอย่างมหาศาล
[0] https://apps.apple.com/fr/app/tchisla-number-puzzle/id110062...
มีปัญหาคลาสสิกชื่อ สี่ 4 และผมรู้จักมาตอนเด็กจากหนังสือชื่อ “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/
ผมได้เรียนรู้ การอุปนัยเท็จ จากเรื่องนั้น ชอบเรื่องที่มีคนยืนเรียงแถวกัน มีอะไรบางอย่างติดอยู่บนหลัง แล้วต้องเดาว่ามันคืออะไรด้วย
เจ๋งก็จริง แต่มีเลข 2 ซ่อนอยู่ใน สัญลักษณ์
sqrtนั้นเยอะเกินไป