แบบนี้นับได้กี่ขาครับ

ในรถบัสมีผู้หญิงอยู่ 7 คน
ผู้หญิงแต่ละคนถือกระเป๋า 7 ใบ
ในกระเป๋าแต่ละใบมีแมวอยู่ 7 ตัว
แมวแต่ละตัวมีลูก 7 ตัว
แมวแต่ละตัวมีขา 4 ขา
มีทั้งหมดกี่ขาบนรถ?

นับขาผู้ ญ ด้วยนะครับ

taiko_gogo's picture

เอ๊ะ แปลก ๆ นะครับ
กระเป๋าแต่ละใบมีแมว 7ตัว
แล้ว แมวแต่ละตัวมีลูก 7 ตัว
มันแย้งกันอ่ะ

ลูกแมวนี่ อยู่ในท้องแม่แมวป่าวครับ?
ถ้าลูกแมวอยู่ในท้องแม่แมว จะนับเป็นตัวไหมครับ
เช่น แม่แมวมีลูกในท้อง 7 ตัว แปลว่ามีแมวทั้งหมด 8 ตัว(รวมแม่มันด้วย)

ถ้าใช้ แบบนี้ก็เป็นไปไม่ได้ซิครับ
เพราะมันจะแย้งกับที่บอกว่า ในกระเป๋าแต่ละใบ มีแมว 7 ตัว

ในกรณีถ้า ลูกแมว ออกมาเป็นตัวแล้ว
มันก็เป็นไปไม่ได้เหมือนกัน เพราะ มีลูกแมว 7 ตัว แต่มีแมวในกระเป๋าได้ 7ตัว
แล้วแม่แมวไปไหนอ่ะ?

ในกรณีที่ลูกแมวอยู่ในท้องแม่แมว แล้วนับแค่เป็น แม่แมว 1 ตัวเท่านั้น
อย่างนี้ค่อยคิดได้

แมว1 ตัวมี 4 ขา
ลูกแมว 1 ตัวก็มี 4ขา
แม่แมวที่อุ้มท้อง รวมมีทั้งหมด 4 + (7x4)= 32 ขา
ในกระเป๋ามี(แม่)แมว 7 ตัว รวมในกระเป๋ามี 7x32 = 224 ขา
กระเป๋ามี 7 ใบ รวม 7 กระเป๋า มีขา 7x224 = 1568 ขา
ผู้หญิง 7 คน 14 ขา รวมขาทั้งหมด = 1568+14 = 1582 ขา

แต่ผมว่ามันยังตอบได้ไม่หมดเพราะ
-ในรถมีผุ้หญิง 7 คน ไม่ได้แปลว่าไม่มีคนอื่น (ผู้ชาย กระเทย เก ทอม ดี้) อยู่
-ผู้หญิง 7 คน ถ้าเป็นคนแก่ถือไม่ได้ จะนับเป็น 3ขา (or more) หรือไม่
-มีอะไรอย่างอื่นอีกป่าว (หมา แมงมุม...)
-บนหลังคาก็นับว่า เป็นบนรถ แล้วบนหลังคามีอะไรอีกไหม
-ถ้าจะตอบแบบกวน ๆ ก็รวม รถ ขาไป ขากลับ ได้อีก 2 ขา

โฮกกก เอาปัญหาเชาว์มาให้คิดหรอ

แก้หน่อย หลังจากเฟอะฟะอ่านโจทย์ผิด
แมว1 ตัวมี 4 ขา
ลูกแมว 1 ตัวก็มี 4ขา
แม่แมวที่อุ้มท้อง รวมมีทั้งหมด 4 + (7x4)= 32 ขา
ในกระเป๋ามี(แม่)แมว 7 ตัว รวมในกระเป๋ามี 7x32 = 224 ขา
กระเป๋ามี 7 ใบ มีขา 7x224 = 1568 ขา
กระเป๋าทั้งหมด 7x7 ใบ มี 1568x7 ขา = 10976
ผู้หญิง 7 คน 14 ขา รวมขาทั้งหมด = 10976+14 = 10990 ขา

มีขา 7 คู่ อยู่บนรถ ถูกมั้ยเอ่ย

ถ้านับแบบตรงตัวตามคำถามก็

ผู้หญิง        (7)*2 = 14
แมว     (7*7*7)*4 = 1372
ลูกแมว (7*7*7*7)*4 = 9604
รวมได้             = 10990

อาจจะรวมคนขับอีก 2 ขาด้วยก็ตามแต่

