골프 소수 자릿수


15

목표는 입력 분수에 대해 가장 짧은 고유 소수 시퀀스를 출력하는 코드를 작성하는 것입니다. 분모가 같은 두 분수는 동일한 출력을 가질 수 없지만 분모가 다른 분수는 같은 표현을 가질 수 있습니다.

2 개의 정수 를 입력으로 취하십시오 . 첫 번째는 분자이고 두 번째는 분모입니다.

예 :

n  d   output
-----  ------
0 13:  0.00
1 13:  0.07
2 13:  0.1
3 13:  0.2
4 13:  0.30
5 13:  0.38

기타

3/13로 시작하는 분모가 13 인 유일한 분수 0.2이므로 더 이상 숫자가 필요하지 않습니다. 4/13과 5/13와 모두 시작 0.3또 다른 자리가 필요합니다, 그래서 그들 사이를 구별한다.

당신은 할 수있다 -1보다 크고 또는 소수점 앞에 0이없는 중 1 개 미만 출력 숫자만큼 출력이 일치으로, 즉 0.5와 .5같은 수 있습니다 모두 유효합니다. 다른 선행 0은 허용되지 않습니다. 출력을 다른 값과 구별하는 데 필요한 경우 후행 0을 표시해야합니다.

0에서 떨어진 숫자는 반올림 할 수 없습니다. 잘 려야합니다. 선행 또는 후행 공백이 없어야합니다. 선택적으로 단일 후행 줄 바꿈이있을 수 있습니다.

더 많은 테스트 값 :

   n    d   output
----------  ------
   0    1:   0 (this 0 may not be removed because there's no decimal point)
   5    1:   5
   0    3:   0.0 (or .0)
   4    3:   1.3
   5    3:   1.6
  10    8:   1.2
  11    8:   1.3
  12    8:   1.5
-496  -38:  13.05
 458  -73:  -6.27
  70  106:   0.660 (or .660)
 255  123:   2.07
 256 -123:  -2.081
-257 -123:   2.089
-258  123:  -2.09
 258 -152:  -1.697
-259  152:  -1.70
 260  152:   1.710
 272  195:   1.39
 380  247:   1.538
 455 -455:  -1.000
 -44  891:  -0.049 (or -.049)
 123 1234:   0.099 (or .099)

각각의 경우에, 출력 및 분모는 분자를 고유하게 계산하기에 충분합니다.

답변:


1

펄, 77 바이트

#!perl -p
$%++while/ /<grep{!index$_/$',$\=$`/$'.($`%$'?0:n).0 x$%&'?'x$%}$`-2..$`+2}{

shebang을 하나로 계산하여 입력을 stdin에서 가져옵니다.

샘플 사용법

$ echo 0 3 | perl golf-decimals.pl
0.0

$ echo 4 3 | perl golf-decimals.pl
1.3

$ echo 11 8 | perl golf-decimals.pl
1.3

$ echo -496 -38 | perl golf-decimals.pl
13.05

$ echo 458 -73 | perl golf-decimals.pl
-6.27

$ echo -44 891 | perl golf-decimals.pl
-0.049


1

자바 스크립트 (ES7), 118 93 90 바이트

f=(a,b,i=0)=>(v=(p=n=>((n/b*10**i|0)/10**i).toFixed(i))(a))==p(a+1)|v==p(a-1)?f(a,b,i+1):v

@Neil 덕분에 25 바이트를 절약했습니다.
재귀를 사용하여 추가 3 바이트를 저장했습니다.


2
항상 전달 /b하여 전달 i하기 p때문에 내부에서 코드를 작성하고 p단일 매개 변수 만 사용할 수 있습니다. 또한 답은 n다시 계산할 필요가 없습니다. 나는 ... 불과 86 바이트에서 느슨하게이를 바탕 재귀 ES6 버전이
— 닐
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.