Nombre de rotations

10

Tâche

Écrivez une fonction ou un programme pour trouver le nombre de tours requis par une roue pour parcourir une distance donnée, compte tenu de son rayon.

Règles

L'entrée peut être 2 nombres rationnels positifs et peut être prise dans n'importe quel format pratique.

Les deux entrées sont de la même unité.

Il ne doit pas y avoir de chiffres de 0 à 9 dans votre code.

La sortie sera un entier (en cas de flottant, arrondi à l'infini)

C'est le code-golf donc le code le plus court gagne

Exemples

distance radius  output
10       1       2
50       2       4
52.22    4       3
3.4      0.08    7
12.5663  0.9999  3
Vedant Kandoi
la source
5
Vous devriez probablement ajouter que les chiffres sont également interdits dans les options du compilateur (ou n'importe où ailleurs): si vous limitez cette contrainte au code uniquement, avec gcc nous pouvons faire quelque chose comme -DP=3.14dans les drapeaux du compilateur, qui définirait Pcomme une approximation de pi, ce qui est probablement pas ce que vous
vouliez

Réponses:

6

MathGolf , 5 4 octets

τ/╠ü

Essayez-le en ligne!

Explication

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

APL + WIN, 9 octets

Demande le rayon suivi de la distance:

⌈⎕÷○r+r←⎕

Essayez-le en ligne! Gracieuseté de Dyalog Classic

Explication:

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

⌈⎕÷ prompt for distance, divide by result above and take ceiling
Graham
la source
⌈⎕÷○+⍨⎕fonctionne pour 7 octets.
J. Sallé
@ J.Sallé Merci mais malheureusement mon ancien interprète APL + WIN n'a pas l'opérateur ⍨
Graham
4

Java 8, 32 30 octets

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

Contient non imprimable \u0002entre les guillemets simples.

Port de la réponse Perl 6 de @jOKing .

Essayez-le en ligne.

Kevin Cruijssen
la source
Est-ce le chiffre «1» dans votre code? Je pense que cela pourrait ne pas être autorisé.
ouflak
4
@ouflak On dirait que ça peut être réparé comme ça .
Erik the Outgolfer
@ouflak Woops, c'était une erreur assez stupide .. Utiliser l'imprimable donc je n'utilise pas le chiffre 2, et ensuite juste utiliser le chiffre 1... Heureusement, Erik a bien raison qu'un simple unaire négatif a le même effet que +1(souvent utilisé pour se débarrasser des parenthèses car le négatif et l'unaire ont une priorité plus élevée que la plupart des autres opérateurs).
Kevin Cruijssen
4

Perl 6 , 15 12 octets

-3 octets tjanks à nwellnhof me rappelant tau

*/*/τ+|$+!$

Essayez-le en ligne!

Anonymous Quel que soit lambda qui utilise la formule (a/b/tau).floor+1. Tau est deux fois pi. Les deux variables anonymes $sont contraintes au nombre 0, qui est utilisé pour fixer le nombre +|0(au niveau du bit ou 0) et en ajouter une +!$(plus pas zéro).

Jo King
la source
Il ne doit pas y avoir de chiffres de 0 à 9 dans votre code.
Titus
@Titus Je ne peux pas croire que j'ai oublié ça. Merci, réparé!
Jo King
Les chiffres des exposants sont-ils également autorisés?
ouflak
3

Python 2 , 47 45 44 43 octets

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

Essayez-le en ligne!


  • -2 octets, grâce à flawr
  • -1 octet, merci à Jonathan Allan
TFeld
la source
Étant donné que les entrées ont été garanties à la fois (strictement) positives et rationnelles, nous ne sommes jamais parvenus à exiger un nombre exact de rotations, donc je pense que nous pouvons le faire l/(r+r)//pi+l/let économiser un octet.
Jonathan Allan
@JonathanAllan Merci :)
TFeld
2

C, 46 octets

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

Je suis nouveau sur PPCG, donc je ne sais pas si je dois compter d'autres parties dans le nombre d'octets, comme le

include <math.h>

nécessaire pour la fonction ceil, qui augmentera le nombre à 64 octets

bznein
la source
Bienvenue chez PPCG! Ceci est une belle première réponse. Oui, vous devez compter #includeet ainsi de suite pour votre total d'octets. Un lien vers une suite de tests en ligne est toujours apprécié, en voici un que vous êtes libre d'intégrer dans votre message: tio.run/…
OOBalance
@OOBalance Les chiffres ne sont pas autorisés dans le code pour ce défi;)
Annyo
@Annyo, je savais que j'oubliais quelque chose :(
OOBalance
2

Catholicon , 8 octets

ċ//ĊǓĊ`Ė

Explication:

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

Nouvelle version (pi intégré fait un octet, paramètres de division échangés), 5 octets

ċ/π/Ǔ
Okx
la source
2

J , 10 9 octets

>.@%o.@+:

Essayez-le en ligne!

Galen Ivanov
la source
1
+1 pour une utilisation élégante du crochet dyadique
Jonah
@Jonah Merci!
Galen Ivanov
2

MathGolf , 6 5 octets

∞/π/ü

Semi-port du commentaire Python 2 de @flawr .
Prend l'entrée dans l'ordre radius distance.

-1 octet car la fonction ceilintégrée vient d'être ajoutée, remplaçant le floor+1.

Essayez-le en ligne .

Explication:

        # Double the first (implicit) input
 /       # Divide the second (implicit) input by it
  π/     # Divide it by PI
    ü    # Ceil (and output implicitly)
Kevin Cruijssen
la source
2

C (gcc) , 45 47 45 octets

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

Une approximation raisonnable de pi est 355/113. Puisque la circonférence C = 2 * r * PI, on peut au lieu de pi utiliser tau, qui est alors bien sûr ~ 710/113. 710 se trouve avoir les facteurs pratiques 2 * 5 * 71, ce qui s'exprime de manière compacte 'G' * '\n'. Nous ajoutons un ( r/r) pour forcer l'arrondi à l'infini.

Edit: Mon truc était trop intelligent pour son bien: il l'a bien sûr fait échouer si la distance était un multiple de la circonférence.

Essayez-le en ligne!

gastropner
la source
2

R , 39 32 octets

-7 octets Merci à Giuseppe

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

Essayez-le en ligne!

Je pense que cela pourrait certainement être joué au golf, mais je suis un peu paresseux en ce moment pour faire quoi que ce soit

Sumner18
la source
2

min , 16 octets

/ tau / ceil int

Prend la distance et le rayon mis sur la pile dans cet ordre. Divise ensuite par tau, arrondit et fait int.

Panda0nEarth
la source
1

JavaScript (nœud Babel) , 25 octets

-2 octets en utilisant @flawr comment = D. -1 de @Kevin. -7 de @Shaggy

a=>b=>-~(a/(b+b)/Math.PI)

Essayez-le en ligne!

Luis felipe De jesus Munoz
la source
a=>b=>Math.ceil(a/(b+b)/Math.PI)Est juste 32 octets. :)
Kevin Cruijssen
25 octets
Shaggy
1

Haskell, 25 octets

f d r=ceiling(d/(r+r)/pi)
note
la source
Vous pouvez définir un opérateur à la (!)place de fet utiliser à la ceiling$place de ceiling(..)qui vous fait économiser 3 octets: Essayez-le en ligne!
ბიმო
1

Lua , 61 58 57 49 octets

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

Essayez-le en ligne!

Merci à KirillL. -8 octets.

ouflak
la source
Je ne connais pas beaucoup Lua (alors peut-être que c'est encore trop long), mais il semble être plus court en fonction: 49 octets
Kirill L.
@KirillL., J'apprends toujours les règles ici. Le défi de l'OP est assez ouvert sur l'entrée. Donc ma question est, devrions-nous compter votre appel de programme () par rapport au nombre d'octets? Sinon, le vôtre rase définitivement une belle partie.
ouflak
Un style de soumission assez courant ici est une fonction anonyme (de sorte que nous n'avons pas à compter le nom, sauf s'il est récursif), qui sort par sa valeur de retour. La section de pied de page avec les appels de fonction et l'impression réelle sur la console est ensuite essentiellement utilisée pour visualiser les résultats et ne compte pas dans votre score. BTW, vous pouvez ajouter plus d'exemples de test de l'OP dans le pied de page, afin qu'ils puissent être facilement consultés à la fois. Notez que dans certains cas, un programme complet peut s'avérer être plus golfeur!
Kirill L.
1

Tcl , 50 octets

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

Essayez-le en ligne!


Tcl , 53 octets

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

Essayez-le en ligne!

Le manque de constante ou de fonction pi me fait perdre la compétition de golf!

sergiol
la source
Dois-je supprimer le .0 à la fin de chaque sortie? Cela me ferait consommer plus d'octets!
sergiol
1
[incr i]est assez intelligent mais je pense que vous pouvez utiliser $d/$dou à la $r/$rplace.
david
Sauvegardé quelques octets grâce à l'idée de @ david!
sergiol
1

PowerShell, 53 52 51 octets

-1 octet grâce à @mazzy
-1 octet après avoir réalisé que je n'ai pas besoin d'un point-virgule après le param()bloc

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

Essayez-le en ligne!

Prend l'entrée de deux paramètres de ligne de commande, la distance -det le rayon -r.

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

JavaScript (Babel Node), 23 octets

s=>r=>-~(s/2/r/Math.PI)

Essayez-le en ligne!

Igor Sowinski
la source
2
Il ne doit pas y avoir de chiffres de 0 à 9 dans votre code.
Dennis
0

Clojure , 50 octets

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

Une fonction anonyme qui accepte deux entiers aet bcomme arguments: la distance et le rayon de la roue, respectivement.

Essayez-le en ligne!

(count " ")2une2πb

TheGreatGeek
la source
0

TI-Basic (série 83), 12 octets

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

Prend l'entrée comme une liste de rayon et de distance dans Ans : par exemple {0.9999:12.5663:prgmX,.

e^(ΔList(ln(Ansprendra le rapport de ces distances et le min(transformera en nombre. Ensuite, nous divisons par Tmax, qui est un paramètre graphique égal à 2π par défaut. Enfin, -int(-prend le plafond.

Misha Lavrov
la source