เปิด
ปิด

ไขปริศนาของไอน์สไตน์ ปริศนาของไอน์สไตน์: ใครเลี้ยงปลา? เดาสิ! ข้อความต้นฉบับของปริศนาของไอน์สไตน์

เพื่อให้เข้าใจความเป็นจริงโดยรอบได้ดีขึ้น บุคคลจะต้องพัฒนาความคิดซึ่งขึ้นอยู่กับการทำงานและความสามารถของเขาในการทำงานกับแนวคิดเชิงนามธรรมต่างๆ โดยตรง การคิดขึ้นอยู่กับตรรกะและวัฒนธรรมของมนุษย์ และสาขาวิชาวิทยาศาสตร์จำนวนมากก็ศึกษากระบวนการคิดของมนุษย์ ปัญหาของไอน์สไตน์เกี่ยวกับบ้าน 5 หลังเป็นที่รู้จักกันอย่างแพร่หลายในศตวรรษที่ 20 และตั้งแต่นั้นมาก็ยังไม่สูญเสียความเกี่ยวข้องกับผู้ที่ต้องการปรับปรุงระดับการคิดเชิงตรรกะของพวกเขา

สภาพปริศนา

มีเวอร์ชันหนึ่งที่ผู้เขียนปัญหาเชิงตรรกะนี้คือ Albert Einstein ซึ่งเป็นหนึ่งในผู้ก่อตั้งฟิสิกส์ทฤษฎีสมัยใหม่ บางทีไอน์สไตน์อาจใช้มันเพื่อประเมินความสามารถของผู้สมัครชิงตำแหน่งผู้ช่วยของเขา พวกเขายังอ้างว่าปริศนานี้สามารถประดิษฐ์ขึ้นโดยนักคณิตศาสตร์และนักเขียนชาวอังกฤษชื่อดัง Lewis Carroll อย่างไรก็ตามการประพันธ์ยังไม่ได้รับการยืนยัน เป็นที่น่าสนใจว่าปัญหาประกอบด้วยบุหรี่ที่ไม่ได้ผลิตในช่วงชีวิตของแอล. แคร์โรลล์และในช่วงวัยเด็กของเอ. ไอน์สไตน์

นักฟิสิกส์ผู้ยิ่งใหญ่รายนี้ให้เครดิตกับคำกล่าวที่ว่า มีเพียง 2% ของคนเท่านั้นที่สามารถควบคุมรูปแบบทางจิตโดยอาศัยสัญญาณทั้ง 5 ประการ และในเรื่องนี้ ส่วนใหญ่ไม่สามารถหาคำตอบได้หากไม่มีบันทึกที่ต้องการและการสร้างตารางเสริม แต่ยังไม่มีการยืนยันว่าเป็นไอน์สไตน์ที่พูดเรื่องนี้

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

ข้อความปริศนาเกี่ยวกับบ้าน

ข้อความของปริศนานี้เผยแพร่ครั้งแรกเมื่อวันที่ 17 ธันวาคม พ.ศ. 2505 ในนิตยสาร American Life ในฤดูใบไม้ผลิ ปีหน้าได้มีการเผยแพร่คำตอบที่ถูกต้องและรายชื่อผู้อ่านที่สามารถแก้ไขปัญหานี้ได้

ปริศนามีหลายรูปแบบที่รู้จักกันแต่ สภาพเดิมกำลังติดตาม:

  1. มีบ้าน 5 หลังบนถนน
  2. ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
  3. เจ้าของสุนัขเป็นชาวสเปน
  4. ผู้ที่อาศัยอยู่ในบ้านสีเขียวดื่มกาแฟ
  5. ชาวยูเครนเป็นคนรักชา
  6. บ้านสีเขียวตั้งอยู่ทางด้านขวาของบ้านงาช้าง
  7. ชอบบุหรี่ Old Gold มีหอยทาก
  8. ในบ้านสีเหลืองพวกเขาสูบบุหรี่ยี่ห้อ Cools
  9. ตรงกลางพวกเขาดื่มนม
  10. ชาวนอร์เวย์อาศัยอยู่ในบ้านหมายเลข 1
  11. คนสูบบุหรี่ที่เชสเตอร์ฟิลด์เป็นเพื่อนบ้านของคนเลี้ยงสุนัขจิ้งจอก
  12. บุหรี่ Cools จะถูกสูบในบ้านข้างบ้านที่ม้าอาศัยอยู่
  13. การสูบบุหรี่ของลัคกี้สไตรค์ดื่มน้ำส้ม
  14. คนญี่ปุ่นชอบบุหรี่รัฐสภา
  15. ชาวนอร์เวย์เป็นเพื่อนบ้านของบ้านสีน้ำเงิน

คำถามที่ต้องตอบเมื่อเสร็จสิ้น:

  1. ชาวบ้านคนไหนดื่มน้ำ?
  2. ใครเป็นเจ้าของม้าลาย?

คำอธิบาย: บ้านทั้ง 5 หลังมีสีเฉพาะตัว มีคนหลายเชื้อชาติอาศัยอยู่ในบ้านนั้น มีสีเดียว สำหรับสัตว์เลี้ยง. พวกเขาเป็นคนรักเครื่องดื่มและควันต่างๆ ประเภทต่างๆบุหรี่ สำหรับข้อมูลเพิ่มเติม คำอธิบายสั้น ๆบ้านงาช้างยังเรียกอีกอย่างว่าสีขาว

