Tags:

"ชาวนาคนหนึ่งมีก้อนหินก้อนหนึ่งหนัก 40 กิโลกรัมไว้สำหรับใช้ชั่งสิ่งของแบบตราชั่งสมดุล, วันหนึ่งหินก้อนนี้ถูกเพื่อนบ้านยืมไป และหลังจากนั้นไม่นานเพื่อนบ้านก็นำหินกลับมาคืน พร้อมกับกล่าวคำขอโทษที่ได้ทำหินแตกออกเป็น 4 ส่วนไปเสียแล้ว แต่ชาวนาได้บอกกลับไปว่าไม่ต้องขอโทษหรอก เพราะกลับดีเสียอีกที่ทำให้เขาสามารถชั่งสิ่งของได้ตั้งแต่ 1 กิโลกรัม, 2, 3, .. ไปจนถึง 40 กิโลกรัมได้เลย"

คำถามคือ หินทั้งสี่ก้อนนั้นมีน้ำหนักเท่าไร โดยที่แต่ละก้อนมีน้ำหนักเป็นเลขจำนวนเต็ม ?

(โจทย์คงไม่ได้ยากเกินไปนะครับ)

Get latest news from Blognone
By: LazarusSP1
ContributoriPhone
on 17 November 2011 - 02:38 #354542

นั่งคิดจนได้คำตอบแล้ว
ขออนุญาต share ต่อนะครับ(ขอยังไม่บอกคำตอบ เดี๋ยวคนมาทีหลังไม่ตื่นเต้น)

By: iStyle
ContributoriPhoneAndroidSymbian
on 17 November 2011 - 03:12 #354548
iStyle's picture

เย่ คิดออกแล้ว เกือบนอนไม่หลับ 55

สนุกดีครับ :)

ใบ้: 1 10 100 1000


May the Force Close be with you. || @nuttyi

By: iStyle
ContributoriPhoneAndroidSymbian
on 17 November 2011 - 03:33 #354551
iStyle's picture

แถมให้ข้อนึง

มีเหรียญอยู่ 8 เหรียญ มีเหรียญปลอมซึ่งน้ำหนักเบากว่า ผมมีตราชั่งเที่ยงตรง(สมดุล)ให้ อยากถามว่าต้องชั่งอย่างมากที่สุด น้อยสุดกี่ครั้งถึงจะรู้ว่าเหรียญปลอมคือเหรียญไหน


May the Force Close be with you. || @nuttyi

By: takz1977
iPhoneUbuntu
on 17 November 2011 - 03:41 #354553 Reply to:354551
takz1977's picture

เหรียญปลอมมีเหรียญเดียวใช่ไหมครับ ถ้าเหรียญเดียวก็ =

3 ครั้ง

By: n3tr
ContributoriPhoneBlackberryWindows
on 17 November 2011 - 04:02 #354555 Reply to:354551

ถ้ามีเหรียญปลอม 1 เหรียญ ผมคิดได้

น้อยที่สุด 2 ครั้ง , มากสุด 3 ครั้ง

By: iStyle
ContributoriPhoneAndroidSymbian
on 17 November 2011 - 04:26 #354556 Reply to:354551
iStyle's picture

เหรียญปลอม 1 เหรียญครับ


May the Force Close be with you. || @nuttyi

By: lancaster
Contributor
on 17 November 2011 - 06:54 #354570 Reply to:354551

3 ครั้งใช่มั้ยฮะ

/2/2/2

By: nidlittle
iPhoneWindows
on 17 November 2011 - 12:39 #354649 Reply to:354551

มากสุด 2 ครั้ง น้อยสุดก็ 2 ครั้งครับ

By: iStyle
ContributoriPhoneAndroidSymbian
on 17 November 2011 - 14:09 #354686 Reply to:354649
iStyle's picture

ถูกครับ

วิธีคือแบ่งเหรียญเป็น 3 3 2

  1. ชั่งครั้งที่ 1 เอากองสามเหรียญมาชั่ง

