가장 까다로운 수학 퍼즐을 풀어내는 능력으로 이름난, 뛰어난 문제 해결사예요. 어느 날 저녁, 획기적인 새 프로젝트를 진행 중인 Triangle Tinkerer라는 발명가에게서 다급한 편지 한 통이 도착해요. 편지에는 이렇게 적혀 있어요.
수학자님께,
도움이 필요해요. 저는 a² + b² = c²을 만족하는 세 정수의 집합인 피타고라스 삼조의 독특한 성질을 이용하는 장치를 설계하고 있어요. 이 장치는 항법을 완전히 바꿔 놓을 거예요. 하지만 이 장치가 제대로 작동하려면, a, b, c의 합이 특정한 수 N이 되는 모든 삼조를 프로그램에 넣어야 해요. 이 삼조들을 손으로 계산하면 몇 년이 걸릴 거예요. 그런데 그 정도 일은 문제없이 해낼 수 있다고 들었어요.
시간이 촉박해요. 제 발명의 미래, 어쩌면 수학적 혁신의 미래가 이 문제를 풀어내는 능력에 달려 있어요.
이 일이 얼마나 중요한지 알기에, 조건을 만족하는 모든 피타고라스 삼조를 찾아 나서요. 이 작업은 과학과 공학에 새로운 가능성을 열어 주는, 멀리까지 영향을 미칠 만한 결과를 낳을지도 몰라요. 이 도전에 맞서 역사를 만들어 볼 수 있을까요?
피타고라스 삼조는 세 자연수 {a, b, c}의 집합으로, 다음을 만족해요.
a² + b² = c²
그리고 다음 조건도 만족해요.
a < b < c
예를 들어,
3² + 4² = 5².
정수 N이 주어졌을 때, a + b + c = N을 만족하는 모든 피타고라스 삼조를 찾아요.
예를 들어 N = 1000일 때, a + b + c = 1000을 만족하는 피타고라스 삼조는 {200, 375, 425} 하나뿐이에요.
Range는 변의 길이가 min 이상 max 이하인 모든 피타고라스 삼조의 배열을 반환해야 해요.
Sum은 합 a+b+c(둘레)가 p인 모든 피타고라스 삼조의 배열을 반환해야 해요.
반환되는 각 삼조의 세 원소는 t[0] <= t[1] <= t[2] 순서여야 하고, 삼조의 배열은 사전순이어야 해요.
Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.