ワードチェーンリローデッド


9

これは、「単語の連鎖再生する」「単語の長い連鎖を構築する」の変形です。


入力は、[az]の文字で構成された2文字以上の一意の単語の空でないリストです。可能な限り長いチェーンの長さを出力する必要があります。後続の各単語は、前の単語の最後の文字で始まります。リストの任意の単語から始めることができます。

別のひねりは、あなたがリスト上の任意の単一の単語を繰り返すことを許可されていることです。ただし、2ワードブロックを繰り返すことはできません。たとえば、2ワードのブロック()を繰り返したため、 cat->tac->catは許可されていますが、許可されていcat->tac->cat->tacませんcat->tac。また、同じ単語を2回続けて使用することはできません(例:)eye->eye

例:

  • cat dog tree egg => 3(猫->木->卵)
  • new men ten whim => 5(ten-> new-> whim-> men-> new)
  • truth fret heart his => 5(フレット->真実->ハート->真実->彼)
  • we were stew early yew easy => 9(シチュー->あった->早い->イチ->いた->イージー->ユー->ウィー>>イージー)
  • tac cat tac cot tac can => 6(tac-> cat-> tac-> cot-> tac-> can)

(私がこれらの例のいずれかで間違いを犯したかどうか、またはあなたがもっと思いついた場合はお知らせください。)

回答:


3

Pythonの3150の 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)

オンラインでお試しください!

作成できなくなるまで連続して長いパス(またはこの場合はトレイル)を構築するというアイデアは、Play the word chain質問に対するgrcの回答に直接影響を受けました。


"cat dog tred xy yz zx"を返します4。あれは正しいですか?そうじゃないの3
Chas Brown

@ChasBrown xy yz zx xyは最長のチェーンなので、
4。– notjagan

1

Haskell131 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から変更はなく、それをゴルフで数バイトを保存し、それ未満まだだような145バイト:)


最後の1つは、TIO上の私のコンピューターで19秒ほどかかりました。ところで、Lambdabotを使用する理由は、インポート文の記述を避けるためですよね?
geokavel 2017

はい、そうです。しかし、誰もこれをしていないので、私はそれをやめました。どうして?
'2017

私は誰が勝ったかを理解しようとしています。通常、インポートステートメントはバイトカウントに含めます。ただし、インポートを必要としない環境が見つかった場合は、問題ありません。
geokavel 2017

ああ、とにかく答えを受け入れません。必要に応じて、@ notjaganの回答が私の回答よりも優れているので、私の回答を変更します。
'2017

1
これはコードゴルフなので、あなたは最初の場所にいます。とにかく、あなたの答えはあなたの名前に合います。しかし、私はあなたの要求でそれを開いたままにしておきます。
geokavel 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.