2.1 ถ้าหนักเท่ากัน แปลว่าเหรียญเบาอยู่ในกองสองเหรียญ เอามาชั่งครั้งที่่ 2 หาเหรียญเบากว่า

2.2 ถ้ากองสามเหรียญฝั่งไหนเบากว่า แปลว่าเหรียญปลอมอยู่ฝั่งนั้น หยิบสองเหรียญใดใดในกองเบามาชั่งครั้งที่ 2 เหรียญไหนเบากว่าเหรียญนั้นปลอม ถ้าเท่ากันเหรียญที่เหลือปลอม


May the Force Close be with you. || @nuttyi

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 17 November 2011 - 13:00 #354656 Reply to:354551
Invisible Force's picture

ใช้วีธีแบ่ง 3 กลุ่ม: จะใช้จำนวนการชั่งเพียง 2 ครั้ง จะต้องเจอเหรียญที่เบากว่าแน่นอน

ใช้วีธีแยกสองฝั่งแล้วตัดออกทีละครึ่ง: จะใช้จำนวนการชั่ง 3 ครั้ง จะต้องเจอเหรียญที่เบากว่าแน่นอน

ใช้วีธีสุ่มจับคู่ เลือก วนที่ละเหรียญ: จะใช้จำนวนการชั่งไม่เกิน 7 ครั้ง จะต้องเจอเหรียญที่เบากว่าแน่นอน

(กรณีสุ่มจับคู่ โชคดีเจอ : ก็ใช้เพียง 1 ครั้งครับ)

By: kajokman
ContributorAndroidIn Love
on 17 November 2011 - 16:06 #354727 Reply to:354551
kajokman's picture

2 ครั้ง

สูตรคือ ceil(log n / log 3)

หลักการคือ วัตถุจะถูกแบ่งเป็น 3 กอง คือ กองบนตาชั่งด้านซ้าย, ด้านขวาและส่วนที่เหลือ

และการชั่ง 2 ครั้งจะใช้กับวัตถุได้มากที่สุด 9 ชิ้นครับ

By: neizod
ContributorTraineeIn Love
on 18 November 2011 - 21:50 #355183 Reply to:354551
neizod's picture

ผมมีเวอร์ชันยากกว่านั้นมาฝาก มี 12 เหรียญ เหรียญนึงเบา/หนักกว่าเหรียญอื่นๆ ใช้ตาชั่งได้ 3 ครั้ง 555+

By: iStyle
ContributoriPhoneAndroidSymbian
on 18 November 2011 - 22:39 #355187 Reply to:355183
iStyle's picture

เบา+หนัก = 2ปกติ รึเปล่าครับ = ='


May the Force Close be with you. || @nuttyi

By: neizod
ContributorTraineeIn Love
on 18 November 2011 - 22:50 #355190 Reply to:355187
neizod's picture

ไม่ใช่ครับ ขอโทษที่ไม่กระจ่าง คือใน 12 เหรียญนั้น มี 1 เหรียญที่มันเบากว่าหรือหนักกว่า 11 เหรียญที่เหลือครับ

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 18 November 2011 - 23:51 #355195 Reply to:355183
Invisible Force's picture

ใช้ 3 ครั้งครับ แต่ผมจะเขียนลุยแนวทางไปจนถึงครั้งที่2 ส่วนครั้งที่3ให้ลองพิจารณากันต่อกันนะครับ (เพราะว่าการเขียนอธิบายมันจะแตกซับซ้อนจนไม่น่าอ่าน)

My Solution
เนื่องจากตัวปัญหาไม่ทราบว่าหนักหรือเบากว่า จะตั้ง code ย่อดังนี้

- ก: น้ำหนักได้ เกณฑ์มาตรฐาน
- บ: น้ำหนักอยู่ใน กลุ่มเบา กว่าเกณฑ์มาตรฐาน
- น: น้ำหนักอยู่ใน กลุ่มหนัก กว่าเกณฑ์มาตรฐาน
- o: ยังไม่ทราบว่า หนัก/เบา/เกณฑ์

