회전 수


10

직무

반지름이 주어지면 주어진 거리를 이동하기 위해 휠에 필요한 회전 수를 찾는 함수 또는 프로그램을 작성하십시오.

규칙

입력은 양의 유리수 일 수 있으며 편리한 형식으로 가져올 수 있습니다.

두 입력은 모두 같은 단위입니다.

코드에 숫자 0-9가 없어야합니다.

출력은 정수입니다 (float의 경우 무한대로 반올림)

이것은 코드 골프 이므로 가장 짧은 코드가 승리합니다.

distance radius  output
10       1       2
50       2       4
52.22    4       3
3.4      0.08    7
12.5663  0.9999  3

5
컴파일러 옵션 (또는 다른 곳)에서도 숫자가 금지되어 있어야합니다 .gcc를 사용 하여이 제약 조건을 코드로 제한하면 -DP=3.14컴파일러 플래그 와 같은 작업을 수행 할 수 있습니다 P. 이는 pi의 근사치로 정의 됩니다. 의도하지 않은 것
Annyo

답변:




4

자바 8, 32 30 바이트

a->b->-~(int)(a/b/Math.PI/'')

\u0002작은 따옴표 사이에 인쇄 할 수 없습니다 .

@jOKing 포트 Perl 6 답변 .

온라인으로 사용해보십시오.


코드에서 숫자 '1'입니까? 나는 그것이 허용되지 않을 수 있다고 생각합니다.
ouflak

4
@ouflak 이렇게 수정 될 수있을 것 같습니다 .
Outgolfer Erik

@ouflak Woops, 그것은 꽤 어리석은 실수였습니다. 인쇄 할 수없는 것을 사용하여 숫자를 사용하지 않고 2그냥 숫자를 사용합니다 1... 운 좋게 Erik은 간단한 음의 단항이 +1(보통 사용되는) 음수 및 단항이 대부분의 다른 연산자보다 우선 순위가 높으므로 괄호를 제거합니다.
케빈 크루이 ssen

4

펄 6 , 15 12 바이트

타우에 대해 상기시켜주는 nwellnhof에 -3 바이트의 tjanks