ในการค้นหาวิธีแก้ไขที่ถูกต้อง คุณต้องป้อนข้อมูลที่ทราบลงในตารางทีละขั้นตอน โดยก่อนหน้านี้ได้แยกข้อมูลเหล่านั้นออกจากรายการแล้ว ตัวเลือกที่เป็นไปได้.

ด่านที่ 1

จากปัญหา (จุดที่ 10) ชาวนอร์เวย์อยู่ในบ้านหมายเลข 1 ทิศทางใดๆ ที่ต้องปฏิบัติตามตลอดทั้งกระบวนการก็ถือเป็นจุดเริ่มต้นได้

จากจุดที่ 10 และ 15 สรุปได้ว่าบ้านหมายเลข 2 เป็นสีฟ้า บ้านของชาวนอร์เวย์มีสีอะไร? จากปริศนาก็ชัดเจนว่าบ้านของเขาจะไม่เป็นสีเขียวหรือสีขาวเนื่องจากอาคารเหล่านี้ตั้งอยู่ติดกัน สิ่งนี้ระบุโดยตรงในวรรค 6 และการตัดสินใจครั้งก่อนของบ้านหมายเลขสอง สีฟ้า. สีแดง - ชาวอังกฤษซึ่งหมายความว่าที่อยู่อาศัยของชาวนอร์เวย์จะมีสีที่แตกต่างออกไป เหลือเพียงทางเลือกเดียวเท่านั้น บ้านหลังแรกเป็นสีเหลือง จากข้อสรุปนี้ เป็นที่ชัดเจนว่าผู้อยู่อาศัยในบ้านหมายเลข 1 สูบบุหรี่ Kools และผู้อยู่อาศัยในบ้านหมายเลข 2 อาศัยอยู่กับม้า

คำถามถัดไปที่ต้องตอบให้ถูกต้องคือ “เครื่องดื่มนอร์เวย์ในบ้านหมายเลข 1 สามารถดื่มอะไรได้บ้าง สีเหลืองและ สูบบุหรี่คูลส์? มีข้อมูลที่แสดงว่าเครื่องดื่มชนิดใดที่ถือว่าเป็นเครื่องดื่มโปรดของผู้อยู่อาศัย ชาวยูเครนชอบดื่มชาและดื่มกาแฟอย่างต่อเนื่องในบ้านสีเขียว จากข้อ 3 ก็ชัดเจนเช่นกันว่าในบ้านหมายเลข 3 พวกเขาดื่มแต่นมเท่านั้น แต่คนที่สูบบุหรี่ลัคกี้สไตรค์กำลังดื่มน้ำผลไม้ เมื่อพิจารณาตัวเลือกทั้งหมดแล้ว คุณจะเข้าใจได้ว่าชาวนอร์เวย์ใช้น้ำนี้ นั่นคือสิ่งที่คุณจำเป็นต้องรู้

ขั้นที่ 2

ตอนนี้เราต้องพยายามดูว่าพวกเขาสามารถสูบบุหรี่ในบ้านหมายเลข 2 ซึ่งเป็นสีฟ้าและเจ้าของเลี้ยงม้าไว้ได้อย่างไร เห็นได้ชัดว่า Kools ถูกรมควันในบ้านหมายเลข 1 และผู้สูบบุหรี่ Old Gold ก็เป็นเกษตรกรหอยทาก เพื่อก้าวไปอีกขั้น สันนิษฐานว่าเจ้าของบ้าน #2 ชอบ Lucky Strike และมักจะดื่มน้ำผลไม้ ถ้ามันเข้ากันจริงๆแล้วใครอยู่ในนั้น?

เห็นได้ชัดว่าเจ้าของของเขาไม่สามารถเป็นคนนอร์เวย์ได้ (10) เช่นเดียวกับที่เขาไม่สามารถเป็นภาษาอังกฤษได้ (2) เขาไม่ใช่ภาษาสเปน (3) ยูเครน (5) หรือญี่ปุ่น (14) เนื่องจากสมมติฐานเหล่านี้ขัดแย้งกับรายการปริศนาที่แสดงในวงเล็บ ปรากฎว่าเจ้าของบ้านหลังที่สองจะไม่สูบบุหรี่ลัคกี้สไตรค์

ไม่น่าเป็นไปได้ที่เจ้าของบ้านหลังที่สองจะสูบบุหรี่ในรัฐสภาเนื่องจากในกรณีนี้เขาไม่สามารถดื่มชา (5) นม (9) กาแฟ (4) และแน่นอนน้ำผลไม้ (13)

จากนี้อาจเป็นที่ถกเถียงกันอยู่ว่าเจ้าของบ้านหลังที่สองสูบบุหรี่เชสเตอร์ฟิลด์ ตอนนี้เราต้องค้นหาสัญชาติของเขา เป็นที่ทราบกันดีอยู่แล้วว่าบ้านเป็นสีฟ้าและเขาเลี้ยงม้า เงื่อนไขสี่ประการไม่ตรงกัน: เขาไม่ใช่ชาวนอร์เวย์ตามวรรค 10 และไม่ใช่ภาษาอังกฤษอย่างชัดเจน (2) ชาวสเปนเป็นเจ้าของสุนัข (3) และชาวญี่ปุ่นสูบบุหรี่ในรัฐสภา เหลือทางเลือกเดียวเท่านั้น - เจ้าของบ้านหลังที่สองเป็นชาวยูเครนที่ชอบดื่มชา

