回転数


10

仕事

関数またはプログラムを記述して、特定の半径を与えられた距離を移動するためにホイールが必要とする回転数を見つけます。

ルール

入力は2つの正の有理数にすることができ、任意の便利な形式で取得できます。

両方の入力は同じ単位です。

コードに数字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

APL + WIN、9バイト

半径に続いて距離を求めるプロンプト:

⌈⎕÷○r+r←⎕

オンラインでお試しください!Dyalog Classicの好意による

説明:

○r+r←⎕ prompt for radius and double it and multiply by pie

⌈⎕÷ prompt for distance, divide by result above and take ceiling

⌈⎕÷○+⍨⎕7バイトで動作します。
J.サレ

@J.Salléありがとう、残念ながら私の古代のAPL + WINインタプリタには⍨演算子がありません
Graham

4

Java 8、32 30バイト

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

\u0002単一引用符の間に印刷できないものが含まれています。

@jOKingのPerl 6回答のポート。

オンラインでお試しください。


それはあなたのコードの数字「1」ですか?それは許されないかもしれないと思います。
ouflak

4
@ouflak このように修正できるようです。
Erik the Outgolfer 2018年

私は数字を使用しないように印刷できないを使用して...かなり愚かな間違いだった@ouflak Woops、 2、その後、単に数字を使用1幸いにもエリックは単項シンプルな負のと同じ効果がある右のことを確かに... +1よく使用します(負と単項は他のほとんどの演算子よりも優先順位が高いので、括弧を取り除くために)。
Kevin Cruijssen、2018年

4

Perl 6の15の 12バイト

タウについて私に思い出させるnwellnhofへの-3バイトのtjanks

*/*/τ+|$+!$

オンラインでお試しください!

数式を使用する匿名Whatwhatラムダ(a/b/tau).floor+1。タウはpiの2倍です。2つの匿名変数$は数値0に強制変換されます。数値は、数値をフロア+|0(ビット単位または0)して、1を追加する+!$(ゼロではない)ために使用されます。


コードに数字0〜9があってはなりません。
タイタス

@Titus忘れられたなんて信じられない。ありがとう、修正しました!
ジョーキング

指数の数字も使用できますか?
ouflak 2018年

3

パイソン247の 45 44 43バイト

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

オンラインでお試しください!


  • -2バイト、flawrのおかげ
  • ジョナサンアランのおかげで-1バイト

入力は(厳密に)正であり、かつ合理的であることが保証されているので、正確な回転数を必要とするエッジケースにぶつかることはl/(r+r)//pi+l/lありません。
ジョナサンアラン

@JonathanAllanありがとう:)
TFeld 2018年




2

C、46バイト

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

私はPPCGを初めて使用するので、バイトカウントの他の部分をカウントする必要があるかどうかはわかりません。

include <math.h>

カウントを64バイトに上げるceil関数に必要


PPCGへようこそ!これは良い最初の答えです。はい、#includeバイト合計に向けてカウントする必要があります。オンラインテストスイートへのリンクは常に高く評価されています。投稿に自由に組み込むことができるものは次のとおりです。tio.run
OOBalance

@OOBalance Digitsは、このチャレンジのコードでは使用できません;)
Annyo

@Annyo私は何かを忘れていたことを知っていました:(
OOBalance '21

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の代わりにタウを使用できます。これは、もちろん〜710/113です。710には、便利な要素2 * 5 * 71があり'G' * '\n'ます。1つ追加します(r/r)をして、無限に丸めることを強制します。

編集:私のトリックはそれ自体のためには賢すぎました:もちろん、距離が円周の倍数である場合は失敗しました。

オンラインでお試しください!




2

min、16バイト

/ tau / ceil int

スタックに置かれた距離と半径をこの順序で取得します。次に、タウで割り、丸め、intにします。







1

Lua61 58 57 49バイト

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

オンラインでお試しください!

KirillLに感謝します。-8バイト。


私は多くのLua(ので、多分それはあまりにも長い間、まだだが)知りませんが、関数としても短くなるように表示されます。49バイト
キリルL.

@KirillL。、私はまだここでルールを学んでいます。OPの課題は、入力に関してかなりオープンです。だから私の質問は、バイト数に対してプログラムのcall()を数える必要があるのでしょうか?そうでない場合、あなたは間違いなく素晴らしいチャンクを剃っています。
ouflak

ここでの送信の非常に一般的なスタイルは、匿名関数(再帰的でない限り、名前を数える必要がないようにする)で、その戻り値によって出力されます。関数呼び出しとコンソールへの実際の印刷を含むフッターセクションは、基本的に結果の視覚化に使用され、スコアにはカウントされません。ところで、OPのテスト例をフッターに追加して、一度にすべてを簡単に表示できるようにすることができます。場合によっては、完全なプログラムが実際にゴルファーになることがあります!
キリル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バイトブロックの
後にセミコロンが必要ないことに気付いた後-1バイトparam()

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

オンラインでお試しください!

2つのコマンドラインパラメータ、distance -dおよびradius から入力を受け取ります-r


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


0

Clojure、50バイト

(fn[a b](int(Math/ceil(/ a Math/PI(count"  ")b))))

2つの整数を受け入れる無名関数ab引数として:距離とホイールの半径、それぞれ。

オンラインでお試しください!

(count " ")評価結果2はなので、この関数はa2πb


0

TI-Basic(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.