Meeesesessessesseesseessedessed upp teeexexextext 수정


38

이것은 월요일 미니 골프 # 6에서 영감을 받았습니다 : Meeesesessess upp teeexexextext

배경

ETH 프로덕션 은 평소 웹 페이지에 텍스트를 입력하는 데 어려움이 있습니다. 그가 숫자 나 문자를 사용할 때마다 텍스트는 meeesesessesesseesseessedessedseds입니다. 당신의 임무는 정상적인 행동이 달성되도록 그를 입력하는 것입니다.

변형

변환은 [0-9A-Za-z]영숫자가 아닌 문자로 구분 된 영숫자 ( ) 문자의 실행에 영향을줍니다 . 다음 예제에서 첫 번째 줄은 두 번째 줄로 변형됩니다 (다른 줄은 변형 분석을 나타냄).

An12num:
Annn1n12n12nn12nn12nun12nun12numn12num
A
 nn
   n1
     n12
        n12nn12n
                n12nun12nu
                          n12numn12num

특히, 첫 번째 런 이후의 모든 영숫자 문자 는 첫 번째 문자를 제외하고 지금까지 전체 런 으로 변환됩니다 . 또한 문자가 문자 (숫자와 반대) 인 경우 문자가 런의 두 배로 바뀝니다.

고맙게도 백 스페이스는 마지막 문자를 삭제하고 실행 시작을 재설정합니다.

태스크

이번에는 작업이 변환을 수행하지 않는 것입니다. 대신 입력 문자열이 제공되면 변환 된 경우 입력이되는 인코딩 된 텍스트를 반환해야합니다. \<char>단일 문자 로 계산되는 경우 출력은 가능한 짧아야 합니다.

텍스트는 다음과 같이 인코딩됩니다.

\                   -> \\
backspace character -> \b
linefeed            -> \n

STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.

테스트 사례

각 테스트 케이스는 두 개의 라인으로, 첫 번째는 입력이고 두 번째는 출력입니다.

Heeeeeelp me. It shouldn't be messed up.
Hee \blp\b me\b. It\b sh\bou\bld\bn't be\b me\bss\bed\b up\b.

alert("Hello, world!");
al\ber\bt("He\bll\bo, wo\brl\bd!");

1223234234523456
123456

6
잘 정의되어 있지만 왜 대답이 없는가?
Akangka

1
어떻게 든 나는 이것을 놓쳤다. 좋은 분사! 아마도 나는 나중에 답을 쓰려고 노력할 것입니다.
ETHproductions

이것은 내 친구가 UDP를 통해 텍스트를 보낸 시간을 생각 나게합니다
TRGWII

1
최종 테스트 사례에 수정이 필요하다고 생각합니다. 1런에서 첫 번째 문자 ( 매번)를 포함시킵니다.
Leif Willerts

솔직히 내가 뭘해야할지 모르겠어 ... 미안. 설명과 함께 입력과 출력을 추가하고 예제를 추가 할 수 있습니까? 죄송합니다.
Yassin Hajaj

답변:


10

CJam, 207

{_,1>{:E1<_0{:I2$,+E=:C+:R1>C'9>)*+:P,E,<{EP#{L0}{PRI)1}?}{PE#L{R8cP,E,-*+}?0}?}g}&}:U;LqS+'a+{_'[,_el^A,s+&,V={+}{s\V!:V{L{:BU_aL?B,,1>Bf{_2$<U_{_W=8>S8c+*+\@>j+}{?;}?}+{,}$0=}j}|\}?}%s'\8cN++'\"\bn"f+er-2<

온라인으로 사용해보십시오

설명:

이것을 쓰는 것을 거의 잊었다 : p

이 문제는 여러 단계로 해결됩니다.

  • 텍스트는 영숫자 문자 (단어라고 함)와 영숫자가 아닌 문자 (단어가 아닌 단어)로 구분됩니다.
  • 비 단어는 그대로 인쇄되고 단어는 고정됩니다
  • 단어를 재귀 적으로 수정하는 것 (메모와 함께) : 가능한 모든 방법으로 단어를 2 개의 덩어리로 나눕니다 (빈 두 번째 덩어리 포함), 첫 번째 덩어리를 unmess하려고 시도하십시오 (아래 참조). 필요한 경우 백 스페이스; 가장 짧은 하위 솔루션을 취하십시오
  • 청크를 없애는 것은 최소한의 영숫자 문자열 뒤에 일부 백 스페이스 (중간에 백 스페이스는 없음)가 뒤 따르면 엉망이되면 주어진 청크를 만드는 것을 의미합니다. 왼쪽에서 오른쪽으로 간단한 욕심 많은 알고리즘으로 이루어지며, unmessed 문자열과 혼란스러운 버전을 병렬로 빌드하고 각 단계에서 다음에 필요한 문자를 결정합니다. 일부 청크는 메시지를 표시 할 수 없습니다

1
성스러운 소 .. 이것은 CJam 프로그램의 하나입니다! 잘 했어.
ETHproductions
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.