ดังนั้นคุณจึงสามารถค่อยๆ ก้าวไปข้างหน้าและกรอกข้อมูลลงในกล่องทั้งหมดในตารางในขณะที่คุณดำเนินการต่อไป

ด่าน 3

ขั้นตอนที่ 3 จำเป็นเพื่อค้นหาว่าสุนัขจิ้งจอกอาศัยอยู่บ้านไหน เธอสามารถถูกเก็บไว้ในบ้านหมายเลข 1 หรือหมายเลข 3 ตามวรรค 11 เนื่องจากในหมายเลข 2 พวกเขาสูบบุหรี่เชสเตอร์ฟิลด์ ด้วยข้อยกเว้นที่ตามมา เราสามารถเข้าใจได้ว่าสุนัขจิ้งจอกเป็นเจ้าของบ้านหมายเลขหนึ่ง

ด่าน 4

เพื่อที่จะค้นหาว่าเจ้าของหอยทากที่สูบบุหรี่ Old Gold อาศัยอยู่ที่ไหน คุณต้องทำขั้นตอนที่ IV ให้เสร็จสิ้น การสันนิษฐานว่าเขาดื่มกาแฟจะไม่ถูกต้องเนื่องจากไม่สอดคล้องกับข้อมูลที่ได้รับแล้ว วิธี, คนนี้ในบ้านหลังที่สาม

เมื่อเวลาผ่านไป เงื่อนไขของปัญหาเปลี่ยนไปเล็กน้อย แต่วิธีแก้ไขยังคงเหมือนเดิม จนถึงทุกวันนี้ ปัญหา 5 ข้อของไอน์สไตน์บีบให้ผู้คนจำนวนมากค้นหาคำตอบเดียวที่เหมาะกับข้อมูลทั้งหมดในปริศนา หากเป็นการยากที่จะหาวิธีแก้ปัญหาโดยไม่ต้องใช้กระดาษและปากกาอย่าท้อแท้เพราะปริศนานี้ถูกคิดค้นขึ้นเพื่อเพิ่มระดับการคิดเชิงตรรกะ

โรงเรียนยูริโอคูเนฟ

สวัสดีเพื่อน. ยูริ โอคูเนฟอยู่กับคุณ ผู้บุกเบิกโซเวียตถูกจัดการ วันนี้มาตั้งมาตรฐานให้สูงขึ้น มาไขปริศนาของไอน์สไตน์กันเถอะ

ปริศนาของไอน์สไตน์เป็นปัญหาเชิงตรรกะที่มีชื่อเสียงซึ่งมีสาเหตุมาจากอัลเบิร์ต ไอน์สไตน์

เชื่อกันว่าปริศนานี้สร้างขึ้นโดย Albert Einstein ในช่วงวัยเด็กของเขา มีความเห็นว่าไอน์สไตน์ใช้เพื่อทดสอบผู้ช่วยผู้สมัครในเรื่องความสามารถในการคิดเชิงตรรกะ

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

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

5 ผู้คนที่หลากหลายในบ้านที่แตกต่างกัน 5 หลัง สีที่แตกต่าง, สูบบุหรี่ 5 ยี่ห้อ, ปลูก 5 ประเภทต่างๆสัตว์ดื่มเครื่องดื่ม 5 ชนิด

คำถาม : ใครเลี้ยงปลา?

เคล็ดลับ:

  • ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก
  • ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
  • บ้านสีเขียวตั้งอยู่ทางด้านซ้ายของบ้านสีขาว
  • ชาวเดนมาร์กดื่มชา
  • คนที่สูบบุหรี่ Rothmans จะอยู่ถัดจากคนที่สูบบุหรี่
  • เลี้ยงแมว
  • คนที่อาศัยอยู่ในบ้านสีเหลืองสูบบุหรี่ดันฮิล
  • ชาวเยอรมันสูบบุหรี่มาร์ลโบโร
  • คนที่อยู่ศูนย์ก็ดื่มนม
  • เพื่อนบ้านของผู้สูบบุหรี่ Rothmans ดื่มน้ำ
  • ใครสูบพอลมอลล์เลี้ยงนก
  • ชาวสวีเดนเลี้ยงสุนัข
  • ชาวนอร์เวย์อาศัยอยู่ข้างบ้านสีน้ำเงิน
  • คนที่เลี้ยงม้าอาศัยอยู่ในบ้านสีฟ้า
  • ใครก็ตามที่สูบบุหรี่ Philip Morris จะดื่มเบียร์
  • พวกเขาดื่มกาแฟในบ้านสีเขียว

ลองทายซิว่าใครเลี้ยงปลา?

