행맨

행맨

어려움

지침

함수형 반응형 프로그래밍으로 행맨 게임의 로직을 구현해요.

행맨은 간단한 단어 추측 게임이에요.

함수형 반응형 프로그래밍은 상호작용하는 프로그램을 작성하는 방법이에요. 이 방식은 평소의 관점과는 달라요. "버튼을 누르면 카운터를 증가시킨다"라고 쓰는 대신, "카운터의 값은 버튼을 누른 횟수의 합이다"라고 작성해요.

함수형 반응형 프로그래밍으로 행맨의 기본 로직을 구현해요. 이를 위해서는 FRP 라이브러리를 설치해야 하는데, 설치 방법은 이 연습 문제의 언어/트랙별 파일에 설명되어 있어요.

연습 문제에 대한 새로운 접근 방식

FRP 라이브러리에 관한 부분은 무시해도 돼요. 이 연습 문제에는 서드파티 라이브러리가 필요하지 않아요. 이 연습 문제는 콜백과 Tcl의 이벤트 루프를 사용하는 이벤트 기반 프로그래밍에 초점을 맞춰요.

TCP 서버와 도메인 특화 프로토콜을 직접 만들어야 해요. 이 서버는 추측할 단어와 함께 실행돼요. 테스트 스크립트가 서버로 명령을 보내는 클라이언트를 구현해요.

도메인 특화 프로토콜

구현해야 할 프로토콜 명령은 다음과 같아요:

  • STATUS는 게임의 현재 상태를 반환해요. 응답은 세 개의 원소로 이루어진 배열이에요:
    1. 남은 오답 횟수,
    2. 아직 추측하지 않은 글자를 밑줄로 가린 단어, 그리고
    3. 상태 필드 ("ongoing", "win" 또는 "lose" 중 하나)
  • GUESS x에서 x는 추측할 글자예요. 서버는 추측할 때마다 상태 배열로 응답해요.
  • SHUTDOWN은 서버를 원격으로 종료해요. 그 외의 경우 서버는 승리하거나 패배한 뒤 종료돼요.

서버는 이 명령들을 대소문자 구분 없이 처리할 수 있어야 해요.

서버는 어떤 포트를 사용하나요?

서버를 포트 번호 0으로 시작해요. 그러면 Tcl이 사용하지 않는 포트를 찾아 주기 때문에 테스트 스크립트에 포트 번호를 하드코딩할 필요가 없어요. 한 프로세스에서 실행되는 모든 인터프리터(스레드 포함)는 같은 환경을 공유하기 때문에, 서버는 전역 env 배열을 사용해 자신의 포트를 테스트 스크립트에 다시 알려 줄 수 있어요. 초기 hangman.tcl 파일에 예제가 있어요.

힌트

다음 Tcl 명령들이 필요해요: socket, fileevent, vwait.

이 예제 소켓 프로그램으로 시작해 볼 수 있어요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Tcl Exercism

행맨 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Tcl 트랙을 연습 문제 135개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.