달의 어두운 면에서 온 이야기
시간 제한1초메모리 제한128 MB
사라진 텍스트 필터를 다시 구현한다. 각 줄에 순서가 정해진 네 가지 규칙을 적용하며, c 뒤가 아닌 ei는 ie로, 인접한 dd는 p로 바꾸고 EOF 줄에서 멈춘다.
문제
오래된 프로그램의 소스 코드가 사라졌습니다. 남은 것은 그 프로그램이 무슨 일을 하는지에 대한 증언뿐입니다. 이 프로그램을 똑같이 다시 구현해야 합니다.
프로그램은 영어 사전에 나올 법한 평범한 텍스트를 한 줄씩 읽어, 각 줄을 아래 규칙에 따라 변형한 뒤 출력합니다. 규칙은 반드시 아래 순서대로 각 줄에 적용합니다.
- 서로 붙어 있는 소문자
d두 개(dd)를p하나로 바꿉니다. (연속한d가 3개 이상 나오는 경우는 없습니다.) ei를 모두ie로 바꿉니다. 단, 바로 앞 글자가c이면(cei) 그대로 둡니다.pink를 모두floyd로 바꿉니다.- 소문자 영어 알파벳(
a–z)도 아니고 공백도 아닌 문자를 모두 지웁니다. 공백은 입력에 있던 그대로 보존합니다.
각 규칙은 앞 단계까지 처리된 문자열 위에서 판정하며, 4번(문자 제거)은 맨 마지막에 수행합니다. 따라서 규칙 1–3의 인접 여부는 원래 입력의 인접 여부로 판정됩니다. 예를 들어 d123d는 두 d가 붙어 있지 않으므로 p가 되지 않고, 숫자만 지워져 dd가 됩니다. 반면 123dd의 dd는 붙어 있으므로 p가 됩니다.
원래 이야기에 나오던 vv를 m으로 바꾸는 동작은 프린터 오류였을 뿐, 프로그램의 기능이 아닙니다. 적용하지 마세요.
입력은 EOF라고만 적힌 줄을 만나면 종료됩니다. 그 줄과 그 뒤의 내용은 처리하지도, 출력하지도 않습니다.
입력
여러 줄의 텍스트가 주어집니다. 각 줄의 길이는 80글자 미만입니다. 입력은 EOF만 적힌 줄로 끝납니다.
출력
EOF 줄을 만나기 전까지의 각 줄에 대해, 위 규칙을 순서대로 적용한 결과를 한 줄씩 출력합니다. 공백은 입력에 있던 그대로 유지합니다.