Một tối ưu hóa phổ biến để tiết kiệm không gian trong các nhị phân là hợp nhất các chuỗi ký tự trong đó một chữ là hậu tố của một chuỗi khác. Ví dụ, một nhị phân với chuỗi ký tự
a: foobar
b: bar
c: barbaz
d: foobarbaz
e: baz
có thể chứa nhóm chuỗi ký tự sau ( #
đại diện cho \0
-terminator):
foobar#foobarbaz#
với các biểu tượng a
, b
, c
, và d
có các giá trị sau so với đầu của hồ bơi chuỗi:
a: 0
b: 3
c: 10
d: 7
e: 13
Trong tác vụ này, bạn phải tính kích thước tối thiểu của nhóm chuỗi cho một chuỗi các chuỗi đầu vào đã cho.
Đầu vào
Đầu vào là một chuỗi gồm tối đa 999 chuỗi, mỗi chuỗi bao gồm tối đa 80 ký tự ASCII (không bao gồm dòng mới) trong phạm vi từ 32 đến 127, bao gồm một ký tự dòng mới.
Đầu ra
Tìm chuỗi ngắn nhất sao cho mỗi chuỗi đầu vào (bao gồm cả dòng mới kết thúc) là chuỗi con của chuỗi đó. Đầu ra phải là độ dài của chuỗi ngắn nhất đó. Không xuất chuỗi, chỉ chiều dài của nó.
Chấm điểm
Thách thức này là mã golf, sơ hở tiêu chuẩn áp dụng. Giải pháp có độ dài ít nhất trong octet thắng.
Ví dụ
Đầu vào:
foobar bar barbaz foobarbaz baz
chuỗi ngắn nhất,
#
đại diện cho dòng mới:foobar#foobarbaz#
chiều dài: 17
Đầu vào:
foobar foobaz foobarbaz barbaz
chuỗi ngắn nhất,
#
đại diện cho dòng mới:foobar#foobaz#foobarbaz#
chiều dài: 24