1 คะแนน โดย GN⁺ 2025-02-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ปริศนาการสร้างจำนวนด้วยเลข 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/2
    • 3 = 2·2 - 2/2
    • 4 = 2+2+2-2
    • 5 = 2·2 + 2/2
    • 6 = 2·2·2 - 2
  • หากอนุญาตให้ใช้ เลขยกกำลังและแฟกทอเรียล ขอบเขตของสิ่งที่แสดงได้จะกว้างขึ้นมาก
    • 18 = 2^(2^2) + 2
    • 28 = (2+2)! + 2 + 2
    • 256 = (2+2)^(2+2)
    • 65536 = 2^(2^(2^2))
  • การนำตัวเลขมาต่อกันก็เป็นทริกที่ใช้บ่อยในปริศนานี้
    • 26 = 22 + 2 + 2
    • 11 = 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 ความคิดเห็น

 
GN⁺ 2025-02-24
ความคิดเห็นบน 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! และการยกกำลังด้วยเลขชี้กำลังที่ไม่เป็นลบก็น่าจะอนุญาตได้
      สงสัยว่าจะสร้างวิธีแก้ทั่วไปภายใต้ข้อจำกัดนี้ได้ไหม
    • วิธีแก้ของ Dirac ไม่มีฟังก์ชันแกมมา ใช้แค่รากที่สอง N ตัวกับลอการิทึม 2 ตัว
  • ถ้าเป็น “ใช้การดำเนินการทางคณิตศาสตร์อะไรก็ได้” ก็ง่าย แค่ใช้ ฟังก์ชันตัวถัดไป ก็พอ
    S(n) = n+1
    6 = 2*2*2-2
    7 = S(2*2*2-2)
    8 = S(S(2*2*2-2))
    ทำแบบนี้ต่อไปได้เรื่อย ๆ

    • ดูจากข้อจำกัดที่ว่า “ไม่ใช้ตัวเลขอื่น” การมี 1 อยู่ในบรรทัดแรกดูเหมือนผิดกติกา
    • ผมเรียนคณิตศาสตร์มามากในโรงเรียน ทำงานวิศวกรรมและใช้คณิตศาสตร์ทุกวัน รวมถึงติดตามช่องคณิตศาสตร์บน YouTube หลายช่อง แต่เพิ่งเคยได้ยินฟังก์ชันนี้เป็นครั้งแรกในชีวิต
      ปริศนานี้ไม่ได้มีกติกาจริง ๆ อยู่แล้ว แต่ฟังก์ชันนี้ดูไม่เป็นที่รู้จักเลย
    • การหาว่า นิพจน์ที่สั้นที่สุดที่สร้างจำนวนเต็มที่กำหนดจากเลข 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
    • ถ้าสร้างตัวเลขแต่ละหลักด้วยคำสั่ง “คูณด้วย 10 แล้วบวกตัวเลขนั้น” และมีคำสั่งแยกต่างหากที่พุช 0 เหมือนช่องว่างล่ะ? ถ้าอย่างนั้นก็แทน 23 ได้เป็น " 23"
    • นึกถึง https://www.hacker.org/hvm/ (2008)
    • คิดว่าน่าจะมีตัวเลขจำนวนมากที่ถูกเข้ารหัสใน ฐาน 9 หรือฐาน 10 ได้ โดยรวม ๆ น่าจะเป็นการทำซ้ำแพตเทิร์นแบบ 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 นั้นเยอะเกินไป