@ชั่งครั้งที่1 (o4 : o4) นอกตาชั่ง o4

-> สมดุล => จะจัดกลุ่มได้ {o4 } { ก8}

         @ชั่งครั้งที่2 (o3 : ก3) นอกตาชั่ง o1  
          ==> สามารถ @ชั่งครั้งที่3 จบได้

-> ไม่สมดุล => จะจัดกลุ่มได้ {บ4, น4 } {ก4}

         @ชั่งครั้งที่2 (บ2+น2 : ก2+บ1+น1) นอกตาชั่ง บ1,น1  
          ==> สามารถ @ชั่งครั้งที่3 จบได้
By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 20 November 2011 - 19:22 #355484 Reply to:355183
Invisible Force's picture

การเฉลยแบบละเอียดนะครับ เผื่อจะมีประโยชน์กับบางท่านครับ

ขอกำหนด code ย่อ สำหรับการแก้ไขปัญหานี้ดังนี้ครับ

- จ: กลุ่มเหรียญน้ำหนัก จริง
- บ: กลุ่มเหรียญที่อาจมีเหรียญปลอม-เบา อยู่
- น: กลุ่มเหรียญที่อาจมีเหรียญปลอม-หนัก อยู่
- ย: ยังไม่ทราบว่า หนัก/เบา/จริง

@ชั่งครั้งที่1 ชั่ง (4ย กับ 4ย) เหลือไว้นอกตาชั่ง 4ย

-> สมดุล => แสดง 8 เหรียญที่ชั่งเป็นเหรียญจริง หรือสรุปเป็น code สั้นๆ => {4ย} {8จ}

     @ชั่งครั้งที่2  ชั่ง (3ย กับ 3จ) ทิ้งไว้นอกตาชั่ง 1ย  

      -> สมดุล => แสดงว่านอกตาชั่งเป็นเหรียญปลอม  ---> [จบ]

      -> ไม่สมดุล_ด้านซ้ายลอย => แสดงว่า 3ย มีปลอมเบาอยู่ => {3บ} {9จ}

           @ชั่งครั้งที่3  ชั่ง (1บ กับ 1บ) เหลือไว้นอกตาชั่ง 1บ

            -> สมดุล => แสดงว่าที่ไม่ได้ชั่งคือเหรียญปลอม ---> [จบ]

            -> ไม่สมดุล => แสดงว่าฝั่งที่เบากว่าเป็นเหรียญปลอม ---> [จบ]

      -> ไม่สมดุล_ด้านซ้ายต่ำ => แสดงว่า 3ย มีปลอมหนักอยู่ => {3น} {9จ}

           @ชั่งครั้งที่3  ชั่ง (1น กับ 1น) เหลือไว้นอกตาชั่ง 1น

            -> สมดุล => แสดงว่าที่ไม่ได้ชั่งคือเหรียญปลอม  ---> [จบ]

            -> ไม่สมดุล => แสดงว่าฝั่งหนักกว่าเป็นเหรียญปลอม  ---> [จบ]