มีบ้านห้าหลังที่มีสีต่างกัน: แดง เขียว ขาว เหลือง และน้ำเงิน แต่ละแห่งมีผู้คนหลากหลายเชื้อชาติอาศัยอยู่: เยอรมัน สวีเดน เดนมาร์ก นอร์เวย์ และอังกฤษ พวกเขาแต่ละคนดื่มเครื่องดื่มประเภทเดียว สูบบุหรี่ยี่ห้อหนึ่ง และเป็นเจ้าของสัตว์เลี้ยงหนึ่งตัว แต่ละอันมีเอกลักษณ์เฉพาะภายในกลุ่ม (เครื่องดื่ม บุหรี่ยี่ห้อ สัตว์ไม่ซ้ำ!)

คำถาม: ใครเป็นคนเก็บปลาถ้า:

1. ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง

2. ชาวสวีเดนกำลังอุ้มสุนัข

3. ชาวเดนมาร์กดื่มชา

4. บ้านสีเขียวอยู่ทางด้านซ้ายของบ้านสีขาว และผู้เช่ากำลังดื่มกาแฟ

5. คนสูบบุหรี่อูฐถือนก

6. คนบ้านกลางดื่มนม

7. ผู้เช่าบ้านสีเหลืองสูบบุหรี่ดันฮิล

8. ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก

9. นักสูบบุหรี่ Marlboro อาศัยอยู่ข้างเจ้าของแมว

10. เจ้าของม้าอาศัยอยู่ข้างคนสูบบุหรี่ Dunhill”;

11. นักสูบบุหรี่ชาวเคนท์ดื่มเบียร์

12. บ้านของชาวนอร์เวย์ - ข้างบ้านสีน้ำเงิน

13. ชาวเยอรมันสูบบุหรี่ Rothmans

14. นักสูบบุหรี่ Marlboro อาศัยอยู่ข้างๆ คนที่ดื่มน้ำ

คำตอบ

แสดงคำตอบที่ถูกต้อง บ้านหลังแรก: นอร์เวย์ บ้านสีเหลือง ดันฮิล แมว น้ำ;
บ้านหลังที่สอง: Dane, บ้านสีน้ำเงิน, Marlboro, ม้า, ชา;
บ้านหลังที่สาม: ชาวอังกฤษ, บ้านสีแดง, อูฐ, นก, นม;
บ้านหลังที่สี่: เยอรมัน, กรีนเฮาส์, รอธแมนส์, ปลา, กาแฟ;
บ้านหลังที่ห้า: สวีเดน บ้านสีขาว, "เคนท์", สุนัข, เบียร์;
ชาวเยอรมันกำลังถือปลา

หลายคนคงเคยเจอปริศนาเกี่ยวกับบ้านหลากสีสันห้าหลัง ซึ่งแต่ละบ้านอาศัยอยู่กับสัตว์ เครื่องดื่ม และบุหรี่ที่เขาชื่นชอบ ปริศนานี้มีสาเหตุมาจากไอน์สไตน์แม้ว่าจะไม่มีหลักฐานโดยตรงเกี่ยวกับเรื่องนี้ก็ตาม ข้อความทั้งหมดของปริศนานี้อยู่ในวิกิพีเดีย

สามารถแก้ไขได้บนกระดาษหรือในใจ โดยขจัดตัวเลือกที่ไม่เหมาะสมออกไปอย่างสม่ำเสมอ อย่างไรก็ตาม สามารถแก้ไขได้ด้วยวิธีทางเทคนิคเพิ่มเติม วิธีหนึ่งคือการเขียนโปรแกรมเป็นอารัมภบท แต่ที่นี่ฉันต้องการแก้ไขโดยใช้กลไกที่ง่ายกว่า - นิพจน์ทั่วไป กล่าวคือ แปลเงื่อนไขของปริศนาเป็นภาษาของ regexps และลดปัญหาเพื่อค้นหาสตริงที่เหมาะสมในชุดสตริงที่ยอมรับทั้งหมด โดยชุดเส้นนี้แสดงไว้ในรูป

ความคิด

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

เพื่อความสะดวกฉันจะให้ข้อความปริศนาที่นี่:

  1. ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก
  2. ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
  3. บ้านสีเขียวอยู่ทางซ้ายของบ้านสีขาวข้างๆ
  4. ชายชาวเดนมาร์กดื่มชา
  5. คนที่สูบบุหรี่มาร์ลโบโรอาศัยอยู่ข้างๆ คนที่เลี้ยงแมว
  6. คนที่อาศัยอยู่ในบ้านสีเหลืองสูบบุหรี่ดันฮิล
  7. ชาวเยอรมันสูบบุหรี่ Rothmans
  8. คนที่อยู่ศูนย์ก็ดื่มนม
  9. เพื่อนบ้านที่สูบบุหรี่มาร์ลโบโรดื่มน้ำ
  10. ใครสูบพอลมอลล์เลี้ยงนก
  11. ชาวสวีเดนเลี้ยงสุนัข
  12. ชาวนอร์เวย์อาศัยอยู่ข้างบ้านสีฟ้า
  13. คนที่เลี้ยงม้าอาศัยอยู่ในบ้านสีฟ้า
  14. ใครก็ตามที่สูบบุหรี่วินฟิลด์จะดื่มเบียร์
  15. พวกเขาดื่มกาแฟในบ้านสีเขียว
คำถาม: ใครเลี้ยงปลา?

