[ 확률을 정확하게 계산하기 위한 파트너 질문입니다 ]
이 작업은 확률을 정확 하고 신속하게 계산하기위한 코드 작성에 관한 것입니다 . 결과는 가장 축소 된 형태로 분수로 쓰여진 정확한 확률이어야합니다. 즉, 출력 4/8
하지 말고 오히려 출력해야합니다 1/2
.
양의 정수의 경우 n
, 길이가 1과 -1 인 균일하게 임의의 문자열을 고려하여 n
A라고 부릅니다. 이제 A
첫 번째 값으로 연결 합니다. 즉 A[1] = A[n+1]
(1)에서 색인 경우 A
지금 길이 n+1
. 이제 n
첫 번째 n
값이 각각 1 / 4,1 / 2, 1/4 인 -1, 0 또는 1 인 길이 의 두 번째 임의의 문자열을 고려하여 B라고 부릅니다.
지금의 내적 생각 A[1,...,n]
과 B
와의 내적을 A[2,...,n+1]
하고 B
.
예를 들어을 고려하십시오 n=3
. 가능한 값 A
및 B
수 A = [-1,1,1,-1]
및 B=[0,1,-1]
. 이 경우 두 개의 내부 제품은 0
및 2
입니다.
코드는 두 내부 제품이 모두 0 일 확률을 출력해야합니다.
Martin Büttner가 생산 한 표를 복사하면 다음과 같은 샘플 결과가 나타납니다.
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
언어와 라이브러리
원하는 언어와 라이브러리를 자유롭게 사용할 수 있습니다. 코드를 실행할 수 있어야하므로 가능한 경우 리눅스에서 코드를 실행 / 컴파일하는 방법에 대한 자세한 설명을 포함하십시오.
작업
코드는 시작 n=1
하여 별도의 줄에 증가하는 각 n에 대해 올바른 출력을 제공 해야합니다 . 10 초 후에 중지해야합니다.
점수
점수는 단순히 n
컴퓨터에서 실행될 때 10 초 후에 코드가 중지되기 전에 도달 한 최고 점수입니다 . 동점이 있다면, 가장 높은 점수를 얻는 사람이 승자가됩니다.
항목 표
n = 64
에서 파이썬 . Mitch Schwartz의 버전 1n = 106
에서 파이썬 . Mitch Schwartz의 2015 년 6 월 11 일 버전n = 151
에서 C ++ . kirbyfan64sos의 미치 슈워츠 항 답변n = 165
에서 파이썬 . 2015 년 6 월 11 일 Mitch Schwartz의 "정리"버전N_MAX = 165
.n = 945
정확한 공식을 사용하여 Min_25에 의해 Python 에서 . 놀랄 만한!n = 1228
에 파이썬 미치 슈워츠 (Min_25의 이전 답변에 따라) 다른 정확한 공식을 사용하여.n = 2761
에 파이썬 미치 슈워츠에 의해 똑같은 식의 빠른 구현을 사용.n = 3250
에서 파이썬 사용 Pypy를 같은 구현을 사용 미치 슈워츠에 의해. 이 점수는pypy MitchSchwartz-faster.py |tail
콘솔 스크롤 오버 헤드를 피해야합니다.