비둘기 집 원리의 상태가
N > M을 사용 하여 N 개의 항목을 M 상자에 넣는 경우 하나 이상의 상자에 둘 이상의 항목이 포함되어야합니다.
많은 사람들에게이 원칙은 다른 수학 발표와 비교하여 특별한 지위를 가지고 있습니다. EW 데이 크 스트라는 썼다 ,
그것은 약간의 신비로 둘러싸여 있습니다. 그것을 사용하는 증거는 종종 특별한 무언가, 특히 독창적 인 것으로 간주됩니다.
도전
이 도전의 목적은 ASCII 예술 표현을 사용하여 비둘기 구멍 원리를 설명하는 것입니다. 구체적으로 :
- 음수 가 아닌 양수 로 입력
N
(항목 수) 및M
(상자 수)로 사용하십시오 . (이 경우 원칙이 적용되지 않더라도) 보다 작을 수 있습니다 .N
M
N
M
- 상자에 가능한 항목 할당 중 하나를 임의로 선택하십시오. 각 과제는 0이 아닌 확률을 가져야합니다.
다음과 같이 과제의 ASCII 아트 표현을 생성하십시오.
M
각 상자에 해당하는 줄 이 있습니다 .- 각 줄은와 같이 공백이 아닌 문자로 시작합니다
|
. - 이 문자 다음에는 공백이 아닌 다른 문자가 있습니다. 예를 들어
#
해당 상자에 항목이있는 횟수만큼 반복됩니다.
예를 들어 고려 N = 8
, M = 5
. 상자에 항목의 선택의 할당은이 경우 4
, 1
, 0
, 3
, 0
, 표현입니다
|####
|#
|
|###
|
동일한 프로그램의 다른 실행 (다른 할당 결과)은
|#
|##
|#
|#
|###
표현과 관련하여 약간의 유연성이 있습니다. 아래를 참조하십시오.
특정 규칙
코드는 이론적 으로 N
및의 모든 값 에 대해 실행 되어야합니다 M
. 실제로 메모리 크기 나 데이터 형식 제한에 의해 제한 될 수 있습니다.
출력을 관찰하는 것만으로는 모든 할당 에 0 이 아닌 확률 이 있는지를 판단하기에 충분하지 않으므로 각 제출은 코드가 명확하지 않은 경우이를 달성하는 방법을 설명해야합니다.
다음과 같은 표현 변형 이 허용됩니다.
- 공백이 아닌 다른 문자 쌍을 선택할 수 있습니다. 프로그램 실행에서 일관성이 있어야합니다.
- 표현의 90도 회전이 허용됩니다. 다시, 선택은 일관성이 있어야합니다.
- 후행 또는 선행 공백이 허용됩니다.
다른 표현 형식에 대한 일 예로서 N = 15
, M = 6
프로그램의 실행의 두 가지 결과가있을 수
VVVVVV
@@@@@@
@@ @@@
@ @@
@
또는
VVVVV
@@@ @
@@@ @
@ @ @
@ @ @
@
마찬가지로 N = 5
, M = 7
표현의 또 다른 변화를 사용하여 줄 수있는,
*
* * * *
UUUUUUU
또는
*** **
UUUUUUU
또는
*
* *
* *
UUUUUUU
이 경우 원칙이 어떻게 적용되지 않는지 참고하십시오 . N
< M
.
일반적인 규칙
모든 프로그래밍 언어의 프로그램 또는 기능 이 허용 됩니다 . 표준 허점 은 금지되어 있습니다.
합리적인 수단으로 입력 할 수 있습니다 . 두 개의 숫자 배열 또는 두 개의 다른 문자열과 같은 형식으로.
출력 수단과 형식도 유연합니다. 예를 들어, 출력은 문자열 목록이거나 줄 바꿈이있는 문자열 일 수 있습니다. 함수 출력 인수로 리턴되거나 STDOUT에 표시됩니다. 후자의 경우 제한된 디스플레이 너비로 인한 줄 바꿈에 대해 걱정할 필요가 없습니다.
바이트 단위의 최단 코드가 이깁니다.