-> ไม่สมดุล => สามารถสรุปเหรืยญได้เป็น {4บ, 4น } {4จ} ที่ไม่ได้ชั่งเป็นเหรียญจริง

     @ชั่งครั้งที่2  (2บ+2น | 2จ+1บ+1น) ทิ้งไว้นอกตาชั่ง 1บ,1น  

      -> สมดุล => แสดงว่านอกตาชั่งมีเหรียญปลอมอยู่ => {1บ, 1น} 

            @ชั่งครั้งที่3  ชั่ง (1บ กับ 1จ) เหลือไว้นอกตาชั่ง 1น

             -> สมดุล => แสดงว่านอกตาชั่งเป็นเหรียญปลอม ---> [จบ]

             -> ไม่สมดุล => ด้านซ้าย 1บ เป็นเหรียญปลอม  ---> [จบ]

      -> ไม่สมดุล_ซ้ายลอย => มีปลอมใน 2บ-ซ้ายหรือ 1น-ขวา =>{2บ,1น}

            @ชั่งครั้งที่3  ชั่ง (1บ กับ 1บ) เหลือไว้นอกตาชั่ง 1น

             -> สมดุล => แสดงว่านอกตาชั่งเป็นเหรียญปลอม ---> [จบ]

             -> ไม่สมดุล => แสดงว่าฝั่งที่เบากว่าเป็นเหรียญปลอม ---> [จบ]

      -> ไม่สมดุล_ซ้ายต่ำ => มีปลอมใน 2น-ซ้ายหรือ 1บ-ขวา =>{2น,1บ}

            @ชั่งครั้งที่3  ชั่ง (1น กับ 1น) เหลือไว้นอกตาชั่ง 1บ

             -> สมดุล => แสดงว่านอกตาชั่งเป็นเหรียญปลอม ---> [จบ]

             -> ไม่สมดุล => แสดงว่าฝั่งหนักกว่าเป็นเหรียญปลอม ---> [จบ]

.Answer

By: eol
Android
on 17 November 2011 - 05:52 #354560
eol's picture

เป็นชาวนาที่เก่งคณิตศาตร์มาก ............. T[]T

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 19 November 2011 - 10:52 #355030 Reply to:354560
Invisible Force's picture

ก็นะ .. ก็แบบประมาณว่า มีนาเป็น 1000 ไร่ อะคับ .. ก็เลยต้องคิดเลขเยอะหน่อย

ในเมืองไทยก็มีอยู่นะ แถว สุโขทัย

(อันนี้คำตอบ ขำๆ นะครับ)

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 17 November 2011 - 09:50 #354594
Invisible Force's picture

เริ่มมีคนได้คำตอบในใจกันแล้วนะครับ .. (เก่งๆ กันหลายคน)

แต่เอ .. จะมีใครบ้างน๊า ที่จะมา solve ปัญหาด้วย programming บ้าง ?

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 17 November 2011 - 11:52 #354635
By: Thaina
Windows
on 17 November 2011 - 13:00 #354659

1 3 9 27 ?

คิดอยู่นานเลยทีเดียว

By: LazarusSP1
ContributoriPhone
on 17 November 2011 - 14:21 #354691 Reply to:354659

ช่ายๆ ผมได้เลขนี้เหมือนกันครับ https://docs.google.com/document/d/1bIl57n0ZxXMOrsxKIkvnBehbpPki0IpzwcqQCiur3DY/edit

By: neizod
ContributorTraineeIn Love
on 18 November 2011 - 23:00 #355188 Reply to:354691
neizod's picture

ผมพิสูจน์ทางคณิตศาสตร์ให้ดูนะครับ คราวหน้าจะได้ไม่ต้องกระจายตารางให้เมื่อย ;)

สมมติ f(x1,x2,x3,...,xn) เป็นฟังก์ชันจากเลขจำนวนเต็มบวก ไปยังเลขจำนวนเต็มบวก คือฟังก์ชันน้ำหนักของสิ่งของที่สามารถชั่งได้บนตาชั่ง จากก้อนหินน้ำหนัก x1,x2,x3,...xn ที่นำไปวางถ่วงตาชั่ง

และสร้างสมการ w = l - r โดยที่ w คือน้ำหนักของ, l คือน้ำหนักหินด้านซ้าย, r คือน้ำหนักหินด้านขวา

สังเกตที่ f(1) จะได้ว่า

1: w = 1 - 0      คือใส่ก้อนหินด้านซ้าย น้ำหนัก 1 โล

ดังนั้น เราจะได้ว่า f(1) span {1} (คำว่า span คือ f(1) สามารถก่อให้เกิดเหตุการณ์ใดได้บ้าง)

