Skip to main content
3 of 8
edited body
user avatar
user avatar

Chaining Words Together

Given two words and a list as input, your program must (in as few characters as possible, of course) find the shortest way to "chain" the first word to the last using the ones in the list. Two words are "chained" if their first and last letters are the same, e.g. "Food" and "Door". Examples:

Input: joke, corn | tan, disc, need, eat
Output: joke, eat, tan, need, disc, corn

Note that delimiters between list items (in both input and output) are completely up to you, but they must be only one character long; I'm using commas and pipes with spaces for clarity.

Input: best, fry | easy, elf, mean, tame, yam, nice
Output: best, tame, elf, fry
NOT: best, tame, easy, yam, mean, nice, elf, fry

Input: rug, gunned | orange, purple, gains, pore, soup, emo, ending
Output: rug, gunned

Input: %3gioxl?, 6699-4 | !f!!&+, ?4é;, 78!, +6 Output: %3gioxl?, ?4é;, 78!, !f!!&+, +6, 6699-4 The "words" don't have to be real words; anything separated by your chosen delimiter will count.

Input: mouth, rich | frame, inspire, item, sold
Output when the first and last word are impossible to chain is undefined, so handle it however's shortest.

user39326