자기 자신에 대해 결코 만족하지 못한 스톤 커터에 대한 오래된 이야기가 있습니다. 그는 태양이 될 수 있기를 바랐으므로 그렇게되었습니다. 그는 구름에 막혀 구름이되고 싶었다. 바람이 불 때 그는 바람이되기를 바랐다. 산에 들러 그는 산이되고 싶어서 하나가되었습니다. 그러나 얼마 지나지 않아 그는 스톤 커터에 의해 해킹 당하고 스톤 커터가되기를 원했습니다.
마찬가지로, 당신의 임무는 그 언어에 만족하지 않는 프로그램을 작성하는 것입니다. 프로그램은 다른 언어로 바꾸려면 정규식 대체 세트를 출력해야합니다. 등등.
규칙
- 선택한 언어로 프로그램을 작성하십시오.
- 프로그램은 최소한 두 개의 세그먼트를 출력해야합니다. 세그먼트는 세미콜론으로 구분 된 텍스트 묶음입니다. 그러나 세미콜론이 정규식에 포함되어 있으면 세미콜론이 잘못되어 구문이 잘못되어 세그먼트가 분리되지 않습니다. 예를 참조하십시오.
- 첫 번째 세그먼트는 찾기 정규식 패턴이고 두 번째 세그먼트는 대체 패턴입니다. 세 번째는 또 다른 "찾기"패턴이고, 네 번째는 "바꾸기"패턴입니다.
- 정규식 패턴을 프로그램에 적용하십시오. 첫 번째 세그먼트의 패턴을 두 번째 세그먼트의 패턴으로 바꾸십시오. 세 번째 패턴을 네 번째 패턴으로 바꿉니다.
- 결과는 다른 언어로 된 프로그램이어야하며, 그 자체는 규칙 2-4를 따릅니다.
- 사용되는 언어는 무한 반복주기를 형성해야합니다.
- 예를 들어, Python-> PHP-> C ++-> Python-> PHP-> C ++-> Python-> ...
- 당신의 점수는주기의 기간입니다. 초기 코드 길이가 가장 짧아 타이가 끊어집니다.
- 위의 예에서 점수는 3입니다.
- 주기가 반복 될 때마다 언어를 두 번 이상 사용할 수 없습니다.
- 규칙 5 및 7의 경우 호환 가능한 언어 (C 및 C ++)와 동일한 언어의 다른 버전 (Python 2 및 Python 3)은 동일한 것으로 간주됩니다.
- 프로그램 자체는 반복 할 필요가 없습니다.
- 위의 예에서, 제 1 및 제 4 프로그램은 상이 할 수있다.
- 모든 버전의 정규식이 허용되지만 모든 프로그램에 동일하게 사용해야합니다.
- 각 프로그램의 총 출력은 100자를 초과 할 수 없습니다.
- 각 출력에는 실제로 프로그램을 변경하기위한 지시 사항이 포함되어야합니다. 즉, 사이클에서 두 개의 연속 프로그램이 동일하지 않을 수 있습니다.
예
파이썬-> 루비-> 파이썬-> ...
print "uts;Z;rint;uts;Z(?=;Z);rint"
출력 :
uts;Z;rint;uts;Z(?=;Z);rint
세그먼트는 다음과 같습니다.
FIND ; REPLACE
uts ; Z
rint ; uts
Z(?=;Z ; rint (breaking the first segment in two would result in invalid syntax)
정규식 교체를 순서대로 적용하면 다음과 같은 이점이 있습니다.
print "Z;Z;rint;Z;Z(?=;Z);rint" # replace each "uts" with "Z"
puts "Z;Z;uts;Z;Z(?=;Z);uts" # replace each "rint" with "uts"
puts "rint;Z;uts;rint;Z(?=;Z);uts" # replace each "Z" followed by ";Z" with "rint"
마지막 줄을 실행하면 이것을 파이썬 코드로 되 돌리는 지침이 제공됩니다.
\;
.)