정보 이론에서 "접두사 코드"는 다른 키의 접두사가없는 사전입니다. 다시 말해, 이는 어떤 문자열도 다른 문자열로 시작하지 않음을 의미합니다.
예를 들어 {"9", "55"}
접두사 코드이지만 {"5", "9", "55"}
그렇지 않습니다.
이것의 가장 큰 장점은 인코딩 된 텍스트를 구분 기호없이 기록 할 수 있으며 여전히 고유하게 해독 할 수 있다는 것입니다. 이것은 항상 최적의 접두사 코드를 생성하는 Huffman coding 과 같은 압축 알고리즘에 나타납니다 .
당신의 작업은 간단합니다 : 문자열 목록이 주어지면 유효한 접두사 코드인지 여부를 결정하십시오.
입력 :
당신의 결과는 진실 / 거짓 값 이 될 것입니다 : 유효한 접두사 코드 인 경우 Truthy, 그렇지 않은 경우 false.
실제 테스트 사례는 다음과 같습니다.
["Hello", "World"]
["Code", "Golf", "Is", "Cool"]
["1", "2", "3", "4", "5"]
["This", "test", "case", "is", "true"]
["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011",
"0110", "11001", "00110", "10011", "11000", "00111", "10010"]
다음은 몇 가지 잘못된 테스트 사례입니다.
["4", "42"]
["1", "2", "3", "34"]
["This", "test", "case", "is", "false", "t"]
["He", "said", "Hello"]
["0", "00", "00001"]
["Duplicate", "Duplicate", "Keys", "Keys"]
이것은 코드 골프이므로 표준 허점이 적용되고 바이트 단위의 최단 답변이 승리합니다.
001
독특하게 해독 할 수 있을까요? 00, 1
또는 일 수 있습니다 0, 11
.
0, 00, 1, 11
모두 키로 사용하는 경우 0은 접두사 00이고 1은 접두사 11이므로 접두사 코드가 아닙니다. 접두사 코드는 다른 키로 시작하는 키가 없는 곳 입니다. 예를 들어 키 0, 10, 11
가이 키라면 접두사 코드이며 고유하게 해독 할 수 있습니다. 001
유효한 메시지 아니지만, 0011
또는 0010
유일하게 해독 할 수 있습니다.