트랙
/
Go
Go
/
연습 문제
/
로봇 이름
로봇 이름

로봇 이름

보통

지침

로봇 공장 설정을 관리해요.

로봇이 공장에서 나올 때는 이름이 없어요.

로봇을 처음 켜면 대문자 두 개 뒤에 숫자 세 개가 붙는 형식의 무작위 이름이 만들어져요. 예를 들어 RX837이나 BC811 같은 이름이에요.

가끔 로봇을 공장 초기 설정으로 되돌려야 할 때가 있는데, 그러면 로봇의 이름이 지워져요. 다음에 이름을 물어보면 그 로봇은 새로운 무작위 이름으로 답해요.

이름은 무작위여야 해요. 예측할 수 있는 순서를 따라서는 안 돼요. 무작위 이름을 쓰면 이름이 겹칠 위험이 있어요. 풀이는 모든 로봇이 고유한 이름을 갖도록 해야 해요.

구현

로봇 이름이 바닥날 수도 있어요. 가능한 모든 로봇 이름이 할당되고 나면 오류를 반환해야 해요.

보너스 테스트

go test가 통과되면, 테스트 스위트에 TestCollisions라는 테스트가 있다는 걸 알게 될 거예요. 이 테스트는 시간이 오래 걸릴 수 있어서 기본적으로 건너뛰도록 되어 있어요. 이 테스트는 로봇에 더 이상 새 이름을 할당할 수 없을 때까지 새로운 로봇을 만들어요.

테스트를 실행하려면 다음 줄을 지워요:

t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")

이 테스트를 통과하려면 로봇의 이름이 이전에 사용된 적이 없도록 하고, 이름을 효율적으로 할당할 수 있도록 해야 해요.


출처

gSchool에서 Paul Blackwell과 함께한 디버깅 세션.
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Go Exercism

로봇 이름 문제를 시작해 볼 준비가 됐나요?

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