단어 체인 새로 고침


9

이것은 단어 체인 재생단어 체인 구축 의 변형입니다 .


입력은 [az]의 문자로 이루어진 최소 2 자 이상의 고유 단어 목록입니다. 가능한 가장 긴 체인의 길이를 출력해야합니다. 여기서 각 후속 단어는 이전 단어의 마지막 문자로 시작합니다. 목록의 모든 단어로 시작할 수 있습니다.

또 다른 비틀기는 목록에서 하나의 단어를 반복 할 수 있다는 것입니다. 그러나 2 워드 블록은 반복 할 수 없습니다. 예를 들어, 2 워드 블록 ( ) 을 반복했기 때문에 cat->tac->cat허용되지만 허용 cat->tac->cat->tac되지 않습니다 cat->tac. 또한 같은 단어를 연속으로 두 번 사용할 수 없습니다 (예 :) eye->eye.

예 :

  • cat dog tree egg => 3 (고양이-> 나무-> 계란)
  • new men ten whim => 5 (10-> 신규-> whim-> 남성-> 신규)
  • truth fret heart his => 5 (fret-> truth-> heart-> truth-> 그의)
  • we were stew early yew easy => 9 개
  • tac cat tac cot tac can => 6 (tac-> cat-> tac-> cot-> tac-> can)

(이러한 예 중 하나라도 실수했는지 또는 더 많이 생각해 내면 알려주세요.)

답변:


3

파이썬 (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)

온라인으로 사용해보십시오!

더 이상 만들 수 없을 때까지 연속적으로 더 긴 경로 (또는이 경우 트레일)를 구성하는 아이디어 는 Play the word chain 질문 에 대한 grc의 답변 에서 직접 영감을 얻었습니다 .


"cat dog tred xy yz zx"을 반환합니다 4. 그 맞습니까? 그렇지 3않습니까?
Chas Brown

@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 대를 차지했습니다. btw, Lambdabot을 사용하는 이유는 import 문을 작성하지 않는 것입니다.
geokavel

네 저도 그렇습니다. 그러나 나는 아무도 이것을하지 않았기 때문에 그 일을 중단했습니다. 왜?
ბიმო

누가 이겼는지 알아 내려고 해요. 일반적으로 바이트 수로 import 문을 포함합니다. 그러나 수입이 필요없는 환경을 찾으면 괜찮습니다.
geokavel

어쨌든 나는 대답을 받아들이지 않을 것이다 . 원한다면 @notjagan의 대답이 내 것보다 낫기 때문에 대답을 변경하겠습니다.
ბიმო

1
이것이 코드 골프라는 것을 의미합니다. 그래서 당신은 처음에 있습니다. 어쨌든, 당신은 당신의 이름에 맞는 답입니다. 그러나 귀하의 요청에 따라 공개하겠습니다.
geokavel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.