โอ้ๆๆ ปรบมือดังๆๆให้คุณ sid ด้วยครับ เป็นคำตอบที่ถูกต้องนะครับคือ 10990

ไม่ทราบว่าคิดนานไหมครับ ผมคิดผิดไปสามสี่รอบ เพราะว่าลืมนับแม่แมวครับ

แล้วอันนนี้ไม่ใช่ปัญหาเชาว์ครับ ตรงๆๆเลย

คำถามแบบนี้ ช่วยพัฒนาสมองได้ดีมากเลยนะครับผมว่า สนุกแล้วก้อไม่ยากจนเกินไปด้วย

เคยไปถามเพื่อนทีนึง มันตอบว่ามี 2 ขาครับ คือ ขาไป-ขากลับ (มันช่างคิดเนอะ ^_^" แต่ผิด 55+)

taiko_gogo's picture

อ้าวเฮ้ย
เพิ่งอ่านโจทย์ดี ๆ
โชว์นูบเลยผม

ผู้หญิงแต่ละคนถือกระเป๋า 7 ใบ

เมื่อคืนง่วง ๆ อ่านแล้วจับใจความได้เป็น มีกระเป๋า 7 ใบ

ผมว่าไม่ถูกนะครับ เพราะว่า ลูกแมว หรือ แม่แมว มันก็คือ "แมว" เหมือนกัน เพราะฉะนั้น ประโยค "ใน​กระ​เป๋า​แต่ละ​ใบมี​แมว​อยู่​ 7 ​ตัว" ก็ต้องหมายถึงมีแมว7 ตัวจริงๆ ถ้าคำตอบเป็น 10990 จริง แสดงว่าโจทย์ผิดครับ

taiko_gogo's picture

คิดเหมือนผมเลย

ผมก็เข้าใจแบบ MR.Joh อะ แสดง เราวิเคราะห์ไปในแนวทางเดวกันอะ เอ๋ งงแล้วอะ

ลองเชียนด้วย haskell ดู
เริ่มด้วย datatype ก่อน

-- ใช้ custom datatype เพื่อแยกว่ามี รถ, ผู้หญิง, ... 
data ObjectType = Bus | Woman | Bag | Cat | Kitten
                deriving Show
 
-- slot ก็คือ สิ่งที่บรรจุไว้ เช่น รถ บรรจุ ผู้หญิง, 
-- ผู้หญิง บรรจุ กระเป๋า
data Object = Obj ObjectType Slot
            deriving Show
 
-- สิ่งที่บรรจุได้ แบ่งเป็นสองพวก คือ มีปริมาณนับได้ กับ ไม่ได้บรรจุอะไรไว้เลย
data Slot = Have Int Object
          | None
          deriving Show

จากนั้นก็ประกาศโจทย์

prob = Obj Bus 
          (Have 7 (Obj Woman 
                      (Have 7 (Obj Bag 
                                  (Have 7 (Obj Cat 
                                              (Have 7 (Obj Kitten None))))))))

หาทางแยกจำนวนของแต่ละ objecttype ออกมา

enumerate :: Object -> [(ObjectType, Int)]
enumerate obj = extract 1 obj
 
extract :: Int -> Object -> [(ObjectType, Int)]
extract multiplier (Obj o None) = [(o, multiplier)]
extract multiplier (Obj o (Have n rest)) = (o, multiplier) : extract nn rest
                                          where nn = multiplier * n

ทดสอบ run

*Main> enumerate prob
[(Bus,1),(Woman,7),(Bag,49),(Cat,343),(Kitten,2401)]

จากนั้นก็สร้าง function นับจำนวน ขา

leg :: ObjectType -> Int
leg Bus = 0
leg Woman = 2
leg Bag = 0
leg Cat = 4
leg Kitten = 4
 
countLeg (obj, num) = (leg obj ) * num

สุดท้ายก็ run หาคำตอบ

*Main> sum $ map countLeg $ enumerate prob
10990
veer's picture

โอว
---
http://blog.vee-u.com/

ภาษาอังกฤษไม่แข็งแรง
มานึกได้ว่ามันต้องใช้ has สิ ไม่ใช่ have

โอว !!! ด้วยคนครับ

sugree's picture

โอ้ว

taiko_gogo's picture

อึ้ง...

โอว้ my god K.pphetra เทพๆ

อึ้งเหมือนกันครับ เีขียนโปรแกรมหาคำตอบกันเลย ขอคาราวะ 1 จอก

โอ้โห คาราวะอีกคน

หะหะ พึ่งเข้ามาอ่านครับ

เขียน haskell ได้อ่านเข้าใจง่ายดีจังเลยครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น