ในการแก้ปัญหา คุณต้องค้นหาลำดับของบ้าน สี สัญชาติ เครื่องดื่ม และบุหรี่ เพื่อให้เป็นไปตามกฎข้างต้น

แล้วเราจะมองหาอะไรและที่ไหน ขั้นแรกคุณต้องทำให้กฎเป็นระเบียบเรียบร้อย เรามีบ้านห้าหลัง สี สัญชาติ เครื่องดื่ม สัตว์ และบุหรี่ บ้านในเวอร์ชันที่มี "ผู้เช่า" ตามอำเภอใจอาจมีลักษณะเช่นนี้:

เบียร์แมวขาวเยอรมัน มัลโบโร

แต่นี่ยังไม่เพียงพอเนื่องจากเรามีกฎที่คำนึงถึงตำแหน่งสัมพัทธ์ของบ้านและวัตถุในบ้าน (เช่นกฎ: 1, 3, 5...) ลองพิจารณาเรื่องนี้ด้วยการวางบ้านห้าหลังเรียงกัน:

เยอรมัน แมวขาว เบียร์ มัลโบโร คนอังกฤษ สุนัขสีแดง น้ำ palmall ชาวนอร์เวย์ สีเขียว ปลา นม Winfield Dane นกสีฟ้า ชา ดันฮิล ชาวสวีเดน ม้า กาแฟสีเหลือง rothmans

บรรทัดด้านบนเป็นหนึ่งในตัวเลือกสำหรับการวางรายการ ใน ในกรณีนี้, ไม่ถูกต้อง. หากเรารวบรวมตัวเลือกที่เป็นไปได้ทั้งหมดและรวมไว้ในข้อความเดียว เราจะได้สิ่งต่อไปนี้:

ไม่มี ไม่มี ไม่มี

โดยที่ n - ชาติ, c - สี, สัตว์, d - ดื่ม, s - บุหรี่ และตัวอักษรแต่ละตัวสามารถมีความหมายได้ 1 ใน 5 ความหมาย

อัศจรรย์. สิ่งที่ต้องทำต่อไปคือการแปลกฎเป็นภาษานิพจน์ทั่วไป:

  1. ^ภาษานอร์เวย์ \w+
  2. \w+ ภาษาอังกฤษ สีแดง \w+
  3. \w+ เดนมาร์ก \w \w ชา \w+
และถ้าสตริงตรงกับกฎทั้งหมด เราก็พบวิธีแก้ปัญหาแล้ว! สิ่งที่เหลืออยู่คือการดูสัญชาติในบ้านที่มีปลา นี่คือแนวคิดหลักของการค้นหา: สร้างข้อความและอ่านด้วยนิพจน์ทั่วไป

แต่มีข่าวร้าย ข้อความที่จะค้นหาอาจมีขนาดใหญ่มาก แม่นยำยิ่งขึ้นจะเป็นขนาด (5!)^5 บรรทัด (~ 24 พันล้าน) สามารถตรวจสอบได้ไม่มากนัก แต่จะสร้างมันขึ้นมาได้ยากด้วยซ้ำ แต่ก็มีข่าวดีเช่นกัน แทนที่จะสร้างข้อความทั้งหมดนี้ เราสามารถใช้การดำเนินการตัดนิพจน์ทั่วไปได้ นั่นคือ ค้นหาบรรทัดทั่วไปทั้งหมดของนิพจน์ทั่วไป * (บรรทัดที่เป็นไปได้ทั้งหมด) โดยมีบรรทัดที่ให้นิพจน์ทั่วไปของกฎของปัญหา. เส้น (หรืออาจเป็นเส้น) ที่เหลืออยู่หลังทางแยกจะเป็นวิธีแก้ปัญหา

น่าเสียดายที่ฉันไม่มีเครื่องมือใดที่สามารถตัดกับนิพจน์ทั่วไปได้ ดังนั้น คุณจะต้องใช้เครื่องสถานะจำกัดที่รองรับ regexp ใดๆ โดยตรง

การนำไปปฏิบัติ

ฉันจะสร้างเครื่องที่มีสถานะจำกัดโดยใช้ไลบรารี openfst มันให้ทุกสิ่งที่ฉันต้องการในการสร้างออโตมาตะ รวมถึงวิธีที่สะดวกในการทำงานจากเชลล์ เพื่อให้การเขียนโปรแกรมมีความ "ผิดปกติ" มากขึ้น ฉันจะไม่เขียนโปรแกรมเลย :) จะไม่มีโค้ดยกเว้นสคริปต์ทุบตีธรรมดา

ขั้นตอนที่ 1 - การสร้างเครื่องจักรพื้นฐาน

มาสร้างไฟล์ข้อความพร้อมรายการวัตถุทั้งหมดกัน นี่จะเป็นตัวอักษรของเรา
นอร์วีเจียน อิงลิชแมน เดนมาร์ก เยอรมัน สวีเดน ขาว แดง ...

มาสร้างออโตมาตะพื้นฐานกัน ซึ่งแต่ละอันอนุญาตให้ใช้เพียงคำเดียวจากตัวอักษร
j=1 สำหรับฉันใน `cat alpha`; ทำ echo -e "0 1 $j\n1" | fstcompile --acceptor > $i ((j=$j+1)) เสร็จแล้ว

