Liczba obrotów


10

Zadanie

Napisz funkcję lub program, aby znaleźć liczbę obrotów wymaganych przez koło do przebycia określonej odległości, biorąc pod uwagę jej promień.

Zasady

Dane wejściowe mogą być 2 dodatnimi liczbami wymiernymi i mogą być przyjmowane w dowolnym dogodnym formacie.

Oba wejścia mają tę samą jednostkę.

W kodzie nie mogą znajdować się cyfry 0–9.

Wyjście będzie liczbą całkowitą (w przypadku liczby zmiennoprzecinkowej, zaokrąglenie do nieskończoności)

To jest golf golfowy, więc wygrywa najkrótszy kod

Przykłady

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

5
Prawdopodobnie powinieneś dodać, że cyfry są również zabronione w opcjach kompilatora (lub gdziekolwiek indziej): jeśli ograniczysz to ograniczenie tylko do kodu, za pomocą gcc możemy zrobić coś takiego jak -DP=3.14w flagach kompilatora, który zdefiniowałby Pjako przybliżenie liczby pi, co prawdopodobnie nie to, co zamierzałeś
Annyo

Odpowiedzi:


6

MathGolf , 5 4 bajtów

τ/╠ü

Wypróbuj online!

Wyjaśnienie

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


4

Java 8, 32 30 bajtów

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

Zawiera niedrukowalne \u0002między pojedynczymi cudzysłowami.

Port odpowiedzi Perla 6 na @jOKing .

Wypróbuj online.


Czy to cyfra „1” w twoim kodzie? Myślę, że to może być niedozwolone.
ouflak

4
@ouflak Wygląda na to, że można to naprawić w ten sposób .
Erik the Outgolfer

@ouflak Woops, to był dość głupi błąd. Używam niezadrukowanego, więc nie używam cyfry 2, a potem po prostu używam cyfry 1... Na szczęście Erik ma rację, że zwykły jednoargument negatywny ma taki sam efekt jak +1(często używany pozbyć się nawiasów, ponieważ negatywne i jednostkowe mają wyższy priorytet niż większość innych operatorów).
Kevin Cruijssen

4

Perl 6 , 15 12 bajtów

-3 bajty tjanks do nwellnhof przypominając mi o tau

