转数


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

Answers:


6

MathGolf5 4字节

τ/╠ü

在线尝试!

说明

τ      Push tau (2*pi)
 /     Divide the first argument (total distance) by tau
  ╠    Reverse divide (computes (distance/tau)/radius)
   ü   Ceiling


4

Java 8,32 30字节

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

\u0002在单引号之间包含不可打印的内容。

@jOKing的Perl 6答案的端口。

在线尝试。


这是您代码中的数字“ 1”吗?我认为这可能是不允许的。
ouflak

4
@ouflak看起来可以像这样固定。
Erik the Outgolfer

@ouflak Woops,那是一个非常愚蠢的错误。.使用不可打印的内容,因此我不使用digit 2,然后仅使用digit 1...幸运的是,Erik的确很正确,一个简单的负一元与+1(经常使用消除括号,因为负数和一元数的优先级高于大多数其他运算符)。
凯文·克鲁伊森

4

Perl 6的15 12个字节

-3字节向nwellnhof发出的响声提醒我有关tau的信息

*/*/τ+|$+!$

在线尝试!

匿名使用该公式的任何lambda (a/b/tau).floor+1。头是圆周率的两倍。这两个匿名变量$被强制为number 0,该变量用于对数字进行下限+|0(按位或0)并加一+!$(不加零)。


您的代码中不得包含任何数字0-9。
泰特斯

@Titus我不敢相信我忘记了这一点。谢谢,固定!
Jo King

是否也允许使用指数中的数字?
ouflak

3

Python 2中47 45 44 43个字节

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

在线尝试!


  • -2个字节,由于有瑕疵
  • -1字节,感谢乔纳森·艾伦

由于保证了输入(严格地)是正数和理性的,所以我们从来没有碰到需要精确旋转数的极端情况,因此我认为我们可以做到l/(r+r)//pi+l/l并节省一个字节。
乔纳森·艾伦,

@JonathanAllan谢谢:)
TFeld




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内置一个字节,交换除法参数),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,我们可以用tau代替pi,这当然是〜710/113。710恰好具有便利因子2 * 5 * 71,其紧凑表示为'G' * '\n'我们加一个(r/r)强制舍入到无穷大。

编辑:我的技巧太聪明了,它本身没有好处:如果距离是圆周的倍数,它当然会使它失败。

在线尝试!



2

R39 32字节

-7个字节,感谢Giuseppe

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

在线尝试!

我觉得这肯定可以打高尔夫球,但是我现在有点懒惰


2

最小 16字节

/ tau / ceil int

以该顺序获取堆栈上的距离和半径。然后除以tau,四舍五入为整数。







1

的Lua61个 58 57 49字节

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

在线尝试!

感谢KirillL。-8个字节。


我对Lua不太了解(所以也许它仍然太长),但是它似乎更短一些:49字节
Kirill L.

@KirillL。,我仍在这里学习规则。OP在输入方面的挑战是相当开放的。所以我的问题是,我们是否必须将程序call()与字节数进行计数?如果没有,您肯定会刮掉一大堆。
ouflak

此处一种非常常见的提交样式是匿名函数(这样,除非它是递归的,否则我们不必计算名称),该函数按其返回值输出。然后,带有函数调用和实际打印到控制台的页脚部分基本上用于可视化结果,并且不会计入您的分数。顺便说一句,您可以在页脚中添加更多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])))}

在线尝试!

缺少pi常数或函数会使我输掉高尔夫球比赛!


我需要删除每个输出末尾的.0吗?这会让我消耗更多的字节!
sergiol

1
[incr i]非常聪明,但我认为您可以使用$d/$d$r/$r代替。
大卫

由于@david的想法,节省了一些字节!
sergiol



0

Clojure,50个字节

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

一个匿名函数,它接受两个整数ab作为参数:距离和车轮的半径。

在线尝试!

(count " ")2a2π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(-登顶。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.