Fstcompile เป็นคำสั่งในแพ็คเกจ openfst ที่รวบรวมการแสดงข้อความของเครื่องให้เป็นไบนารี่ นี่เป็นสิ่งจำเป็นเพื่อที่จะใช้การดำเนินการต่างๆ กับเครื่องนี้

ดังนั้นเราจึงมีรายการไฟล์อัตโนมัติ พวกเขาเป็นเรื่องเล็กน้อยมาก ตัวอย่างเช่น เครื่องทำเบียร์จะมีลักษณะดังนี้:

มันเทียบเท่ากับสำนวนปกติ "เบียร์" จนถึงตอนนี้ทุกอย่างค่อนข้างง่าย นอกจากนี้เราจะต้องมีออโตมาตะพื้นฐานอีกสองตัว - ชุดว่างและสตริงใด ๆ เช่น เครื่องหมายดอกจัน *. เรากำลังสร้าง.

ขั้นตอนที่ 2 - สร้างเครื่องจักรเปล่าและเครื่องหมายดอกจัน

สตริงว่าง เครื่อง "ว่าง":
เสียงสะท้อน "0" | fstcompile --acceptor > ว่างเปล่า

สเตอร์อัตโนมัติ "สตาร์":
cp ดาวว่างสำหรับฉันใน 'cat alpha'; ทำ fstunion star $i star เสร็จแล้ว fstclosure star star
อย่างหลังทำได้โดยการรวมออโตมาต้าพื้นฐานและการปิดเข้าด้วยกัน ในนิพจน์ทั่วไป เป็นเพียง (englishman|dane|...|cat|dog|...)* เครื่องนี้จะมีลักษณะดังนี้:

ขั้นตอนที่ 3 - สร้างบ้าน

การอธิบายกฎจะสะดวกกว่าหากเราสร้างเครื่องจักรที่ซับซ้อนมากขึ้น เช่น สัญชาติ สี ฯลฯ ฉันใช้สคริปต์ง่ายๆ อีกครั้ง:

C="./concat.sh" $c star นอร์เวย์ > r1 $c star ชาวอังกฤษ red star > r2 $c star สัตว์เครื่องดื่มบุหรี่ nation star > r3 $c star dane สีสัตว์ tea star > r4 $c star malboro nation color cat star > r5_0 $c star cat drink บุหรี่สีเนชั่น สัตว์ดื่ม malboro star > r5_1 $c star สีเหลือง สัตว์เครื่องดื่ม dunhill star > r6 $c star สีเยอรมัน สัตว์เครื่องดื่ม rothmans > r7 $c บ้าน บ้าน nation color สัตว์นม บุหรี่ บ้าน บ้าน > r8 $c star malboro nation color สัตว์น้ำ star > r9_0 $c star น้ำบุหรี่ nation color สัตว์เครื่องดื่ม malboro star > r9_1 $c star นกดื่ม palmall star > r10 $c star สีสวีเดน dog star > r11 $c star สีนอร์เวย์ สัตว์ดื่มบุหรี่ Nation Blue Star > r12_0 $c ดาวสีฟ้า สัตว์ เครื่องดื่ม บุหรี่ ดาวนอร์เวย์ > r12_1 $c ดาว Blue Horse Star > r13 $c ดาว เบียร์ Winfield Star > r14 $c ดาว สัตว์สีเขียว Coffee Star > r15 fstunion r5_0 r5_1 > r5 fstunion r9_0 r9_1 > r9 อาการมึนงง r12_0 r12_1 > r12

กฎข้อ 5, 9 และ 12 เป็นผลรวม ฉันกำหนดแต่ละส่วนแยกกันจากนั้นจึงรวมเข้าด้วยกัน สคริปต์ concat.sh เพียงเชื่อมต่อออโตมาตะที่ส่งผ่านในอาร์กิวเมนต์:
cp ว่างเปล่า _c สำหรับฉันใน $*; ทำ fstconcat _c $i _c เสร็จแล้ว; แมว _c; rm_c;

ที่เอาต์พุตเราจะได้ออโตมาตะ r1,r2...,r15 ทุกอย่างพร้อมสำหรับขั้นตอนสุดท้าย

ขั้นตอนสุดท้ายคือทางแยก

./intersect.sh r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 > ผลลัพธ์

โดยที่ intersect.sh คือจุดตัดของออโตมาตะในอาร์กิวเมนต์
cp cl _c สำหรับฉันใน $*; ทำ fstintersect _c $i _c เสร็จแล้ว; แมว _c; rm_c;

เราน่าจะจบตรงนี้ - ดูเครื่องจักรแล้วดูว่าใครเก็บปลาไว้ แต่ตั้งแต่แรกเริ่มฉันไม่ได้คำนึงถึงสิ่งใดสิ่งหนึ่ง - ในกฎของฉันแต่ละคำสามารถทำซ้ำได้ ตัวอย่างเช่น คนสองคนสามารถดื่มเบียร์ชนิดเดียวกันและมีสัตว์ชนิดเดียวกันได้ ซึ่งไม่ถูกต้องตามเงื่อนไขของปัญหา ไม่สะดวกอย่างยิ่งที่จะสร้างตัวกรองดังกล่าวโดยใช้ภาษาปกติเพราะว่า เราไม่มีทาง "จดจำ" ได้ว่าคำดังกล่าวมีอยู่แล้ว แต่ก็ต้องจำกัดไว้บ้าง ดังนั้นเราจึงให้ผลลัพธ์สุดท้ายเป็นไปตามสคริปต์ต่อไปนี้