*/*/τ+|$+!$

Wypróbuj online!

Anonimowy Jakakolwiek lambda, która używa tej formuły (a/b/tau).floor+1. Tau jest dwa razy pi. Dwie anonimowe zmienne $są przymuszane do liczby 0, która jest używana do +|0uzupełnienia liczby (bitowa lub 0) i dodania jednej +!$(plus nie zero).


W kodzie nie mogą znajdować się cyfry 0–9.
Tytus

@Titus Nie mogę uwierzyć, że o tym zapomniałem. Dzięki, naprawione!
Jo King

Czy cyfry w wykładnikach są również dozwolone?
ouflak

3

Python 2 , 47 45 44 43 bajty

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

Wypróbuj online!


  • -2 bajty dzięki flawr
  • -1 bajt, dzięki Jonathan Allan

Ponieważ zagwarantowano, że dane wejściowe są zarówno (ściśle) dodatnie, jak i racjonalne, nigdy nie trafiliśmy na przypadek wymagający dokładnej liczby obrotów, więc myślę, że możemy to zrobić l/(r+r)//pi+l/li zapisać bajt.
Jonathan Allan

@JonathanAllan Thanks :)
TFeld




2

C, 46 bajtów

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

Jestem nowy w PPCG, więc nie jestem pewien, czy muszę liczyć inne części w liczbie bajtów, takie jak

include <math.h>

potrzebne do funkcji ceil, która zwiększy liczbę do 64 bajtów


Witamy w PPCG! To miła pierwsza odpowiedź. Tak, musisz liczyć #includei tym podobne do całkowitej liczby bajtów. Link do internetowego zestawu testów jest zawsze mile widziany, oto jeden, który możesz dołączyć
OOBalance

@OOBalance Cyfry nie są dozwolone w kodzie tego wyzwania;)
Annyo

@Annyo Wiedziałem, że coś zapomniałem :(
OOBalance,

2

Catholicon , 8 bajtów

ċ//ĊǓĊ`Ė

Wyjaśnienie:

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

Nowa wersja (wbudowana pi zrobiła jeden bajt, zmieniono parametry podziału), 5 bajtów

ċ/π/Ǔ




2

C (gcc) , 45 47 45 bajtów

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

Rozsądnym przybliżeniem liczby pi jest 355/113. Ponieważ obwód C = 2 * r * PI, zamiast pi możemy użyć tau, co wtedy wynosi oczywiście ~ 710/113. 710 ma dogodne czynniki 2 * 5 * 71, co jest zwięźle wyrażone jako 'G' * '\n'. Dodajemy jeden ( r/r), aby wymusić zaokrąglanie do nieskończoności.

Edycja: Moja sztuczka była zbyt sprytna dla własnego dobra: oczywiście sprawiła, że ​​zawiodła, jeśli odległość była wielokrotnością obwodu.

Wypróbuj online!



2

R , 39 32 bajty

-7 bajtów Dzięki Giuseppe

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

Wypróbuj online!

Wydaje mi się, że można na pewno zagrać w golfa, ale teraz jestem trochę leniwy, aby coś z tym zrobić


2

min , 16 bajtów

/ tau / ceil int

Zmienia odległość i promień na stosie w tej kolejności. Następnie dzieli przez tau, zaokrągla i tworzy liczbę całkowitą.







1

Lua , 61 58 57 49 bajtów

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

Wypróbuj online!

Dzięki KirillL. -8 bajtów.


Nie znam dużo Lua (więc może wciąż jest za długi), ale wydaje się być krótszy jako funkcja: 49 bajtów
Kirill L.

@KirillL., Wciąż uczę się zasad tutaj. Wyzwanie PO jest dość otwarte na wejściu. Więc moje pytanie brzmi: czy musielibyśmy liczyć twoje wywołanie programu () w stosunku do liczby bajtów? Jeśli nie, to zdecydowanie goli niezły kawałek.
ouflak

Dość powszechnym stylem przekazywania jest tutaj funkcja anonimowa (abyśmy nie musieli liczyć nazwy, chyba że jest rekurencyjna), która wyprowadza wartość zwracaną. Sekcja stopki z wywołaniami funkcji i rzeczywistym drukowaniem na konsolę jest następnie zasadniczo używana do wizualizacji wyników i nie jest wliczana do wyniku. BTW, możesz dodać do stopki więcej przykładów testów OP, aby można je było wygodnie przeglądać jednocześnie. Pamiętaj, że w niektórych przypadkach pełny program może okazać się golfistą!
Kirill L.,


1

Tcl , 50 bajtów

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

Wypróbuj online!


Tcl , 53 bajty

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

Wypróbuj online!

Brak stałej lub funkcji pi powoduje, że przegrywam konkurencję golfową!


Czy muszę usunąć .0 na końcu każdego wyjścia? Sprawiłoby to, że zużyłem więcej bajtów!
sergiol

1
[incr i]jest dość sprytny, ale myślę, że możesz użyć $d/$dlub $r/$rzamiast tego.
David

Zaoszczędziłem trochę bajtów dzięki pomysłowi @ davida!
sergiol

1

PowerShell, 53 52 51 bajtów

-1 bajt dzięki @mazzy
-1 bajt po tym, jak zdałem sobie sprawę, że nie potrzebuję średnika po param()bloku

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

Wypróbuj online!

Pobiera dane wejściowe z dwóch parametrów wiersza polecenia, odległości -di promienia -r.


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


0

Clojure , 50 bajtów

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

Anonimowa funkcja, która przyjmuje dwie liczby całkowite ai bjako argumenty: odpowiednio odległość i promień koła.

Wypróbuj online!

(count " ")2a2πb


0

TI-Basic (seria 83), 12 bajtów

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

Pobiera dane wejściowe jako listę promienia i odległości w Ans: na przykład {0.9999:12.5663:prgmX.

e^(ΔList(ln(Answeźmie stosunek tych odległości i min(zamieni to na liczbę. Następnie dzielimy przez Tmax, który jest parametrem graficznym domyślnie równym 2π. Wreszcie -int(-bierze pułap.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.