이것은 기계 학습을 설명하기 위해 스스로를 수정하는 퀴인 또는 퀴인처럼 작동하는 프로그램을 고안해야하는 코드 골프 과제입니다.
배경
여기 에 설명 된 '판 골린 게임'이라는 기본 인공 지능 프로그램이 있습니다 . 기본 아이디어는 프로그램을 처음 실행할 때 다음과 같이 묻는 것입니다.
좋아, 뭔가 생각 해봐
천골 린인가요?
그런 다음 다음 중 하나에 회신 할 수 있습니다.
예
어떤 경우에는 다음과 같이 말합니다.
좋은. 너무 쉬워요.
또는 그렇지 않은 경우 :
오. 그럼 당신은 이깁니다-당신은 무엇을 생각하고 있었습니까?
당신이 말할 수있는 :
개
그것은 말할 것이다
개에 관한 질문을 해주세요. 개와 판 골린의 차이점을 알 수 있습니다
당신은 대답 할 수 있습니다
개미를 먹나요?
그런 다음 묻습니다.
개에 대한 답은 무엇입니까?
당신이 말할 것
아니
그리고 그것은 말할 것이다
감사
다음에 실행될 때 위의 질문을하고 그러한 질문의 이진 트리를 작성합니다.
도전
충분한 배경. 이 과제는 자체 수정 판 골린 프로그램을 작성하는 것입니다. 규칙은 다음과 같습니다.
(상술 한 바와 같이) 프로그램에 출력되어야한다
STDERR. 최종 응답은 항상 "좋은 것입니다. 너무 쉬웠습니다." 또는 "감사합니다". 그런 다음 현재 버전의 프로그램 또는에 질문을 통합 한 새 버전의 프로그램을 출력해야합니다STDOUT. 쓰기 지원하지 않는 언어로 작성된 무응답STDOUT및STDERR읽는 것은 나STDIN유효합니다.즉, UNIX에서 다음과 같이 프로그램을 호출 할 수 있습니다.
예:
$ mylanguage myprogram > myprogram.1
[dialog goes here]
$ mylanguage myprogram1 > myprogram.2
[dialog goes here]
- 프로그램은 지정된 프롬프트를 정확하게 사용해야합니다 (프롬프트를 줄이면 스킬이 표시되지 않기 때문에). 프롬프트는 다음과 같이 따옴표없이 % s로 대체됩니다.
명부:
"OK, please think of something"
"Is it %s?"
"Good. That was soooo easy."
"Oh. Well you win then -- What were you thinking of?"
"Please give me a question about %s, so I can tell the difference between %s and %s"
"What is the answer for %s?"
"Thanks"
예 / 아니오 대답을 기대하지 않을 때, 프로그램은 받아 들여야
y또는yes'예'에 대한 모든 경우에, 그리고n또는no'아니오'에 대한 어떤 경우이다. 부적합한 입력으로하는 일은 당신에게 달려 있습니다. 예를 들어 , '예'로 시작y하거나Y'예'로 대답하고 아니오로 대답하는 것을 결정할 수 있습니다 .제공된 것들과 질문의 이름은 ASCII 문자, 숫자, 공백, 하이픈, 물음표, 쉼표, 마침표, 콜론 및 세미콜론으로 구성되어 있다고 가정 할 수 있습니다
^[-?,.;: a-zA-Z]+$. 그 이상 (특히 선택한 언어의 인용 문자)에 대처할 수 있다면 잘 지내지 만 추가 점수는 얻지 못합니다.모든 파일을 읽거나 쓸 수 없습니다 귀하의 프로그램 (제외
STDIN,STDOUT및STDERR또는 네트워크에서); 특히 디스크에서 자체 코드를 읽거나 쓸 수 없습니다. 상태는 프로그램 코드 자체에 저장해야합니다.프로그램이 실행되고 정답을 정확하게 추측하면 정확히 quine으로 수행 해야합니다 . 즉
STDOUT, 변경하지 않고 정확히 자신의 코드에 기록해야합니다 .프로그램을 실행하고 잘못 대답을 추측 할 때, 그것은 해야한다 에 자신의 코드 내에서 제공되는 새로운 질문과 답을 인코딩 및 쓰기
STDOUT가 원래의 추측과 제공하는 새로운 객체를 구별 할 수 있도록에서, 자신의 코드에 이전에 주어진 모든 객체를 구별하는 것 외에도.여러 객체에 대해 학습 할 수 있도록 소프트웨어의 여러 순차적 실행에 대처할 수 있어야합니다. 여러 실행의 예는 여기 를 참조 하십시오 .
표준 허점 은 제외됩니다.