Numero di rotazioni


10

Compito

Scrivi una funzione o un programma per trovare il numero di rotazioni richieste da una ruota per percorrere una determinata distanza, dato il suo raggio.

Regole

L'input può essere 2 numeri razionali positivi e può essere preso in qualsiasi formato conveniente.

Entrambi gli ingressi sono della stessa unità.

Non ci devono essere cifre 0-9 nel codice.

L'output sarà un numero intero (in caso di float, arrotondato all'infinito)

Questo è code-golf, quindi vince il codice più corto

Esempi

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

5
Probabilmente dovresti aggiungere che le cifre sono vietate anche nelle opzioni del compilatore (o altrove): se limiti questo vincolo solo al codice, con gcc possiamo fare qualcosa come -DP=3.14nei flag del compilatore, che definirebbe Pun'approssimazione di pi, che è probabilmente non quello che intendevi
Annyo,

Risposte:


6

MathGolf , 5 4 byte

τ/╠ü

Provalo online!

Spiegazione

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


4

Java 8, 32 30 byte

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

Contiene non stampabili \u0002tra virgolette singole.

Porta della risposta Perl 6 di @jOKing .

Provalo online.


È la cifra "1" nel tuo codice? Penso che potrebbe non essere permesso.
ouflak,

4
@ouflak Sembra che possa essere risolto in questo modo .
Erik the Outgolfer,

