Chuỗi từ được tải lại


9

Đây là một biến thể của Play chuỗi từXây dựng chuỗi từ dài .


Đầu vào là một danh sách không trống các từ duy nhất có ít nhất 2 ký tự được tạo thành từ các ký tự trong [az]. Bạn cần xuất độ dài của chuỗi dài nhất có thể, trong đó mỗi từ tiếp theo bắt đầu bằng chữ cái cuối cùng của từ trước đó. Bạn có thể bắt đầu với bất kỳ từ nào trong danh sách.

Một khuynh hướng khác là bạn được phép lặp lại bất kỳ từ nào trong danh sách. Tuy nhiên, bạn không thể lặp lại bất kỳ khối hai từ. Ví dụ: cat->tac->catđược phép, nhưng cat->tac->cat->tackhông, vì bạn đã lặp lại một khối hai từ ( cat->tac). Ngoài ra, bạn không thể sử dụng cùng một từ hai lần liên tiếp (ví dụ eye->eye).

Ví dụ:

  • cat dog tree egg => 3 (mèo-> cây-> trứng)
  • new men ten whim => 5 (mười-> mới-> ý thích-> đàn ông-> mới)
  • truth fret heart his => 5 (băn khoăn-> sự thật-> trái tim-> sự thật-> của anh ấy)
  • we were stew early yew easy => 9 (hầm-> was-> sớm-> yew-> were-> easy-> yew-> chúng tôi-> easy)
  • tac cat tac cot tac can => 6 (tac-> cat-> tac-> cot-> tac-> can)

(Hãy cho tôi biết nếu tôi mắc lỗi trong bất kỳ ví dụ nào trong số này hoặc nếu bạn đưa ra nhiều hơn.)

Câu trả lời:


3

Python 3 , 150 149 145 byte

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)

Hãy thử trực tuyến!

Ý tưởng cho việc xây dựng đường dẫn liên tục lâu hơn (hoặc trong trường hợp này những con đường mòn) cho đến khi không còn có thể được tạo ra được lấy cảm hứng trực tiếp bằng cách trả lời GRC của trên Chơi chuỗi từ câu hỏi.


"cat dog tred xy yz zx"trả lại 4. Đúng không? Có nên không 3?
Chas Brown

@ChasBrown xy yz zx xylà chuỗi dài nhất, vì vậy 4.
notjagan 16/07/17

1

Haskell , 131 141 byte

Về cơ bản là cách tiếp cận vũ phu .. Ý tưởng là tạo ra tất cả các mảnh domino có thể , thẩm thấu chúng, kiểm tra xem đó có phải là một kết hợp hợp lệ và tối đa hóa toàn bộ. Độ phức tạp thời gian là vô lý, trường hợp thử nghiệm thứ 4 đã mất ~ 4s trên PC của tôi và trên TIO dường như không hoạt động!

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]]

Hãy thử trực tuyến!

Ung dung

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) ]
  ]

Chỉnh sửa : Đã thay đổi từ Lambdabot thành Haskell trần nhưng đã lưu một vài byte bằng cách đánh gôn, sao cho nó vẫn nhỏ hơn 145byte :)


Cái cuối cùng giống như 19 trên máy tính của tôi trên TIO. btw, lý do bạn sử dụng Lambdabot là để tránh viết báo cáo nhập khẩu, phải không?
geokavel

Vâng tôi đồng ý. Nhưng tôi đã ngừng làm điều đó vì không ai khác đang làm điều này, không chắc chắn về nó. Tại sao?
ბიმო

Tôi đang cố gắng tìm ra người chiến thắng. Thông thường, bạn bao gồm các câu lệnh nhập theo số byte. Nhưng, nếu bạn tìm thấy môi trường không yêu cầu nhập khẩu thì cũng không sao.
geokavel

Ồ, dù sao thì tôi cũng không chấp nhận câu trả lời . Nếu bạn muốn, thì tôi sẽ thay đổi câu trả lời của tôi vì câu trả lời của @ notjagan tốt hơn câu trả lời của tôi.
ბიმო

1
Ý tôi là đây là môn đánh gôn, vì vậy bạn ở vị trí đầu tiên. Dù sao, câu trả lời của bạn phù hợp với tên của bạn. Nhưng tôi sẽ để nó mở theo yêu cầu của bạn.
geokavel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.