체스판

체스판

학습 연습 문제

소개

범위

범위는 하나 또는 여러 개의 연속된 정수를 나타내요. 두 정수를 ..로 연결해서 만들어요.

1..5

범위는 오름차순일 수도 있고 내림차순일 수도 있어요. 그리고 항상 첫 번째 값과 마지막 값을 포함해요.

범위는 _Enumerable 프로토콜_을 구현하기 때문에 Enum 모듈의 함수를 사용해서 범위를 다룰 수 있어요.

지침

체스 애호가라면 누구나 자기만의 체스 게임을 한번 만들어 보고 싶을 거예요. 물론 온라인에는 이미 체스를 구현한 프로그램이 많겠지만, 직접 만든 것은 세상에 하나뿐일 거예요!

하지만 상상력을 마음껏 펼치기 전에 기본부터 챙겨야 해요. 체스판을 만드는 것부터 시작해 봐요.

체스판의 각 칸은 문자와 숫자 쌍으로 구분해요. 세로로 늘어선 칸 줄은 파일이라고 하고, A부터 H까지 이름이 붙어 있어요. 가로로 늘어선 칸 줄은 랭크라고 하고, 1부터 8까지 번호가 붙어 있어요.

1. 랭크 범위 정의하기

rank_range/0 함수를 구현해요. 이 함수는 1부터 8까지의 정수 범위를 반환해야 해요.

Chessboard.rank_range()

2. 파일 범위 정의하기

file_range/0 함수를 구현해요. 이 함수는 대문자 A의 코드 포인트부터 대문자 H의 코드 포인트까지의 정수 범위를 반환해야 해요.

Chessboard.file_range()

3. 랭크 범위를 랭크 배열로 변환하기

ranks/0 함수를 구현해요. 이 함수는 1부터 8까지의 정수 배열을 반환해야 해요. 이 배열을 직접 손으로 쓰지 말고, rank_range/0 함수가 반환한 범위에서 생성해요.

Chessboard.ranks()
# => [1, 2, 3, 4, 5, 6, 7, 8]

4. 파일 범위를 파일 배열로 변환하기

files/0 함수를 구현해요. 이 함수는 "A"부터 "H"까지의 문자(문자열) 배열을 반환해야 해요. 이 배열을 직접 손으로 쓰지 말고, file_range/0 함수가 반환한 범위에서 생성해요.

Chessboard.files()
# => ["A", "B", "C", "D", "E", "F", "G", "H"]
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Elixir Exercism

체스판 문제를 시작해 볼 준비가 됐나요?

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