กระเป๋าหิ้วคำคือการรวมกันของทั้งสองคำที่ใช้เวลาส่วนหนึ่งของแต่ละคำและทำให้พวกเขากลายเป็นคำใหม่เดียว ยกตัวอย่างเช่นสิงโต + เสือ => Liger
ลองเขียนโปรแกรมเพื่อสร้าง portmanteaus จากคำที่ใส่เข้าไป คอมพิวเตอร์ไม่ใช่ภาษาอังกฤษที่ดีที่สุดดังนั้นเราจะต้องสร้างกฎบางอย่างเพื่อให้แน่ใจว่าพอร์ทอุปกรณ์ส่งออกมีความพึงพอใจต่อตาและหู
(ตัวอย่างที่นี่จะแสดงด้วยตัวคั่นระหว่างคำนำหน้าและคำต่อท้ายเพื่อความชัดเจน: li|ger
. อย่างไรก็ตามผลลัพธ์ที่แท้จริงของโปรแกรมไม่ควรมีตัวคั่น: liger
.)
- แต่ละกระเป๋าหิ้วจะประกอบด้วยคำนำหน้าว่างของคำแรกตัดแบ่งไปว่างต่อท้ายของคำที่สอง: ใช่
li|ger
,|iger
ไม่มี - หากคำนำหน้าลงท้ายด้วยสระคำต่อท้ายจะต้องเริ่มต้นด้วยพยัญชนะและในทางกลับกัน: ใช่
lio|ger
หรือl|er
ไม่lio|iger
หรือl|ger
หรือคุณอาจตัดสินใจว่าจะนับy
เป็นสระหรือพยัญชนะ วิธีการแก้ปัญหาของคุณจะต้องเลือกหนึ่งตัวเลือกและติดกับมันอย่างไรก็ตาม - คำที่ได้จะต้องไม่มีคำเดิมอย่างใดอย่างหนึ่ง: ใช่
lio|ger
, ไม่มีหรือlion|iger
li|tiger
- กฎข้อนี้ถือแม้ว่าส่วนหนึ่งในคำถามที่จะเกิดขึ้นจากชิ้นส่วนของทั้งสองคำ: ด้วยการป้อนข้อมูลของ
two
+words
การส่งออกยังคงเป็นที่ผิดกฎหมายเพราะมีอักขระย่อยtw|ords
words
(เอาต์พุตที่ถูกต้องเท่านั้นสำหรับคู่นี้t|ords
คือ)
- กฎข้อนี้ถือแม้ว่าส่วนหนึ่งในคำถามที่จะเกิดขึ้นจากชิ้นส่วนของทั้งสองคำ: ด้วยการป้อนข้อมูลของ
โปรแกรมหรือฟังก์ชั่นของคุณจะต้องใช้สองคำและเอาท์พุท / ส่งคืนรายการของ portmanteaus ที่น่าพอใจทั้งหมดที่สามารถเกิดขึ้นจากคำเหล่านั้นในลำดับที่
รายละเอียด
- ใช้วิธีการอินพุตและเอาต์พุตมาตรฐาน ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- คำจะประกอบด้วยตัวอักษรตัวพิมพ์เล็กเท่านั้น (หรือหากคุณต้องการเพียงตัวอักษรตัวพิมพ์ใหญ่เท่านั้น)
- คุณอาจใช้คำสองคำที่ป้อนเข้าเป็นรายการ, tuple, สองอินพุตแยกกัน, สตริงเดียวที่มีตัวคั่นที่ไม่ใช่ตัวอักษร, ฯลฯ
- รูปแบบผลลัพธ์มีความยืดหยุ่นในทำนองเดียวกัน หากคุณส่งคืนหรือส่งออกสตริงมันควรจะถูกคั่นด้วยเพื่อให้ชัดเจนโดยที่หนึ่งคำในพอร์ตแมนเทสิ้นสุดและคำถัดไปจะเริ่มขึ้น
- ไม่ควรมีตัวคั่นภายในคำในกระเป๋าหิ้ว
- ไม่เป็นไรหากรายการผลลัพธ์ของคุณมีผลลัพธ์ซ้ำซ้อน มันก็โอเคที่จะลบรายการที่ซ้ำกัน
กรณีทดสอบ
> lion, tiger
< liger, ler, liger, lir, lioger, lior
> tiger, lion
< tion, ton, tin, tigion, tigon, tigen
> spoon, fork
< sork, spork, spork, spok, spoork, spook
> smoke, fog
< sog, smog, smog, smokog
> gallop, triumph
< giumph, gumph, gariumph, gamph, gaph, gah, galiumph, galumph, galliumph, gallumph, galloriumph, gallomph, galloh
> breakfast, lunch
< bunch, brunch, brench, brech, breh, breanch, breach, breah, breakunch, breakfunch, breakfanch, breakfach, breakfah, breakfasunch
> two, words
< tords
> harry, ginny (if y is treated as a consonant)
< hinny, hanny, hany, hay, harinny, harrinny
> harry, ginny (if y is treated as a vowel)
> hinny, hy, hanny, hany, harinny, hary, harrinny
โซลูชันอ้างอิง
นี่คือโซลูชันอ้างอิงใน Pip (ถือว่าy
เป็นพยัญชนะ)
นี่คือcode-golf : คำตอบที่สั้นที่สุดในแต่ละภาษาชนะ!