I="./intersect.sh" d="fstdifference" สำหรับฉันใน `cat alp`; ทำ fstdifference cl $i > ต่างกัน fstconcat ต่างกัน $i | fstconcat - แตกต่าง | fstrmepsilon - | fstกำหนด - | fstminimize -> $(i)_cont เสร็จแล้ว cp ให้ผลลัพธ์ออกมาสำหรับ i ใน `ls *_cont`; ทำเสียงสะท้อน $i fstintersect $i ออก | fstrmepsilon - | fstกำหนด - | fstminimize - เสร็จแล้ว rm ต่างกัน rm *_cont

สคริปต์นี้จะสร้างหุ่นยนต์พิเศษสำหรับแต่ละคำจากตัวอักษร และนำไปใช้กับผลลัพธ์ ดังนั้นเส้นทางที่มีคำซ้ำ ๆ จะถูกปัดทิ้งไป เป็นผลให้ผลลัพธ์สุดท้าย (และในความเป็นจริงคือเครื่อง "ออก") มีลักษณะดังนี้:

นี่เป็นภาพตัวเครื่องบางส่วน (ไม่พอดีทั้งหมด) ทุก ๆ ห้าคำจะนิยามบ้าน ดังที่เห็นได้จากภาพปลาพันธุ์เยอรมัน

บทสรุป

ชอบอันนี้ วิธีที่ผิดปกติการแก้ปัญหา แต่เหนือสิ่งอื่นใดมันแสดงให้เห็นว่าภาษาปกติเป็นสิ่งที่ทรงพลังมาก ยิ่งไปกว่านั้น ตามที่ Ullman กล่าว ปัญหาทางคณิตศาสตร์ใดๆ ก็ตามสามารถแสดงได้ด้วยการค้นหาสตริงในภาษาใดภาษาหนึ่ง. ซึ่งเป็นสิ่งที่แสดงออกมา

ปล และใช่ mse รู้มากเกี่ยวกับความวิปริตจริงๆ :)

นี่เป็นปริศนาเก่าแก่จริงๆ แม้ว่าบางทีอาจมีผู้อ่านบางคนที่เห็นมันเป็นครั้งแรก ตัวฉันเอง ไอน์สไตน์กล่าวว่ามีเพียง 2 เปอร์เซ็นต์เท่านั้นที่สามารถไขปริศนานี้ในใจได้ และอีก 20 เปอร์เซ็นต์ใช้กระดาษหรือเครื่องมืออื่นๆ ที่มีอยู่

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

  • ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก
  • ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
  • บ้านสีเขียวตั้งอยู่ทางด้านซ้ายของบ้านสีขาว
  • ชาวเดนมาร์กดื่มชา
  • คนที่สูบบุหรี่ Rothmans อาศัยอยู่ข้างๆ คนที่เลี้ยงแมว
  • คนที่อาศัยอยู่ในบ้านสีเหลืองสูบบุหรี่ดันฮิล
  • ชาวเยอรมันสูบบุหรี่มาร์ลโบโร
  • เพื่อนบ้านของผู้สูบบุหรี่ Rothmans ดื่มน้ำ
  • ใครสูบพอลมอลล์เลี้ยงนก
  • ชาวสวีเดนเลี้ยงสุนัข
  • ใครก็ตามที่สูบบุหรี่ Philip Morris จะดื่มเบียร์
  • พวกเขาดื่มกาแฟในบ้านสีเขียว

จำเป็นต้องกำหนด ใครเลี้ยงปลา?

มันไม่ง่ายเลยที่จะแก้ปัญหาในหัวของคุณ ดังนั้นนี่คือจานเล็กๆ นี้ที่จะช่วยคุณได้ คุณสามารถลองเติมมันลงไปได้

บ้านเลขที่ 1 2 3 4 5
สัญชาติ ชาวอังกฤษ เดนมาร์ก เยอรมัน นอร์เวย์ สวีเดน ชาวอังกฤษ เดนมาร์ก เยอรมัน นอร์เวย์ สวีเดน ชาวอังกฤษ เดนมาร์ก เยอรมัน นอร์เวย์ สวีเดน ชาวอังกฤษ เดนมาร์ก เยอรมัน นอร์เวย์ สวีเดน
สีบ้าน ขาว เหลือง เขียว แดง น้ำเงิน ขาว เหลือง เขียว แดง น้ำเงิน ขาว เหลือง เขียว แดง น้ำเงิน ขาว เหลือง เขียว แดง น้ำเงิน
บุหรี่ ดันฮิล มาร์ลโบโร พอลมอลล์ ฟิลิป มอร์ริส รอธแมนส์ ดันฮิล มาร์ลโบโร พอลมอลล์ ฟิลิป มอร์ริส รอธแมนส์ ดันฮิล มาร์ลโบโร พอลมอลล์ ฟิลิป มอร์ริส รอธแมนส์ ดันฮิล มาร์ลโบโร พอลมอลล์ ฟิลิป มอร์ริส รอธแมนส์
สัตว์ แมว ม้า นก ปลา สุนัข แมว ม้า นก ปลา สุนัข แมว ม้า นก ปลา สุนัข แมว ม้า นก ปลา สุนัข
ดื่ม น้ำ กาแฟ นม เบียร์ ชา น้ำ กาแฟ นม เบียร์ ชา น้ำ กาแฟ นม เบียร์ ชา น้ำ กาแฟ นม เบียร์ ชา น้ำ กาแฟ นม เบียร์ ชา

