단어 체인 새로 고침


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.