两名参加联合国会议的大使想互相讲话,但不幸的是,每个大使只说一种语言,而且他们不是同一种语言。幸运的是,他们可以与多位翻译交流,他们每个人都能听和说几种语言。您的任务是确定最短的翻译链(因为您希望尽可能减少翻译中的损失),从而使两位大使能够相互交谈。
编码
输入:两种语言,即2个字母的小写字符串(每个大使的语言)和语言列表(每个可用翻译器一个列表)
您也可以输入整数而不是2个字母的代码。
输出:按索引或值排列的一系列翻译,是允许两个大使进行交流的最短翻译链中的任何一个。如果没有有效的翻译链,则行为未定义。(您可能会崩溃,输出任意值或表明错误)
一个有效的翻译链是第一个翻译说一种大使的语言,第二个和随后的翻译与前一个翻译共享至少一种语言,最后一个翻译说另一种大使的语言。
例子
使用基于零的索引:
es, en, [
[es, en]
] ==> [0]
en, en, [] ==> []
en, jp, [
[en, zh, ko, de],
[jp, ko]
] ==> [0, 1]
es, ru, [
[gu, en, py],
[po, py, ru],
[po, es]
] ==> [2, 1]
fr, gu, [
[it, fr, de, es, po, jp],
[en, ru, zh, ko],
[jp, th, en],
[th, gu]
] ==> [0, 2, 3]
fr, ru, [
[fr, en],
[en, ko, jp],
[en, ru]
] ==> [0, 2]
de, jp, [
[en, fr],
[ko, jp, zh],
[fr, po],
[es, ko, zh],
[de, en, th],
[en, es],
[de, fr]
] ==> [4, 5, 3, 1]
规则与假设
- 适用标准IO规则(使用任何方便的I / O格式)和禁止的漏洞。
- 您可能会假设说和理解语言是完全对称的,并且所有语言之间的所有可能翻译都是同样有效的。
- 没有“足够接近”的语言的概念。例如,在需要西班牙语的一端使用葡萄牙语是不够的。
- 如果有多个最短的翻译器链,那么任何一个都可以。
- 如果大使碰巧说相同的语言,则翻译人员列表应为空
- 哪位大使是第一位无关紧要;转换器列表可以是正向或反向。
- 大使为了这个挑战只讲一种语言
- 译者至少会说两种语言
- 2个字母的语言代码不需要与真实语言相对应
- 您可能会假设存在有效的翻译顺序
- 如果按值输出序列,请包括全套可用语言,而不仅仅是相关语言。
高尔夫快乐!
2
为什么对两个字符的字符串进行I / O限制,而整数不那么好吗?
—
乔纳森·艾伦,
的翻译人员列表列表可以采用csv格式
—
Quinn
en,fr,sp;en,gr;gr,fr
@Quinn标准IO规则说是。
—
Beefster,
可以在输出的开头和结尾包含大使吗?
—
肯尼迪
@NickKennedy我要对那个说不。
—
Beefster '19