ฉันเจอคำถามนี้เกี่ยวกับ SOและคิดว่ามันจะเป็นการท้าทายกอล์ฟที่ดี ดังนั้นนี่คือ:
ท้าทาย:
เขียนโปรแกรมที่อ่านลำดับของสตริงอักขระหนึ่งรายการต่อบรรทัดและส่งรายการของตำแหน่งทั้งหมดที่แต่ละสตริงมีอักขระเหมือนกัน
อินพุตและเอาต์พุต:
อินพุตประกอบด้วยอักขระ ASCII ที่ไม่ใช่แบบ whitespace ที่พิมพ์ได้หนึ่งบรรทัดหรือมากกว่าแต่ละบรรทัดตามด้วยบรรทัดใหม่ คุณอาจสมมติว่าบรรทัดอินพุตทั้งหมดมีความยาวเท่ากัน การขึ้นบรรทัดใหม่นั้นไม่ถือเป็นส่วนหนึ่งของอินพุต (เช่นคุณไม่ควรส่งออกเป็นอักขระที่ตรงกัน)
ตัวอย่างการป้อนข้อมูล (ถูกขโมยลงคอจากคำถาม SO):
abcdefg
avcddeg
acbdeeg
หลังจากอ่านอินพุตแล้วโปรแกรมของคุณควรพิมพ์ตำแหน่งของแต่ละคอลัมน์ที่ตรงกันและอักขระที่อยู่ในนั้น (โปรแกรมของคุณอาจ แต่ไม่จำเป็นต้องหยุดอ่านอินพุตเพิ่มเติมหากสามารถกำหนดได้ตั้งแต่ต้นว่าไม่มีคอลัมน์ที่ตรงกัน) อนุญาตรูปแบบเอาต์พุตที่เหมาะสมใด ๆ โดยเฉพาะอย่างยิ่งคุณสามารถใช้การจัดทำดัชนีตาม 0 หรือ 1 สำหรับตำแหน่ง
ตัวอย่างเอาต์พุตสำหรับอินพุตด้านบน (โดยใช้การทำดัชนีแบบอิง 0):
0: a
3: d
6: g
เกณฑ์การให้คะแนน:
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดจึงชนะ ในกรณีที่มีการเสมอกันอาจจะได้รับรางวัล chars tie-breaker chars สำหรับคุณสมบัติเพิ่มเติม:
- −½ ตัวอักษรสำหรับการจัดการสายอินพุตที่มีความยาวไม่เท่ากันอย่างถูกต้อง (เอาต์พุตไม่ควรมีตำแหน่งที่ผ่านจุดสิ้นสุดของบรรทัดอินพุตที่สั้นที่สุด)
- −¼ ตัวอักษรสำหรับการจัดการอินพุตอย่างถูกต้องประกอบด้วยอักขระ Unicode เข้ารหัส UTF-8 ตามอำเภอใจ
สำหรับแรงบันดาลใจคุณอาจพบคำตอบที่ไม่ดีนักที่คำถาม SO (ดูด้านบน)
ชี้แจง:
เพียงแค่เชื่อมตำแหน่งและตัวอักษรเข้าด้วยกันเช่นเดียวกับใน
0a3d6gจะไม่นับเป็น "เอาท์พุทที่สมเหตุสมผล" คุณควรจัดให้มีตัวคั่นบางตัว (เช่นช่องว่าง) ระหว่างแต่ละองค์ประกอบของเอาต์พุตเพื่อให้สามารถแยกวิเคราะห์ได้อย่างชัดเจนอินพุตจะถูกจัดเตรียมไว้ในอินพุตสตรีมมาตรฐาน (
stdin) หรือใช้กลไกป้อนข้อความแบบใดก็ตามที่เป็นธรรมชาติที่สุดสำหรับภาษาที่คุณเลือก (ถ้าภาษาที่คุณเลือกไม่ได้มีกลไกธรรมชาติสำหรับการป้อนข้อมูลไฟล์ทำสิ่งที่ดูเหมือนว่าใกล้เคียงที่สุดในจิตวิญญาณ.)อินพุตสิ้นสุดลงเมื่อไม่มีข้อมูลที่จะอ่านอีกต่อไป (เช่นเมื่อเงื่อนไขสิ้นสุดไฟล์เกิดขึ้น) หากคุณต้องการคุณอาจต้องการให้อินพุตถูกยกเลิกโดยบรรทัดว่าง (ซึ่งคุณไม่ควรนับรวมเป็นส่วนหนึ่งของอินพุต) ถ้าคุณทำเช่นนั้นโปรดพูดถึงมันในคำตอบของคุณเพื่อให้ผู้อื่นสามารถให้ข้อมูลที่ถูกต้องสำหรับการทดสอบ
บรรทัดอินพุตทุกบรรทัดรวมถึงบรรทัดสุดท้ายจะลงท้ายด้วยอักขระบรรทัดใหม่ คำตอบของคุณต้องไม่รายงาน newline นี้เป็นคอลัมน์ที่ตรงกัน (ไม่เป็นไรถ้าโซลูชันของคุณสามารถจัดการอินพุตได้โดยที่บรรทัดสุดท้ายไม่ได้ขึ้นบรรทัดใหม่ แต่ไม่จำเป็น)