실행 길이 인코딩이 무엇인지 모두 알고 있습니다. 이미 많은 코드 골프 과제의 주제였습니다. 특정 변형을 살펴 보겠습니다.
예
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
괄호 안의 숫자는 이전 기호가 발생한 횟수를 지정합니다. 이 예에서는 5 자 이상의 문자 만 인코딩되었습니다. 인코딩 횟수가 4 이하이면 문자 수가 향상되지 않기 때문입니다.
도전
이러한 변형 된 런 길이 인코딩을 구현하는 함수 / 프로그램을 작성하고 두 심볼의 런도 인코딩 할 수 있습니다. 두 기호의 런도 괄호로 묶어야합니다. 그룹도 괄호로 묶습니다. 프로그램은 문자열을 입력으로 승인하고 수정 된 문자열을 수정하여 문자열을 단축시켜야합니다.
예
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
노트
111
인코딩 (1(3)
)이 짧지 않기 때문에 인코딩 되지 않았습니다.- 문자열
444111
은 3 번 발생하므로 인코딩됩니다. 676767
((67)(4))
이전보다 길었으므로 인코딩되지 않았습니다 .222222277777222222277777
로 인코딩되지 않았습니다((222222277777)(2))
. 왜? 때문에222222277777
그 자체가 감소 될 수있다2(7)7(5)
.123123123123
프로그램이 세 개가 아닌 두 개의 기호 실행을 처리해야하기 때문에 인코딩되지 않았습니다.
이것은 코드 골프가장 짧은 코드가 승리합니다. 타이 브레이커는 조기 제출입니다.
내가 놓친 것이 있거나 확실하지 않은 경우 의견에 저에게 알려주십시오.
441444144414
-> 처리해야 ((4414)(3))
할까요?
나는 그것을 고쳤다.
—
ericw31415
@KennyLau 아니오, 당신은하지 않습니다.
—
ericw31415
4414
기술적으로 4의 시리즈입니다. 내 말은 단지 나쁘다.
?
—
CalculatorFeline
111111111
로 인코딩 할 수 있습니다 (1)(9)
67
초가 있습니다.