골프 소수 자릿수


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/135/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.