ต่อมาสังเกตที่ f(3) ได้ว่า f(3) span {3} เหตุผลง่ายๆ เหมือน f(1)

ทีนี้ถ้าเราลองหา f(1,3) เล่นๆ เราจะได้ว่า f(1,3) span {1,2,3,4} (ไม่เขียนให้ดูนะครับ)

==========

แต่ถ้าเราใช้วิธีนี้หา f(1,3,9) ด้วย จะค่อนข้างเสียเวลามาก ดังนั้น เราจะสมมติว่า f(1,3) สามารถสาร้างได้จาก f(1) และ f(3) ลองสังเกต

2: w = 3 - 1   เพื่อให้ง่าย เขียน f(3)-f(1)
4: w = 3 + 1           เขียน f(3)+f(1)

จากการสังเกตนี้ เราจะได้ว่า

span f(1,3) = ( f(3)-f(1) ) U ( f(3)+f(1) ) U f(1) U f(3)
            =      {2}      U      {4}      U  {1} U  {3}
            =                   {1,2,3,4}

ตอนนี้ ถ้ามีประสปการณ์พอ จะบอกได้ว่ามันอยู่ในฟอร์มของการอุปนัย (induction) ซึ่งถ้าลองพิสูจน์หากรณีทั่วไปดู เราจะเขียนได้ว่า

span f(x,y) = (f(x)-f(y)) U (f(x)+f(y)) U f(x) U f(y)

==========

ถ้าลองหา f(1,3,9) จะได้ว่า

span f(1,3,9) = ( f(9)-f(1,3) ) U ( f(9)+f(1,3) ) U f(9) U  f(1,3)
              =    {5,6,7,8}    U  {10,11,12,13}  U  {9} U {1,2,3,4}
              =                 {1,2,3,4,...,12,13}

และหา f(1,3,9,27) ได้

span f(27)-f(1,3,9) = {14,15,16,...,26}
span f(27)+f(1,3,9) = {28,29,30,...,40}
ดังนั้น
span f(1,3,9,27) = {1,2,3,...,40}

ซตพ.#

ปล.อันนี้ผมอธิบายอย่างง่ายๆ ซึ่งแบบไม่ถูกตามหลักคณิตศาสตร์ทั้งหมดเท่าไหร่นะครับ แฮะๆ เดี๋ยวจะขวัญกระเจิงไปซะก่อน

By: Thaina
Windows
on 18 November 2011 - 23:52 #355196 Reply to:355188

เข้าใจว่าที่เขากระจายตารางนั่นแค่พิสูจน์เฉยๆครับ

ตอนแรกผมก็คิดด้วยลำดับเหตุการณ์ว่าคงต้องมีหินหนัก 1

แต่พอคิดว่ามันมีความเป็นไปได้ที่ เราจะมีหินหนัก 8 กับ 9 แล้วเอาไปวางสองฝั่ง ก็ชั่ง 1 ได้เหมือนกัน ผมเลยต้องเปลี่ยนกลับไปคิดจาก 39 38

แต่พอคิดได้แล้ว ก็ต้องมานั่งคิดถึง 1 - 40 เหมือนกัน

By: tanut
iPhoneAndroidUbuntu
on 17 November 2011 - 14:11 #354687

นานมาแล้ว ผมก็ยังไม่เข้าใจว่าทำไมโจทย์พวกนี้ถึงเรียกว่าโจทย์ coding/programming เพราะว่ามันก็เป็นโจทย์ธรรมดาๆ...
หรือว่าเราขี้เกียจคิดคำตอบ ก็เลยต้องเขียนโปรแกรมมาวนลูปหาคำตอบที่ถูกต้อง :)

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 17 November 2011 - 15:10 #354704 Reply to:354687
Invisible Force's picture

ในกรณีนี้ยังงัยมันก็ไม่มีทางเอาไปประโยชน์จริงๆได้อยู่แล้วครับ .. เป็นเพียงการฝึกแปลงความคิดให้เป็น flow หรือ ชุดคำสั่งทางคอมพิวเตอร์เท่านั้นหละครับ

