ไขปริศนาของไอน์สไตน์ ปริศนาของไอน์สไตน์: ใครเลี้ยงปลา? เดาสิ! ข้อความต้นฉบับของปริศนาของไอน์สไตน์
เพื่อให้เข้าใจความเป็นจริงโดยรอบได้ดีขึ้น บุคคลจะต้องพัฒนาความคิดซึ่งขึ้นอยู่กับการทำงานและความสามารถของเขาในการทำงานกับแนวคิดเชิงนามธรรมต่างๆ โดยตรง การคิดขึ้นอยู่กับตรรกะและวัฒนธรรมของมนุษย์ และสาขาวิชาวิทยาศาสตร์จำนวนมากก็ศึกษากระบวนการคิดของมนุษย์ ปัญหาของไอน์สไตน์เกี่ยวกับบ้าน 5 หลังเป็นที่รู้จักกันอย่างแพร่หลายในศตวรรษที่ 20 และตั้งแต่นั้นมาก็ยังไม่สูญเสียความเกี่ยวข้องกับผู้ที่ต้องการปรับปรุงระดับการคิดเชิงตรรกะของพวกเขา
สภาพปริศนา
มีเวอร์ชันหนึ่งที่ผู้เขียนปัญหาเชิงตรรกะนี้คือ Albert Einstein ซึ่งเป็นหนึ่งในผู้ก่อตั้งฟิสิกส์ทฤษฎีสมัยใหม่ บางทีไอน์สไตน์อาจใช้มันเพื่อประเมินความสามารถของผู้สมัครชิงตำแหน่งผู้ช่วยของเขา พวกเขายังอ้างว่าปริศนานี้สามารถประดิษฐ์ขึ้นโดยนักคณิตศาสตร์และนักเขียนชาวอังกฤษชื่อดัง Lewis Carroll อย่างไรก็ตามการประพันธ์ยังไม่ได้รับการยืนยัน เป็นที่น่าสนใจว่าปัญหาประกอบด้วยบุหรี่ที่ไม่ได้ผลิตในช่วงชีวิตของแอล. แคร์โรลล์และในช่วงวัยเด็กของเอ. ไอน์สไตน์
นักฟิสิกส์ผู้ยิ่งใหญ่รายนี้ให้เครดิตกับคำกล่าวที่ว่า มีเพียง 2% ของคนเท่านั้นที่สามารถควบคุมรูปแบบทางจิตโดยอาศัยสัญญาณทั้ง 5 ประการ และในเรื่องนี้ ส่วนใหญ่ไม่สามารถหาคำตอบได้หากไม่มีบันทึกที่ต้องการและการสร้างตารางเสริม แต่ยังไม่มีการยืนยันว่าเป็นไอน์สไตน์ที่พูดเรื่องนี้
ปริศนาที่ซับซ้อนนี้เกี่ยวข้องกับการแก้มันในหัวของคุณโดยไม่ต้องใช้ เงินทุนเพิ่มเติม. มิฉะนั้นงานจะสูญเสียความคิดริเริ่มทั้งหมด คำตอบสามารถพบได้โดยการจัดทำตารางและวิธีการกำจัดข้อความที่ไม่ถูกต้องทั้งหมดตามลำดับซึ่งไม่ใช่การยืนยัน คุณสมบัติที่เป็นเอกลักษณ์การคิดอย่างมีตรรกะ.
ข้อความปริศนาเกี่ยวกับบ้าน
ข้อความของปริศนานี้เผยแพร่ครั้งแรกเมื่อวันที่ 17 ธันวาคม พ.ศ. 2505 ในนิตยสาร American Life ในฤดูใบไม้ผลิ ปีหน้าได้มีการเผยแพร่คำตอบที่ถูกต้องและรายชื่อผู้อ่านที่สามารถแก้ไขปัญหานี้ได้
ปริศนามีหลายรูปแบบที่รู้จักกันแต่ สภาพเดิมกำลังติดตาม:
- มีบ้าน 5 หลังบนถนน
- ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
- เจ้าของสุนัขเป็นชาวสเปน
- ผู้ที่อาศัยอยู่ในบ้านสีเขียวดื่มกาแฟ
- ชาวยูเครนเป็นคนรักชา
- บ้านสีเขียวตั้งอยู่ทางด้านขวาของบ้านงาช้าง
- ชอบบุหรี่ Old Gold มีหอยทาก
- ในบ้านสีเหลืองพวกเขาสูบบุหรี่ยี่ห้อ Cools
- ตรงกลางพวกเขาดื่มนม
- ชาวนอร์เวย์อาศัยอยู่ในบ้านหมายเลข 1
- คนสูบบุหรี่ที่เชสเตอร์ฟิลด์เป็นเพื่อนบ้านของคนเลี้ยงสุนัขจิ้งจอก
- บุหรี่ Cools จะถูกสูบในบ้านข้างบ้านที่ม้าอาศัยอยู่
- การสูบบุหรี่ของลัคกี้สไตรค์ดื่มน้ำส้ม
- คนญี่ปุ่นชอบบุหรี่รัฐสภา
- ชาวนอร์เวย์เป็นเพื่อนบ้านของบ้านสีน้ำเงิน
คำถามที่ต้องตอบเมื่อเสร็จสิ้น:
- ชาวบ้านคนไหนดื่มน้ำ?
- ใครเป็นเจ้าของม้าลาย?
คำอธิบาย: บ้านทั้ง 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 และลดปัญหาเพื่อค้นหาสตริงที่เหมาะสมในชุดสตริงที่ยอมรับทั้งหมด โดยชุดเส้นนี้แสดงไว้ในรูป
ความคิด
แนวคิดนี้ไม่ใช่ของฉัน ฉันได้ยินมันมาจากวิดีโอบรรยายรายการหนึ่ง อย่างไรก็ตาม มันถูกแก้ไขที่นั่นอย่างซับซ้อนเกินไป ฉันพยายามแก้ไขให้ง่ายและตรงไปตรงมามากขึ้นเพื่อความสะดวกฉันจะให้ข้อความปริศนาที่นี่:
- ชาวนอร์เวย์อาศัยอยู่ในบ้านหลังแรก
- ชาวอังกฤษอาศัยอยู่ในบ้านสีแดง
- บ้านสีเขียวอยู่ทางซ้ายของบ้านสีขาวข้างๆ
- ชายชาวเดนมาร์กดื่มชา
- คนที่สูบบุหรี่มาร์ลโบโรอาศัยอยู่ข้างๆ คนที่เลี้ยงแมว
- คนที่อาศัยอยู่ในบ้านสีเหลืองสูบบุหรี่ดันฮิล
- ชาวเยอรมันสูบบุหรี่ Rothmans
- คนที่อยู่ศูนย์ก็ดื่มนม
- เพื่อนบ้านที่สูบบุหรี่มาร์ลโบโรดื่มน้ำ
- ใครสูบพอลมอลล์เลี้ยงนก
- ชาวสวีเดนเลี้ยงสุนัข
- ชาวนอร์เวย์อาศัยอยู่ข้างบ้านสีฟ้า
- คนที่เลี้ยงม้าอาศัยอยู่ในบ้านสีฟ้า
- ใครก็ตามที่สูบบุหรี่วินฟิลด์จะดื่มเบียร์
- พวกเขาดื่มกาแฟในบ้านสีเขียว
ในการแก้ปัญหา คุณต้องค้นหาลำดับของบ้าน สี สัญชาติ เครื่องดื่ม และบุหรี่ เพื่อให้เป็นไปตามกฎข้างต้น
แล้วเราจะมองหาอะไรและที่ไหน ขั้นแรกคุณต้องทำให้กฎเป็นระเบียบเรียบร้อย เรามีบ้านห้าหลัง สี สัญชาติ เครื่องดื่ม สัตว์ และบุหรี่ บ้านในเวอร์ชันที่มี "ผู้เช่า" ตามอำเภอใจอาจมีลักษณะเช่นนี้:
เบียร์แมวขาวเยอรมัน มัลโบโร
แต่นี่ยังไม่เพียงพอเนื่องจากเรามีกฎที่คำนึงถึงตำแหน่งสัมพัทธ์ของบ้านและวัตถุในบ้าน (เช่นกฎ: 1, 3, 5...) ลองพิจารณาเรื่องนี้ด้วยการวางบ้านห้าหลังเรียงกัน:
เยอรมัน แมวขาว เบียร์ มัลโบโร คนอังกฤษ สุนัขสีแดง น้ำ palmall ชาวนอร์เวย์ สีเขียว ปลา นม Winfield Dane นกสีฟ้า ชา ดันฮิล ชาวสวีเดน ม้า กาแฟสีเหลือง rothmans
บรรทัดด้านบนเป็นหนึ่งในตัวเลือกสำหรับการวางรายการ ใน ในกรณีนี้, ไม่ถูกต้อง. หากเรารวบรวมตัวเลือกที่เป็นไปได้ทั้งหมดและรวมไว้ในข้อความเดียว เราจะได้สิ่งต่อไปนี้:
ไม่มี ไม่มี ไม่มี
โดยที่ n - ชาติ, c - สี, สัตว์, d - ดื่ม, s - บุหรี่ และตัวอักษรแต่ละตัวสามารถมีความหมายได้ 1 ใน 5 ความหมาย
อัศจรรย์. สิ่งที่ต้องทำต่อไปคือการแปลกฎเป็นภาษานิพจน์ทั่วไป:
- ^ภาษานอร์เวย์ \w+
- \w+ ภาษาอังกฤษ สีแดง \w+
- \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