DSA의 인재 롤


9

일부 친구와 저는 DSA (주로 D & D와 비슷한 독일 탁상 RPG)를 플레이했습니다. 롤을 전달할 가능성이 무엇인지 궁금해서 계산하기 위해 코드를 작성해야합니다.

당신의 캐릭터는 능력치 (8 ~ 14)와 (TV) 특성 (0 ~ 21)으로 정의됩니다. 지금은 등반을 예로 들어 보겠습니다.

인재 테스트

재능 (등반)은 다음과 같습니다 : (Courage-Dexterity-Strength) TV : 7. 재능에서 캐릭터를 테스트하려면 20면 주사위로이 능력치에 굴려서 그 능력치보다 낮거나 같게하십시오. 당신은 잘합니다. 그렇지 않으면 TV 포인트를 사용하여 1 : 1의 비율로 롤을 줄일 수 있습니다.

용기 12, 민첩 13 및 힘 14를 가진 사냥꾼은 나무를 등반하려고합니다. 그의 TV는 7입니다.

그는 3을 굴리고 값이 12보다 작아서 그 롤을 통과했습니다.

그런 다음 그는 17을 굴리고 17은 13보다 4가 더 많으므로 4 TV는 3 남았습니다.

마지막 롤의 경우 14를 얻습니다.

모든 롤이 통과되고 사냥꾼이 나무를 올라갈 수 있었고 TV 3 대가 남았습니다.

입력

언어의 표준 입력에서 가져온 모든 형식의 4 가지 값. 그래도 순서대로 있어야합니다.

12 13 14 7또는 12,13,14,7배열 {12,13,14,7} 또는 혼합형[12, 14, 8], 3

산출

롤이 얼마나 자주 통과 할 가능성.

예 (위의 값)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

보너스 : 다시 포맷팅은 여기서 문제가되지 않지만 원하는대로 출력하지만 다음 순서로 출력하십시오.

failed/with 0/with 1/with 2/with 3/with 4/with 5/with 6/with 7 

TV가 남지 않을 때까지 계속합니다.

12,13,14,7 = 0.197/0.075/0.089/0.084/0.078/0.073/0.068/0.063/0.273

12,14,8,3 = 0.678/0.056/0.051/0.047/0.168

도전과 규칙과 보너스

  • 입력에 +/- 0.5 % 정확도로 롤을 전달할 수있는 기회가 주어 졌는지 확인해야합니다.

  • 프로그램이 nTV 를 통과 할 기회를 출력하면 -20 %입니다 (출력 참조).

  • 이것은 바이트 단위의 가장 짧은 코드가 승리합니다!


1
"선택한 형식의 4 개 값"에 다른 순서로 값이 포함됩니까?
Martin Ender

1
아니면 같은 [12, 14, 8], 3?
Martin Ender

나는 지금 주문이 포함되어 있다고 생각했다. 혼합 입력도 가능합니다.
Eumel

답변:


2

Pyth- 21 20 19 바이트

@ThomasKwa 덕분에 1 바이트 절약

.Omgvzsg#0-VdQ^SyT3

테스트 스위트 .


Pyth는 너무 좋다 ... 이것은 APL의 질문 유형이며, APL에는 27 명 밖에 없다.
lirtosiast

입력의 순서는 stat,stat,stat,TV내가 지금 만 지정했기 때문에 대체되었습니다 . 그러나 쉽게 수정할 수 있다면 좋을 것입니다. 당신은 설명을 넣을 수 있습니까?
Eumel

@Eumel, 순서를 바꾸는 것이 문제가되어서는 안됩니다. 지금 전화 중입니다. 집에 도착하면 할 것입니다.
Maltysen

1

Dyalog APL, 28 바이트

{(+/÷⍴)⍵≥∊+/¨0⌈(⊂⍺)-⍨¨⍳3⍴20}

이 접근 방식은 @Maltysen과 동일합니다. 우리는 단지 수천 개의 임의의 주사위 롤을 뽑으면 0.5 %의 정확도를 확신 할 수 없으므로 대신 가능한 모든 롤의 평균을 취합니다. 이것은 세 가지 통계를 왼쪽 논거로, 오른쪽의 재능 가치를 취합니다.

여기에서 보십시오 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.