mbomb007는 우리에게 자가 절단 프로그램 을 만들도록 요청했습니다 . 흥미로운 도전이지만 개인적으로 프로그램이 자해되도록 권장하지는 않습니다. 나는 모든 프로그램의 중심에 아름다운 나비가 튀어 나와 있다고 생각하고 싶습니다.
따라서 첫 번째 Code Golf 챌린지에서 나비를 변형시키기 위해 Stack Exchange에 도전했습니다. 프로그램은 자체 언어 코드를 입력 및 출력으로 수용하고 I am a caterpillar!
동일한 언어로 된 다른 프로그램의 코드를 따라야합니다 (출력 사이에 분배기를 놓을 수도 있고 그렇지 않을 수도 있지만 나비를 말하고 있기 때문에 예쁘게 계산됩니다!). 이 두 번째 프로그램은I am a beautiful butterfly!
변형 :이 프로그램은 스스로 수정해야하므로 입력으로 전달됩니다. 인쇄 문 I am a caterpillar!
다음에 소스 코드를 인쇄 하는 지루한 중첩 프로그램을 원하지 않습니다 . 코드 자체를 변형해야하므로 가장 지루한 대답은 인쇄하는 I am a caterpillar
다음 입력에서 문자열을 추출하여 코드에서 발생하는 것입니다. 물론 이것은 작성하기가 매우 까다로운 요구 사항이므로 "도전의 정신"으로 생각해야합니다. 공식적인 요구 사항은 "프로그램과 동일한 길이의 임의의 문자열이 프로그램에 제공되는 I am a butterfly
경우 두 번째 프로그램이 실행될 때 인쇄 할 확률이 5 % 미만이어야 합니다."로 설정됩니다.
개요:
- 자체 코드를 입력으로 제공 할 때
I am a caterpillar!
소스 코드 블록이 뒤에 나오는 구분 기호를 사용하여 인쇄하는 프로그램을 작성하십시오 . - 이 두 번째 소스 코드 블록은 동일한 언어로 컴파일 / 해석 될 때 인쇄됩니다.
I am a beautiful butterfly!
- 프로그램에 자체 소스 코드가 입력으로 제공되지 않고 자체 코드와 일치하지 않는 임의의 문자열이 제공된 경우 결과는 컴파일 / 해석에 실패하거나
I am a butterfly!
임의의 95 % 이상으로 인쇄되지 않아야합니다. 문자열 (정신 : 입력에서 자신의 소스 코드를 읽고 나비로 묶을 것으로 예상됩니다).- 나는 당신이 변태 아이디어의 정신을 잡고 자신의 코드를 수정하는 한, 이것을 증명하지 않고 편안하지만 입력을 사용하여 문제를 해결하기 위해 허점 게임을하려고한다면 그것을 증명하기 위해.
- 표준 허점 적용
나는 이것들이 그들의 아름다움에 의해 판단되기를 원하지만 그것은 결정적이지 않은 양적 접근 방식이므로 일반적인 "바이트 수"경로를 사용하여 판단 할 수 있습니다.
보너스 : -20 %-프로그램의 처음 3 자와 일치하지 않는 3 개의 문자열을 선택하십시오. 캐터필라 프로그램을 실행하지만 처음 3자가 지정된 문자로 변경되도록 입력을 수정하면 I am Batman!
대신 인쇄하십시오 . 항상 배트맨입니다. ( 동일한 무작위 문자열 규칙이 이것에 적용됩니다 ... 변태! )
사소한 예 (파이썬) :
"""
print "I am a beautiful butterfly!"
#print "I am Batman!"
"""
import sys
code = sys.stdin.read()
if code.startswith("YYZ"):
# swap the comments between the print statements
code = code.replace("#print", "_a").replace("print", "#print").replace("_a", "print")
code = [3:] # remove """ or XYZ
code = code.split('"""')[0]
print "I am a caterpillar!"
print code