@ouflak Woops, è stato un errore piuttosto stupido .. Usare lo non stampabile quindi non uso la cifra 2, quindi uso semplicemente la cifra 1... Fortunatamente Erik ha ragione nel dire che un semplice unario negativo ha lo stesso effetto di +1(spesso usato sbarazzarsi della parentesi poiché il negativo e l'unario hanno una precedenza maggiore rispetto alla maggior parte degli altri operatori).
Kevin Cruijssen,

4

Perl 6 , 15 12 byte

-3 byte va a Nwellnhof per ricordarmi di Tau

*/*/τ+|$+!$

Provalo online!

Anonimo Qualunque lambda che utilizza la formula (a/b/tau).floor+1. Tau è due volte pi. Le due variabili anonime $vengono obbligate al numero 0, che viene utilizzato per +|0inserire il numero (bit a bit o 0) e aggiungerne uno +!$(più non zero).


Non ci devono essere cifre 0-9 nel codice.
Tito

@Titus Non riesco a credere di averlo dimenticato. Grazie, risolto!
Jo King,

Sono consentite anche le cifre degli esponenti?
ouflak,

3

Python 2 , 47 45 44 43 byte

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

Provalo online!


  • -2 byte, grazie a flawr
  • -1 byte, grazie a Jonathan Allan

Dato che gli input sono stati garantiti sia (rigorosamente) sia positivi che razionali, non abbiamo mai colto il caso limite di richiedere un numero esatto di rotazioni, quindi penso che possiamo fare l/(r+r)//pi+l/le salvare un byte.
Jonathan Allan,

@JonathanAllan Thanks :)
TFeld




2

C, 46 byte

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

Sono nuovo di PPCG, quindi non sono sicuro di dover contare altre parti nel conteggio dei byte, come ad esempio

include <math.h>

necessario per la funzione ceil, che aumenterà il conteggio a 64 byte


Benvenuti in PPCG! Questa è una bella prima risposta. Sì, devi contare #includee simili per il totale dei tuoi byte. Un collegamento a una suite di test online è sempre apprezzato, eccone uno che sei libero di incorporare nel tuo post: tio.run/…
OOBalance

Le cifre @OOBalance non sono consentite nel codice per questa sfida;)
Annyo

@Annyo sapevo che stavo dimenticando qualcosa :(
OOBalance il

2

Catholicon , 8 byte

ċ//ĊǓĊ`Ė

Spiegazione:

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

Nuova versione (pi builtin fatto un byte, parametri di divisione scambiati), 5 byte

ċ/π/Ǔ



2

MathGolf , 6 5 byte

∞/π/ü

Porta semi del commento Python 2 di @flawr .
Accetta l'input nell'ordine radius distance.

-1 byte perché ceilbuiltin è appena stato aggiunto, sostituendo il floor+1.

Provalo online .

Spiegazione:

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

2

C (gcc) , 45 47 45 byte

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

Un'approssimazione ragionevole di pi è 355/113. Poiché la circonferenza C = 2 * r * PI, possiamo invece di usare tau, che ovviamente è ~ 710/113. 710 sembra avere i convenienti fattori 2 * 5 * 71, che è espresso in modo compatto come 'G' * '\n'. Aggiungiamo uno ( r/r) per forzare l'arrotondamento all'infinito.

Modifica: il mio trucco era troppo intelligente per il suo bene: ovviamente lo faceva fallire se la distanza era un multiplo della circonferenza.

Provalo online!



2

R , 39 32 byte

-7 byte Grazie a Giuseppe

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

Provalo online!

Sento che questo potrebbe sicuramente essere giocato a golf, ma in questo momento sono un po 'pigro per fare qualcosa al riguardo


2

min , 16 byte

/ tau / ceil int

Prende la distanza e il raggio messi in pila in quell'ordine. Quindi si divide per tau, round e rende int.







1

Lua , 61 58 57 49 byte

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

Provalo online!

Grazie a KirillL. -8 byte.


Non conosco molto Lua (quindi forse è ancora troppo lungo), ma sembra essere più breve in funzione: 49 byte
Kirill L.

@KirillL., Sto ancora imparando le regole qui. La sfida del PO è piuttosto aperta sull'input. Quindi la mia domanda è: dovremmo contare la tua chiamata di programma () rispetto al conteggio byte? In caso contrario, il tuo è sicuramente un bel pezzo.
ouflak,

Uno stile abbastanza comune di presentazione qui è una funzione anonima (in modo che non dobbiamo contare il nome, a meno che non sia ricorsivo), che genera il suo valore di ritorno. La sezione piè di pagina con le chiamate di funzione e la stampa effettiva sulla console viene quindi sostanzialmente utilizzata per visualizzare i risultati e non conta ai fini del punteggio. A proposito, è possibile aggiungere più pieni esempi di test del piè di pagina in modo che possano essere comodamente visualizzati tutti in una volta. Si noti che in alcuni casi un programma completo può effettivamente rivelarsi più golfista!
Kirill L.,


1

Tcl , 50 byte

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

Provalo online!


Tcl , 53 byte

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

Provalo online!

La mancanza di una costante o funzione pi mi fa perdere la competizione di golf!


Devo rimuovere lo .0 alla fine di ogni uscita? Mi farebbe consumare più byte!
sergiol,

1
[incr i]è abbastanza intelligente ma penso che tu possa usare $d/$do $r/$rinvece.
David,

Salvati alcuni byte grazie all'idea di @ david!
sergiol,

1

PowerShell, 53 52 51 byte

-1 byte grazie a @mazzy
-1 byte dopo aver realizzato che non ho bisogno di un punto e virgola dopo il param()blocco

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

Provalo online!

Accetta input da due parametri della riga di comando, distanza -de raggio -r.


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


0

Clojure , 50 byte

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

Una funzione anonima che accetta due numeri interi aeb come argomenti: rispettivamente la distanza e il raggio della ruota.

Provalo online!

(count " ")valuta 2, quindi questa funzione implementaun'2πB.


0

TI-Basic (serie 83), 12 byte

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

Accetta input come un elenco di raggio e distanza Ans: ad esempio {0.9999:12.5663:prgmX,.

e^(ΔList(ln(Ansprenderà il rapporto di quelle distanze e lo min(trasformerà in un numero. Quindi dividiamo per Tmax, che è un parametro grafico che è uguale a 2π per impostazione predefinita. Infine, -int(-prende il soffitto.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.