누군가 피보나치 숫자를 사용하여 정말 멋진 시계 를 만들었습니다. 우리가 좋아하는 방식! 이것을 다시 만들어 봅시다.
시계는 1부터 시작하여 처음 5 개의 피보나치 수에 해당하는 5 개의 섹션으로 구성됩니다 (예 : 1, 1, 2, 3, 5).
ccbeeeee
ccaeeeee
dddeeeee
dddeeeee
dddeeeee
시계는 12 시간을 5 분 단위로 표시 할 수 있습니다. 작동 방식은 다음과 같습니다. 시간 7:20을 고려하십시오. 7 시간은 다음과 같이 주어진 피보나치 수로 분해 될 수 있습니다.
7 = 2 + 5
5 분의 4 개 단위도 있습니다. 4는 다음과 같이 분해 될 수 있습니다.
4 = 2 + 1 + 1
이제 시간은 빨간색으로 표시되고 분 단위는 녹색으로 표시되며 시간과 분 모두에 숫자를 사용하면 파란색으로 표시됩니다. 숫자를 전혀 사용하지 않으면 흰색으로 유지됩니다. 위의 내용은 다음과 같습니다.
BBGRRRRR
BBGRRRRR
WWWRRRRR
WWWRRRRR
WWWRRRRR
그러나 더 많은 것이 있습니다. 위의 분해가 유일한 가능성은 아닙니다. 하나는 또한 쓸 수 7 = 3 + 2 + 1 + 1
있으며 4 = 3 + 1
,
GGRWWWWW GGBWWWWW
GGBWWWWW GGRWWWWW
BBBWWWWW or BBBWWWWW
BBBWWWWW BBBWWWWW
BBBWWWWW BBBWWWWW
어느 1
것이 선택 되었는지에 따라 . 물론 다른 조합도 있습니다. 시계는 모든 유효한 분해 중에서 무작위로 선택합니다.
내가 말했듯이 ... 이것은 유용성 상을 얻지 못할 수도 있지만보기에 좋습니다.
도전
당신의 임무는 그러한 시계를 구현하는 것입니다. 프로그램 (또는 함수)은 위에서 설명한대로 현재 시간 (5 분의 마지막 배수로 반올림)의 ASCII 표현을 STDOUT 또는 가장 가까운 대안으로 인쇄해야합니다. 일반적인 형식으로 시간을 입력으로 읽거나 표준 라이브러리 함수를 사용하여 시간을 얻도록 선택할 수 있습니다. 현재 / 제공된 시간을 5 분으로 나눌 수 있다고 가정해서는 안됩니다.
솔루션 은 현재 시간의 가능한 모든 표현 중에서 무작위로 선택 해야 합니다. 즉, 각 표현은 0이 아닌 확률로 인쇄되어야합니다.
자정과 정오는 0:00
(와 반대로 12:00
) 처리해야합니다 .
선택적으로 단일 후행 개행 문자를 인쇄 할 수 있습니다.
대신에 인쇄 가능한 4 개의 ASCII 문자 (문자 코드 0x20 ~ 0xFE)를 사용할 수 있습니다 RGBW
. 귀하의 답변에 선택 사항을 기재하고 일관되게 사용하십시오.
이것은 코드 골프이므로 가장 짧은 대답 (바이트)이 이깁니다.