*/*/τ+|$+!$

온라인으로 사용해보십시오!

익명 수식을 사용하는 람다 (a/b/tau).floor+1. 타우는 파이의 두 배입니다. 두 개의 익명 변수 $는 숫자로 강제 변환됩니다.이 숫자 0는 숫자 +|0(비트 또는 0)를 나누고 하나 +!$(0이 아닌)를 추가 하는 데 사용됩니다 .


코드에 숫자 0-9가 없어야합니다.
Titus

@Titus 나는 그것을 잊었다 믿을 수 없습니다. 고마워요!
조 왕

지수의 숫자도 허용됩니까?
ouflak

3

파이썬 2 , 47 45 44 43 바이트

lambda l,r:l/(r+r)//math.pi+l/l
import math

온라인으로 사용해보십시오!


  • flawr로 인해 -2 바이트
  • Jonathan Allan 덕분에 -1 바이트

입력이 (엄격히) 긍정적이고 합리적임을 보장했기 때문에 정확한 회전 수를 요구하는 경우를 절대로 누르지 않으므로 l/(r+r)//pi+l/l바이트를 절약하고 저장할 수 있다고 생각 합니다.
Jonathan Allan





2

C, 46 바이트

f(float a,float b){return ceil(a/(b+b)/M_PI);}

PPCG를 처음 사용하므로 바이트 수에서 다른 부분을 계산 해야하는지 잘 모르겠습니다.

include <math.h>

ceil 함수에 필요하며,이 숫자는 64 바이트로 증가합니다.


PPCG에 오신 것을 환영합니다! 이것은 좋은 첫 번째 대답입니다. 예, #include바이트 총계 로 계산해야합니다 . 온라인 테스트 스위트에 대한 링크는 항상 높이 평가됩니다. 다음은 게시물에 자유롭게 포함시킬 수있는 것입니다 : tio.run/…
OOBalance

@OOBalance이 도전 과제의 코드에는 숫자를 사용할 수 없습니다.)
Annyo

@Annyo 나는 내가 무언가를 잊고 있다는 것을 알고 있었다 :(
OOBalance

2

가톨릭 , 8 바이트

ċ//ĊǓĊ`Ė

설명:

  /ĊǓĊ    divide the first input by the doubled second input
 /    `Ė  divide that by pi
ċ         ceil

새 버전 (pi 내장 1 바이트, 분할 매개 변수 교체), 5 바이트

ċ/π/Ǔ




2

C (gcc) , 45 47 45 바이트

f(d,r,R)float d,r;{R=ceil(d/r/'G'/'\n'*'q');}

pi의 합리적인 근사치는 355/113입니다. 원주 C = 2 * r * PI이므로 pi 대신 tau를 사용할 수 있습니다. 물론 ~ 710 / 113입니다. 710은 2 * 5 * 71의 편리한 인수를가집니다 'G' * '\n'. 반올림을 무한대로 강제하기 위해 하나 ( r/r)를 추가 합니다.

편집 : 내 트릭은 자신의 이익을 위해 너무 영리했습니다. 거리가 원주의 배수라면 당연히 실패했습니다.

온라인으로 사용해보십시오!



2

R , 39 32 바이트

주세페 덕분에 -7 바이트

function(d,r)ceiling(d/(r+r)/pi)

온라인으로 사용해보십시오!

나는 이것이 확실하게 골프를 칠 수 있다고 생각하지만, 나는 그것에 대해 아무것도하기 위해 지금 조금 게으르다.


2

최소 16 바이트

/ tau / ceil int

스택에 배치 된 거리와 반경을 순서대로 가져옵니다. 그런 다음 타우로 나누고 반올림하여 int로 만듭니다.







1

루아 , 61 58 57 49 바이트

function(s,r)return math.ceil(s/(r+r)/math.pi)end

온라인으로 사용해보십시오!

KirillL에게 감사합니다. -8 바이트


나는 Lua를 잘 모르지만 (아마 아직 너무 길다) 함수로서 더 짧은 것으로 보입니다 : 49 바이트
Kirill L.

@KirillL., 나는 여전히 여기서 규칙을 배우고 있습니다. OP의 과제는 입력에 대해 상당히 열려 있습니다. 내 질문은 바이트 수에 대한 프로그램 호출 ()을 계산해야합니까? 그렇지 않다면, 당신은 확실히 좋은 덩어리를 면도합니다.
ouflak

여기에서 매우 일반적인 제출 스타일은 익명 함수 (재귀 적이 지 않는 한 이름을 세지 않아도 됨)이며 반환 값으로 출력됩니다. 함수 호출과 실제 콘솔 인쇄가 포함 된 바닥 글 섹션은 기본적으로 결과를 시각화하는 데 사용되며 점수에는 포함되지 않습니다. BTW, OP의 테스트 예제를 바닥 글에 더 추가하여 한 번에 편리하게 볼 수 있습니다. 경우에 따라서는 전체 프로그램이 실제로 골퍼가 될 수도 있습니다!
Kirill L.


1

Tcl , 50 바이트

proc N d\ r {expr ceil($d/(($r+$r)*acos(-$r/$r)))}

온라인으로 사용해보십시오!


Tcl , 53 바이트

proc N d\ r {expr ceil($d/(($r+$r)*acos(-[incr i])))}

온라인으로 사용해보십시오!

파이 상수 또는 기능이 부족하여 골프 경기를 잃게됩니다!


각 출력이 끝날 때 .0을 제거해야합니까? 더 많은 바이트를 소비하게 될 것입니다!
sergiol

1
[incr i]꽤 영리하지만 당신이 $d/$d또는 $r/$r대신 사용할 수 있다고 생각합니다 .
david

@david의 아이디어 덕분에 바이트가 절약되었습니다!
sergiol

1

PowerShell, 53 52 51 바이트

@mazzy 덕분에
-1 바이트- param()블록 뒤에 세미콜론이 필요 없다는 것을 깨달은 후 -1 바이트

param($d,$r)($a=[math])::ceiling($d/($r+$r)/$a::pi)

온라인으로 사용해보십시오!

두 개의 명령 줄 매개 변수 인 distance -d및 radius 에서 입력을받습니다 -r.


? param($d,$r);($a=[math])::ceiling($d/($r+$r)/$a::pi)
mazzy



0

TI 기본 (83 시리즈), 12 바이트

-int(-Tmax⁻¹min(e^(ΔList(ln(Ans

반경 및 거리 목록으로 입력을 받습니다 ( Ans예 :) {0.9999:12.5663:prgmX.

e^(ΔList(ln(Ans그 거리의 비율을 취하여 min(이것을 숫자로 바꿉니다. 그런 다음 Tmax기본적으로 2π와 같은 그래프 매개 변수 인으로 나눕니다 . 마지막으로 -int(-천장을 차지합니다.


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