첫 결정 규칙

출판사 하우스 스타일 규칙을 실행하고 2줄이 남으면 제목을 두고 1줄이 남으면 넘기는 이유를 확인합니다.

쪽 끝에 놓일 제목의 위치를 정하는 하우스 스타일 규칙을 작성합니다. 절 제목은 아래에 2줄 이상 남을 때만 그 쪽에 두고, 장 제목은 언제나 새 쪽에서 시작합니다. 2줄과 1줄, 장 제목의 결과를 확인해 보세요.

예제는 플레이그라운드에서 실행할 수 있습니다. 터미널을 쓰려면 첫 프로그램을 따라 네이티브나 npm을 설치하세요.

규칙을 작성하고 실행하기

다음 프로그램 전체를 house-style.lspx로 저장하세요.

LISPEX
(define (제목-위치 남은-줄 장-제목?)
  (if (and (>= 남은-줄 2) (not 장-제목?))
      '(판단 그대로)
      '(판단 다음-쪽으로)))

(제목-위치 5 #f)

네이티브나 npm을 설치했다면 파일이 있는 디렉터리에서 실행하세요.

SH
lispex house-style.lspx

출력

출력
(판단 그대로)

명령의 종료 상태는 0이며 새 파일은 만들지 않습니다. 플레이그라운드에서도 같은 프로그램을 붙여 넣고 실행하면 같은 답이 나옵니다.

두 입력은 제목의 상태를 나타냅니다.

  • 남은-줄은 제목 아래로 그 쪽에 남은 줄 수입니다.
  • 장-제목?은 장 제목이면 #t, 절 제목이면 #f입니다.

이 예제는 0 이상의 올바른 줄 수와 불리언을 받는다고 가정합니다. 호출 애플리케이션은 규칙을 호출하기 전에 입력을 확인합니다. 잘못된 입력은 오류 처리하기에서 다룹니다.

5줄이 남으면 제목 아래에 본문이 들어갈 자리가 있고 #f는 절 제목을 뜻합니다. 답은 리스트입니다. 그 안의 그대로 심볼은 제목을 이 쪽에 그대로 둔다는 뜻입니다.

2줄과 1줄 확인하기

house-style.lspx의 정의는 그대로 두세요. 마지막 호출을 다음 세 호출이 든 리스트로 바꿉니다.

LISPEX
(list (제목-위치 2 #f)
      (제목-위치 1 #f)
      (제목-위치 5 #t))

lispex house-style.lspx를 다시 실행하세요. 플레이그라운드에서는 수정한 프로그램을 실행하면 됩니다.

출력

출력
((판단 그대로) (판단 다음-쪽으로) (판단 다음-쪽으로))

명령의 종료 상태는 다시 0이며 새 파일은 만들지 않습니다. 호출 순서대로 세 답을 읽으세요.

사례답이 나온 이유결정
2줄, 절 제목>=는 2를 포함함그대로
1줄, 절 제목1은 2보다 작음다음 쪽으로
5줄, 장 제목(not 장-제목?)이 거짓임다음 쪽으로

>=를 >로 바꾸면 2줄 사례도 다음 쪽으로 넘깁니다. 이 사례로 경계값을 포함하는지 확인할 수 있습니다.

이 규칙은 두 경우 모두에 다음-쪽으로를 씁니다. 자리가 모자란 경우와 장 제목을 구별하려면 조건 분기와 이유 이름을 따로 넣으세요.

조건이 답을 고르는 방법

and는 (>= 남은-줄 2)를 먼저 확인합니다. 거짓이면 멈춥니다. 참이면 (not 장-제목?)을 확인합니다. if는 선택한 분기만 평가합니다. 작은따옴표는 선택한 결정 리스트를 데이터로 유지합니다.

조판 애플리케이션은 쪽을 짜면서 남은-줄을 세어 규칙에 전달합니다. 같은 두 값과 같은 실행 조건을 주면 이 규칙은 같은 결과를 냅니다.

출판사의 편집자가 하우스 스타일을 정하고 규칙을 검토합니다. 애플리케이션은 입력 데이터의 출처를 확인하고 답을 지면에 반영할지 결정합니다.

연습

절 제목 아래에 3줄 이상 남을 때만 제목을 그 쪽에 두도록 바꾸세요. 제목을 그대로 두는 가장 작은 줄 수와 다음 쪽으로 넘기는 가장 큰 줄 수를 확인하세요.

답 하나 보기

house-style.lspx에서 (>= 남은-줄 2)를 (>= 남은-줄 3)으로 바꿉니다. 마지막 호출 리스트는 다음과 같이 바꿉니다.

LISPEX
(list (제목-위치 3 #f)
      (제목-위치 2 #f))

lispex house-style.lspx를 다시 실행하세요.

출력

출력
((판단 그대로) (판단 다음-쪽으로))

명령의 종료 상태는 0이며 새 파일은 만들지 않습니다.

다음 실행 장소 고르기

2줄과 1줄의 결과를 설명할 수 있다면 애플리케이션에서 리스펙스 실행하기로 이어 가세요.

다른 작업은 아래 안내에서 시작하세요.