ในกรณีชัดเจนนั้น คือเรื่อง Matrix ครับซึ่งหลายคนคงทราบอยู่แล้วว่า, ปกติการแก้สมการหลายตัวแปร เราก็แก้ด้วยมือก็ได้ครับ แต่ว่าถ้าจะแก้สมการตัวแปรเยอะๆ เราก็สามารถให้คอมพ์มันทำงานให้โดยอาศัย algorithm ของ Matrix โดยทำ operation กันแบบ Matrix มันก็จะ Generic ยืดหยุ่นรองรับการแก้ปัญหาหลายๆ ตัวแปรได้ครับ

By: AMp
In Love
on 17 November 2011 - 15:12 #354708 Reply to:354687

ฝึก logic + เทคนิคการเขียนโปรแกรมครับ

By: kurosame
ContributoriPhone
on 17 November 2011 - 16:20 #354732 Reply to:354687
kurosame's picture

ข้อดีของการดูโจทย์แบบนี้เพื่อหาเราสามารถเปลงโจทย์เดิม [A] ไปเป็นอีกโจทย์ที่ equivalent [B] กันได้
ถ้าเกิดเรามี solution ของปัญหา [B] เราก็เอาไปใช้กับ [A] ได้ นอกจากจะไม่ต้องคิดให้เหนื่อยแล้วประสิทธิภาพในการได้มาซึ่งคำตอบก็น่าจะดีที่สุดด้วย

ยกตัวอย่างแล้วกันคุณว่าปัญหา [B] Travelling saleman คุณรู้มั้ยมันเอามาใช้ทำอะไรบ้าง (มีอะไรที่เป็นปัญหา [A] จะแก้โดยใช้ Travelling saleman ได้)


{$user} was not an Imposter

By: iStyle
ContributoriPhoneAndroidSymbian
on 17 November 2011 - 17:42 #354758 Reply to:354687
iStyle's picture

ใช่ครับมันเป็นโจทย์เชาว์ธรรมดาๆ ที่ผมเล่นตั้งแต่เด็กๆ เลย(แน่นอนตอนนั้นไม่มีความรู้ทางโปรแกรมมิ่ง) แต่ผมเชื่อลึกๆ ว่าเด็กที่มี logic ดี เล่นเกมพวกนี้ได้ จะสามารถเขียนโปรแกรมที่ดีได้


May the Force Close be with you. || @nuttyi

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 17 November 2011 - 23:22 #354852
Invisible Force's picture

มีคำถามเพิ่มเติมครับ

แล้วเราจะรู้ได้อย่างไรว่า มีเพียงคำตอบเดียว ครับ ?

By: EThaiZone
ContributorAndroidUbuntuWindows
on 18 November 2011 - 14:12 #355091
EThaiZone's picture

โจทย์นี้ให้เขียนโปรแกรมแก้หรือคิดด้วยหัวเพียวๆ ครับเนี่ย -


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 18 November 2011 - 15:04 #355102 Reply to:355091
Invisible Force's picture

ตามแต่ถนัดเลยครับ .. เอาสนุกด้วยครับ

By: neizod
ContributorTraineeIn Love
on 18 November 2011 - 21:45 #355181 Reply to:355091
neizod's picture

จริงๆ คิดเพียวๆ ถ้ามีพื้นคณิตศาสตร์มาแน่นๆ จะมองปุ๊ปตอบได้ปั๊ปเลยนะ ;)

By: Invisible Force
ContributoriPhoneAndroidUbuntu
on 18 November 2011 - 23:55 #355198 Reply to:355181
Invisible Force's picture

อย่างงี้ต้องขอเชิญท่าน neizod เข้าสู่โจทย์ชาวนา ข้อถัดไปเลยครับ .. คือ comment กำลังว่างอยู่เลยครับช่วยจัดให้หน่อย