โซลูชั่นปริศนา

ตอบสนองอย่างรวดเร็ว.

เยอรมันเติบโตขึ้น ปลา

คำตอบโดยละเอียด. ขยายด้านล่างเพื่อดู

คำตอบโดยละเอียด

ดังนั้นเราจึงมี 25 ตำแหน่งที่ต้องกรอกข้อมูลต่อไปนี้:

  • สัญชาติ: นอร์เวย์, อังกฤษ, เดนมาร์ก, เยอรมัน, สวีเดน
  • สีบ้าน: แดง, เขียว, ขาว, เหลือง, น้ำเงิน
  • ยี่ห้อบุหรี่: ร็อธแมนส์, ดันฮิลล์, มาร์ลโบโรห์, เพลล์ เมลล์, ฟิลิป มอร์ริส
  • สัตว์: แมว นก สุนัข ม้า ปลา
  • ดื่ม: ชา นม น้ำ เบียร์ กาแฟ

โดยพื้นฐานแล้ว เราต้องกรอกตารางต่อไปนี้:

จากคำแนะนำ เราจะเติมเซลล์ตารางจำนวนหนึ่งทันที:

  • ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก
  • ชาวนอร์เวย์อาศัยอยู่ข้างบ้านสีน้ำเงิน
  • คนที่เลี้ยงม้าอาศัยอยู่ในบ้านสีฟ้า
  • คนที่อยู่ศูนย์ก็ดื่มนม

เนื่องจากชาวอังกฤษอาศัยอยู่ในบ้านสีแดง จึงหมายความว่าชาวนอร์เวย์ไม่สามารถอาศัยอยู่ในบ้านสีแดงได้ ในทำนองเดียวกัน ชาวนอร์เวย์ไม่สามารถใช้ชีวิตในชุดสีน้ำเงินได้ เขาไม่สามารถอยู่ในบ้านสีขาวได้เช่นกัน เนื่องจากบ้านสีเขียวอยู่ทางซ้ายของบ้านสีขาว และบ้านของชาวนอร์เวย์อยู่ทางซ้ายสุด เขาไม่สามารถอยู่ในสีเขียวได้เนื่องจากมีบ้านสีขาวทางด้านขวาของบ้านสีเขียวและบ้านสีน้ำเงินทางด้านขวาของชาวนอร์เวย์ ดังนั้นเขาจึงใช้ชีวิตในชุดสีเหลือง ดังนั้นเราจึงสรุปได้ว่าชาวนอร์เวย์สูบบุหรี่ Dunhill

นอกจากนี้ เนื่องจากบ้านสีเขียวตั้งอยู่ทางด้านซ้ายของบ้านสีขาว จึงหมายความว่ามีหมายเลข 3 หรือ 4 อย่างไรก็ตาม ในบ้านที่สาม กลาง พวกเขาดื่มนม และในบ้านสีเขียวพวกเขาดื่มกาแฟ - ซึ่ง หมายถึง เลขที่บ้านสีเขียว = 4 ซึ่งหมายความว่า เรามีทำเนียบขาวอยู่ที่เลขที่ 5 และสีแดงอยู่ที่เลขที่ 3 ชาวอังกฤษอาศัยอยู่ที่นี่ พวกเขาดื่มกาแฟในบ้านหลังที่ 4

นอกจากนี้เนื่องจากชาวเยอรมันสูบบุหรี่ Marlboro เขาจึงไม่สูบบุหรี่ Philip Morris จึงไม่ดื่มเบียร์ เขายังไม่ดื่มนมที่คนอังกฤษดื่ม เขาไม่ดื่มชาเช่นกัน - ชาวเดนมาร์กทำอย่างนั้น ซึ่งหมายความว่าชาวเยอรมันจะดื่มน้ำหรือกาแฟ ชาวนอร์เวย์ไม่สามารถดื่มเบียร์ได้ (เขาสูบบุหรี่ชนิดอื่น), นม (เขาไม่ใช่คนอังกฤษ), กาแฟ (เขาไม่ได้อาศัยอยู่ในบ้านสีเขียว), ชา (เขาไม่ใช่ชาวเดนมาร์ก) ดังนั้นชาวนอร์เวย์จึงดื่มน้ำ จากนั้นชาวเยอรมันก็ดื่มกาแฟ และอาศัยอยู่ในบ้านสีเขียว นอกจากนี้อย่าลืมว่าชาวเยอรมันสูบบุหรี่ Marlboro และเนื่องจากชาวนอร์เวย์ดื่มน้ำของเรา เพื่อนบ้านของเขา (บ้านหลังที่สอง) จึงสูบบุหรี่ Rothmans