ชาวนาคนเดิม ได้ความคิดใหม่ จากการที่ก้อนหินชั่งน้ำหนักตาชั่งสมดุลของตนแตกออกเป็น 4 ส่วนนั้น (http://www.blognone.com/node/27749) ทำให้ชาวนาได้คิดค้นตาชั่งสมดุลแบบใหม่ ซึ่งสามารถชั่งได้จำนวนหลากหลายมากขึ้น โดยตาชั่งใหม่ตัวนี้มีถาดรองชั่งข้างละ 2 อันบนแกนสมดุลอันเดียวกัน โดยจุดแขวนถาดไกลจะอยู่ห่างออกไปจากศูนย์กลางสองเท่าจากจุดแขวนถาดใกล้
มีลักษณะดังนี้
(ดูจาก Firefox และ IE) =================================== = = == = = = = == = = === === == === === == == (ดูจาก Chrome) ==================================== = = == = = = = == = = === === == === === == == ==
(หากการแสดงผลรูปด้านบนมีปัญหา กรุณา copy ส่วนนี้แล้ววางลงใน Notepad ได้ครับ)
เมื่อได้ตาชั่งแบบใหม่นี่แล้ว ก็จำเป็นต้องหาก้อนหินชั่งน้ำหนักชุดใหม่ คำถามคือ ถ้าต้องการให้ชั่งของได้ตั้งแต่ 1, 2, .. , 140 kg ต้องใช้ก้อนหินอย่างน้อยกี่ก้อน และแต่ละก้อนหนักก้อนละเท่าไร (น้ำหนักก้อนหินเป็นจำนวนเต็มนะครับ) ?
(หวังว่าคำถามนี้จะเป็นที่ชื่นชอบ และแปลกใหม่ที่ไม่สามารถหาได้จากที่ไหนๆ ครับ)
.
chrome ผมก็ดูอันเดียวกะ FF IE ได้นะครับ =w=! (แต่ที่บอกว่าดูกะ chrome มันเรียงไม่มั่วแหะ win7 ครับ)
เวรกำ ผมใช้ Chrome 15.0.874.120m + Win7 ดันดูตราชั่งของ Chrome ไม่ได้(เละ) แต่ FF+IE กลับสวยงาม -*-
โอ้ .. ที่แท้เป็นที่ Chrome ผมเอง .. ดันกำหนดค่า option ส่วนของแบบอักษรที่มีความกว้างคงที่ ให้เป็น Tahoma ซี่งไม่ใช่ monospace font
ถาดตาช่างนี้คำนวณตามหลักโมเมนต์ใช่มั้ยครับ? คือถ้าด้านนึงวาดถาดใกล้อีกด้านวางถาดไกล จะได้ว่าน้ำหนักด้านถาด ใกล้คือ x2 ของด้านถาดไกลใช่มั้ยครับ?
เป็นไปตามหลักของกฎธรรมชาติ (จะเรียกว่ากฎม้ากระดก ก็ได้ครับ ;D )
คือ น้ำหนักที่วางลงบนถาดไกล จะให้ผลมากกว่าครับ จะให้ผลเป็น 2 เท่าของการวางลงบนถาดใกล้ ครับ
(แต่ถึงจะเข้าใจสลับกัน แต่เฉพาะในกรณีนี้ก็ยังถือว่าได้คำตอบเหมือนกันครับ เพราะเพียงสลับกลับมาก็ถือว่าถูกต้องได้)
ใช้ tag Pre อยู่ครับ .. ขอบคุณครับ
โอ้ เริ่มมีสองเท่าคิดแบบใช้เซนส์ยากละแฮะ สงสัยต้องเขียนสมการ = ='
ปล.บอกตามตรงหลังจากปัญหาเดิม ผมกลับไปคิดเล่นๆ ว่าถ้ามีตาชั่งสามแขนสี่แขนจะมีอะไรดีขึ้นมั้ยนะ และแล้ว..
May the Force Close be with you. || @nuttyi
ตอนนี้ผมได้ 4 อะครับ แต่คิดว่าน้อยกว่านี้ได้อีก เพราะมันเกิน 140 ไปเยอะเลย = ='
May the Force Close be with you. || @nuttyi
ตอนนี้ของผมได้เป็นช่วงๆ (หลินฮุย) ฮะ คือ 1-114 อันนี้ได้ทุกตัว แต่หลังจากนั้นมีช่องว่างบ้างแฮะ
ไปๆมาๆ ผมว่าสูตรมันมีอยู่แค่ว่าต้อง Recursive หาก้อนหินที่หนักน้อยที่สุดที่ต้องมี(เพื่อเอาไปหักจำนวนที่มากที่สุดแล้วหาค่าได้) แล้วไล่ไปหาว่ามันหักได้มากที่สุดคือเท่าไหร่ แล้วเรียกฟังค์ชั่นลึกไปเรื่อยๆ
ตอนนี้ผมได้เป็น 1 5 25 125 ซึ่งน่าจะสามารถใช้คำนวนได้ถึง 1 - 312 (ถ้ามีแค่ 1 5 25 มันจะได้แค่ 1 - 62)
ผมชอบมากเลย "หาก้อนหินที่หนักน้อยที่สุด แล้วไล่ไปหาว่ามันหักได้มากที่สุด"
ว่าแต่มั่นใจใช่มั๊ยครับว่ามีคำตอบชุดเดียว ?
ค่อนข้างมั่นใจครับ เป็นอัลกอริธึมที่ชัวร์สุด
ที่ผมไล่คิดจากหลังมาหน้า เพราะมันติดมาจากโจทย์ที่แล้ว ผมหลงไปช่วงนึงกับความคิดที่ว่า มันมีวิธีชั่งได้ 1 โดยไม่ต้องมีหินที่หนัก 1 (มีหิน 6 กับ 7 ก็ชั่งหา 1 ได้) แล้วก็เสียเวลาไปกับความคิดนี้พักใหญ่ เลยลองกลับด้านดู ว่ามีวิธีชั่ง 39 ได้ยังไงบ้าง
แล้วก็พบว่าเป็นไปไม่ได้ ต้องใช้หินหนัก 1 แน่นอน เลยรู้สึกว่าการจัดสมการรูปนี้จะชัวร์กว่า
รอดูเฉลยอย่างเดียว ชอบคำถามพวกนี้ แต่ไม่มีปัญญาคิด 55
@ Virusfowl
I'm not a dev. not yet a user.
ผมดีใจมากที่ได้เห็นอัศวินทาง Problem Solving กันหลายท่าน
คิดยังไงก็ใช้ 4 ก้อนแฮะ 2, 10, 50, 250 (เหมือนกับ 1, 5, 25, 125 ของคุณ Thaina นั่นแหละ)
ท่าน Thaina เค้า solve by programming ครับ, Math prove ของท่าน Neizod ก็ใช่ย่อยครับ
น่าเสียดายที่เอาของที่อยากช่างไปไว้ได้แค่ถาดเดียวแฮะ (เพราะพอเอาไปวางอีกถาดจะทำให้เกิดช่องวางของน้ำหนัก) ถ้าสาามารถวางได้ทั้ง 2 ถาดน่าจะมันส์กว่านี้ ;)
ปล.เอา prove ข้อที่แล้วมาฝากฮะ ใครอ่านออกยกมือขึ้น ' ')/
"ถ้าสามารถวางได้ทั้ง 2 ถาด [สิ่งของที่ต้องการชั่ง] น่าจะมันส์กว่านี้" .. ขอบคุณครับ ผมเตรียมคำถามเพื่อรองรับกรณีนี้เรียบร้อยแล้ว แต่เกรงว่าท่านอื่นๆ จะเบื่อคำถามแนวนี้กันไปก่อนเสียแล้วครับ
ไม่ทันแล้ว ผมเขียนรูปทั่วไปแล้ว รอบหน้าไม่ตอบละ ;P
(กว่าโควต้าการตอบผมจะกลับมาได้ เล่นเลยเที่ยงคืนไปเกือบชั่วโมง)
ท่าน Thaina เป็นคนแรกที่ตอบถูกนะครับ .. ส่วนของท่านอื่นคงทราบกันอยู่นะครับว่าคำตอบนั้นถูกหรือป่าว
และกรณีของคุณ Thaina นั้นพิเศษ ต้องขอชื่นชมในเรื่องการเพิ่ม algorithm ที่มากกว่าการ วนลูป brute force ปกติ (แต่จริงๆ ผมก็ไม่รู้ว่าแอบวนลูปเช็คเพื่อความชัวร์ด้วยหรือป่าวนะครับ ;D)
จะเห็นว่าแม้บางท่านจะพยายามคิดเพียวๆ แต่ก็ต้องติดปัญหาในการตรวจสอบที่เยอะมากที่ต้องไล่เช็คจาก 1-140 ซึ่งถ้าโจทย์ขยายค่าไปมากกว่านี้ก็จะลำบากเอาได้ ดังนั้นการเขียนโปรแกรมช่วยก็จะลดภาระตรงนี้ไปได้ (อีกอย่างปกติแล้วคนที่เขียนโปรแกรมเค้าก็ต้องลองคิดแบบเพียวๆ ก่อนเหมือนกันนะครับ .. ยกเว้นหมดมุข เลือกใช้วิธีวนลูป brute force)
ถ้าถามถึงเฉลย ผมว่าหลายคนคงเห็นความสัมพันธ์ของคำตอบและอาจจะจับแนวทางได้แล้ว
จะเห็นว่าการแก้ปัญหานี้จะมีความยุ่งยากหนึ่ง คือการเช็คคำตอบ คือ ต้องเช็คว่าทำให้เกิดค่าตั้งแต่ 1 ไปจนถึง 140 ให้ได้ ซึ่งมันค่อนข้างเยอะมาก
"My solution"
แต่ว่าผมจะขอเสนอวิธีการพิสูจน์แบบหนึ่งที่สามารถแก้ความยุ่งยากนี้ไปได้ นั้นคือ แปลงลักษณะการ generate ค่าต่อเนื่อง(และแถมยังเริ่มจากค่า 1 อีกด้วย)ให้เป็นระบบเลขฐานนั้นเอง ซึ่งมันก็สามารถ generate ค่าได้ต่อเนื่องใช่หรือไม่
หินแต่ละก้อนมีความเป็นไปได้ในการกระทำต่อตาชั่งได้ 5 กรณี คือ X => {-2, -1, 0, 1, 2} หรือ X เป็นค่าใดๆ ก็ได้ในเซตนี้ (จะมองว่าเป็น Random X ก็ได้คับ) โดยผมให้ ค่า - คือวางด้านซ้ายของตาชั่ง, ค่า + คือวางด้านขวา, ส่วนค่า 0 คือไม่นำไปวาง , ส่วน 2 ก็คือมีผลเป็น 2 เท่านั้นเอง
สมมุติให้ค่าน้ำหนักหินก้อนที่ 1, 2, 3, 4, ... เป็น A kg, B kg, C kg, D kg, ...
ค่าน้ำหนักบนตาชั่งคือ Absolute of |X(A) + X(B) + X(C) + X(D)| , มองว่า X เป็นค่า random ในเซต {-2, -1, 0, 1, 2} ก็ได้ที่เปลี่ยนแปลงได้ทุกครั้งที่เรียกใช้ซึ่งอาจจะไม่เท่ากันก็ได้
ขอกำหนดให้ Y => {0,1,2,3,4} หรือให้ Y เป็นค่าใดๆ ก็ได้ในเซตนี้ (หรือ Random Y in {0,1,2,3,4} )
ค่าน้ำหนักบนตาชั่ง =
= | XA + XB + XC + XD |
= | (YA + YB + YC + YD) - (2A+2B+2C+2D) |
(2A+2B+2C+2D) เป็นค่าคงที่เสมอ อันนี้ไม่มีผลต่อการทำให้ Generate ค่าต่อเนื่อง
ส่วนที่สำคัญคือชุด (YA + YB + YC + YD) ซึ่งผูกติดกับตัวแปร Random Y ซึ่งสามารถทำให้เกิดการ Generate ค่าต่อเนื่องได้
จะเห็นว่าถ้าชุดนี้ (YA + YB + YC + YD) โดยที่ Random Y มีค่าตั้งแต่ {0,1,2,3,4} ค่า A,B,C,D,.. จะสามารถ Generate ค่าต่อเนื่องได้ ต้องอยู่ในระบบ Base 5 คือ A,B,C,D = 5^0,5^1,5^2,... เท่านั้น ... และจะพบว่าคำตอบมีแค่ชุดเดียวเท่านั้นด้วย
ดังนั้นชุดหินที่ต้องใช้ที่ทำให้ชั่งได้ตั้งแต่ 1 .. 140 ก็คือต้องใช้ 1, 5, 25, 125 ครับ จำนวน 4 ก้อน
.
คำถามคือใช้อย่างน้อยกี่ก้อน และเป็นอะไรบ้าง(เงื่อนไขคือชั่งได้ 1..140)
งั้น 1 4 16 64 ก็เป็นคำตอบอีกชุดนึงรึเปล่า(ได้ 4 ก้อนเท่ากัน)
วิธีคิดผมคือ เริ่มจากโจทย์ที่แล้วว่ามันเป็น 1 3 9 27 เพราะฉะนั้นก็น่าจะเป็นอะไรคล้ายๆ กัน คิด 1 4 16 ได้ 1 5 25 ได้(ได้คือไม่มีช่วงขาด) พอมาเป็น 1 6 36 จะติดตรงที่ว่า (1+6)*2 = 14 และ 36-14 = 22 แปลว่าไม่สามารถสร้างเลข 15..21 ได้ เลยถอยกลับมาตอบที่ 4 ก้อนและมีคำตอบสองชุด...ประมาณนั้น
May the Force Close be with you. || @nuttyi
ฐาน 6 ใช้ไม่ได้ครับ .. เพราะว่าค่าที่เป็นไปได้มีแค่นี้ {-2,-1,0,1,2} ซึ่งไม่พอสร้างฐาน 6
และมันมีอยู่นิดหนึ่งคือ |VarieSet-ConstSet| จะต้อง generate ค่าให้เริ่มจาก 0,1,2,.. ได้
เดี๋ยวผมขอเช็คระบบฐานเลขคู่ก่อนนะครับ เช่น ฐาน 4 เป็นต้น
เอ้อ .. ฐาน 4 ได้จริงๆ ด้วยครับ .. เยี่ยมจริงๆ ครับคุณ iStyle (น่าจะเพิ่ม "หล่อระเบิด" ข้างหน้าด้วยนะครับ)
เซต {-2, -1, 0, 1, 2} จะตัดให้ใช้เฉพาะ { -1, 0, 1, 2} เท่านั้นซึ่ง จะสามารถ Transform เข้าระบบฐาน 4 ได้ แต่ว่า |VerieSet-ConstSet| จะไม่สมมาตร แต่ก็สามารถ Generate ค่าต่อเนื่องออกมาได้ ซึ่งตรงนี้ผมมองข้ามไปจริงๆ
หุหุหุ เซตแบบนี้ { -1, 0, 1, 2} มันคือ "ตาชั่งสมดุลบนแกนไม่สมดุล" นะครับ .. โอ้วได้ New Idea เลย ... ขอบคุณมากครับ ท่าน iStyle
โอ้ แปลว่ามันน่าจะมีวิธี Solve ด้วย Algorithm อีกชั้นสินะครับ
ส่วนตัวผมชอบ 1 4 16 64 มากกว่านะ เพราะมันรวมแล้วใช้หินที่เบากว่า น่าสนใจๆ
ถ้าเอาน้ำหนักรวมหินน้อยสุดโดยยังใช้สามถาดอยู่ เหมือนว่า 1 4 16 49 จะได้ด้วยนะครับ (น้ำหนักรวม 70 = ครึ่งนึงของน้ำหนักที่ต้องการให้ชั่งได้)
ใช้เลขอนุกรม *4 กับถาดสามถาดนี่แหละครับ แต่เมื่อผลรวมเกินครึ่งนึงของน้ำหนักที่ต้องการชั่งแล้ว (1+4+16+49 > 140/2) ก็หักน้ำหนักก้อนสุดท้ายออกให้เหลือผลรวมเท่ากับครึ่งนึงของน้ำหนักมากที่สุดที่ต้องการชั่ง
ปัญหาน่าจะอยู่ตรงที่เวลาช่วงระหว่างไม่ใช้ก้อนหนักสุด กับตอนเริ่มวางก้อนหนักสุด ที่ถาดใกล้ แล้วก็ช่วงที่ย้ายก้อนหนักสุดจากถาดใกล้ไปถาดไกล ถ้าตรงนี้ต่อกันได้ก็น่าจะโอเคครับ ผมลองคิดคร่าวๆ ของ 140 นี่ได้ครับ (คร่าวจริงๆ อาจจะพลาดได้) แต่ถ้าเป็นน้ำหนักอื่นนี่ไม่แน่ใจเหมือนกัน
ผมจะแสดงการพิสูจน์ว่าสามารถแปลงลงระบบฐาน 4 ได้
ซึ่งจะใช้ถาดไม่ครบ โดยจะใช้ถาดแค่ _ _ | _ เท่านั้น (ไม่ต้องใช้ถาดไกลด้านขวา) โดยจะใช้ก้อนหิน 64,16,4,1 ตามที่ท่าน (หล่อระเบิด iStyle) เสนอคำตอบไว้
ผมเพิ่มสิทธิ contributor ให้แล้วนะครับ
lewcpe.com, @wasonliw
ขอบพระคุณคร้าาาบ .. (:D)
อ่านนตามแล้วสุดยอดมากครับ
もういい