单词链重装


9

这是“ 播放单词链”和“ 构建长单词链”的一种变体。


输入内容是一个非空的唯一单词列表,该单词由[az]中的字符组成,至少2个字符长。您需要输出可能的最长链的长度,其中每个后续单词均以前一个单词的最后一个字母开头。您可以以列表中的任何单词开头。

另一个错误是允许您重复列表上的任何单个单词。但是,您不能重复任何两个单词的块。例如, cat->tac->cat允许,但cat->tac->cat->tac不允许,因为您重复了两个单词的块(cat->tac)。另外,您不能连续两次使用相同的单词(例如eye->eye)。

例子:

  • cat dog tree egg => 3(猫->树->蛋)
  • new men ten whim => 5(十个->新->异想天开->男人->新)
  • truth fret heart his => 5(fret-> truth-> heart-> truth-> his)
  • we were stew early yew easy => 9(炖->被->早->红豆->被->简单->红豆->我们->简单)
  • tac cat tac cot tac can => 6(tac-> cat-> tac-> cot-> tac-> can)

(让我知道我是否在任何这些示例中均犯了错误,或者您是否提出了更多示例。)

Answers:


3

Python 3中150个 149 145字节

def f(d):
 a=[[w]for w in d]
 while a:b=a[0];a=[f+[l,y]for*f,l in a for y in{*d}-{b for a,b in zip(f,f[1:])if a==l}if l[-1]==y[0]]
 return len(b)

在线尝试!

构造连续更长的路径(或在这种情况下为小径)直到无法再创建的想法直接受到了grc在“ 玩词链”问题上的回答的启发。


"cat dog tred xy yz zx"返回4。那是对的吗?不是3吗?
查斯·布朗

@ChasBrown xy yz zx xy是最长的链,所以
4。– notjagan

1

哈斯克尔131个 141字节

基本上是蛮力方法。这个想法是生成所有可能的多米诺骨牌片,对其进行置换,检查它是否是有效的组合,并使整个物品最大化。时间复杂度太高了,第4个测试用例在我的PC上已经花费了约4秒钟,在TIO上似乎不起作用!

import Data.List
p w=2+maximum[length$takeWhile(\(x,y)->x!!1==y!!0)$zip p$tail p|p<-permutations[[a,b]|(a,b)<-(,)<$>w<*>w,a/=b,last a==b!!0]]

在线尝试!

不打高尔夫球

p w = maximum
  [ 2 + length c | p <- permutations [ [a,b] | (a,b) <- (,)<$>w<*>w
                                             , a /= b
                                             , last a == head b
                                     ]
                 , c <- [ takeWhile (\(x,y) -> x!!1 == y!!0) $ zip p (tail p) ]
  ]

编辑:从Lambdabot更改为裸Haskell,但通过打高尔夫球节省了一些字节,因此它仍然小于145字节:)


在我的TIO计算机上,最后一个花费了19年代。顺便说一句,您使用Lambdabot的原因是避免编写导入语句,对吗?
geokavel

是的,我愿意。但是我停止这样做了,因为没有其他人正在这样做,对此不确定。为什么?
ბიმო

我想弄清楚谁赢了。通常,您在字节数中包括导入语句。但是,如果您发现不需要导入的环境,那就可以了。
geokavel

哦,我还是不会接受答案。如果您愿意,那么我将更改答案,因为@notjagan的答案比我的要好。
ბიმო

1
我的意思是,这是代码高尔夫,所以您位居第一。无论如何,您的回答符合您的名字。但是我将根据您的要求将其保持打开状态。
geokavel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.