빈 머신 이나 plinko / pachinko 게임 과 유사한 메커니즘의이 ASCII 버전을 고려하십시오 .
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
는 O
아래로 떨어지는 볼 수 있습니다.
- 이에
^
맞으면 50 ~ 50의 확률로 왼쪽이나 오른쪽으로 갈 것입니다. - 가에 도달
/
하면 항상 왼쪽으로 이동합니다. - 가 맞으면
\
항상 올바르게 진행됩니다.
공은 결국 U
바닥에있는 트로프 중 하나에 속합니다 . 문제는 각 구유에서 발생 될 확률은 얼마입니까?
이 특별한 경우에 대해, 확률은 0.0
, 0.1875
, 0.5625
, 0.125
, 및 0.125
은 각각 5 내지 1 골.
여기에 3 개 골짜기 대신 5. 확률은 또 다른 예입니다 0.5
, 0.5
그리고는 0.0
:
O
/
^ ^
U U U
1 2 3
이 과제에서 우리는이 문제를 어떤 방식 으로든 많은 수의 레이어가 설정된 메커니즘으로 일반화 할 것입니다.
도전
메커니즘의 피라미드 구조를 ASCII로 나타내는 프로그램이나 함수를 작성하십시오. (stdin / command line / function arg.를 통한 입력)
적절한 모양으로 배치 할 수있는 공간이 있다고 가정 할 수 있습니다. 예 :
^
\ ^
^ ^ \
\ ^ / ^
또는 공백이 전혀 없다고 가정 할 수 있습니다.
^
\^
^^\
\^/^
원하는 경우 후행 줄 바꿈 및 / 또는 일부 일관된 후행 공백 패턴이 있다고 가정 할 수 있습니다.
입력 피라미드 구조는 0을 포함하여 여러 레벨 (일명 선)을 가질 수 있습니다. 각 레벨에는 하나 이상의 ^
, /
또는 \
마지막 레벨이 levels + 1
있으며 맨 아래에는 입력의 일부가 아닌 트로프 가 있습니다 .
프로그램 / 기능은 볼이 각 트로프에있는 확률 목록을 인쇄 / 반환해야합니다 (가장 왼쪽 트로프부터 가장 오른쪽 트로프 순서로). 이 인쇄 될 때, 상기 적어도 3 소수점가 부동 소수점 값을한다 (또는 소수 불필요한 제로 포인트가 요구되지 않으며 1
괜찮지 1.000
, .5
괜찮지 0.500
등). 함수를 작성한 경우 값을 인쇄하거나 float의 목록 / 배열을 반환 할 수 있습니다.
합리적인 인쇄 목록 형식은 괜찮습니다. 예를 들면 0.5 0.5 0.0
, [0.5 0.5 0.0]
, [0.5, 0.5, 0.0]
, {0.5, 0.5, 0.0}
, 또는 0.5\n0.5\n0.0
모든 괜찮을 것입니다.
예
0 레벨 : (사소한 일로 다운 U
)
입력 : [no input/empty string given]
출력 :1.0
1 레벨 :
입력 : ^
출력 :0.5 0.5
입력 : /
출력 :1.0 0.0
입력 : \
출력 :0.0 1.0
2 단계 : (위의 두 번째 예)
입력:
/
^ ^
산출: 0.5 0.5 0.0
3 단계 :
입력:
^
^ ^
^ ^ ^
산출: 0.125 0.375 0.375 0.125
입력:
\
/ \
/ / \
산출: 0.0 0.0 0.0 1.0
4 단계 : (위의 첫 번째 예)
입력:
^
\ ^
^ ^ \
\ ^ / ^
산출: 0.0 0.1875 0.5625 0.125 0.125
7 단계 :
입력:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
산출: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
채점
바이트 단위의 최단 답변이 이깁니다. Tiebreaker는 이전 게시물입니다.