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
Wedant Kandoi
źródło
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
maxb
źródło
4

APL + WIN, 9 bajtów

Monity o promień, a następnie odległość:

⌈⎕÷○r+r←⎕

Wypróbuj online! Dzięki uprzejmości Dyalog Classic

Wyjaśnienie:

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

⌈⎕÷ prompt for distance, divide by result above and take ceiling
Graham
źródło
⌈⎕÷○+⍨⎕działa na 7 bajtów.
J. Sallé
@ J.Sallé Dzięki, ale niestety mój starożytny interpreter APL + WIN nie ma operatora ⍨
Graham
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.

Kevin Cruijssen
źródło
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).

Jo King
źródło
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
TFeld
źródło
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

bznein
źródło
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

ċ/π/Ǔ
Okx
źródło
2

J , 10 9 bajtów

>.@%o.@+:

Wypróbuj online!

Galen Iwanow
źródło
1
+1 za eleganckie użycie dyadycznego haczyka
Jonah
@Jonah Dziękuję!
Galen Iwanow
2

Stax , 5 bajtów

Vt*/e

Uruchom i debuguj

Vt*   multiply by tau (2pi)
/     divide
e     ceiling
rekurencyjny
źródło
2

MathGolf , 6 5 bajtów

∞/π/ü

Częściowy port komentarza @flawr w Python 2 .
Pobiera dane wejściowe w kolejności radius distance.

-1 bajt, ponieważ ceilwłaśnie dodano wbudowane, zastępując floor+1.

Wypróbuj online .

Wyjaśnienie:

        # Double the first (implicit) input
 /       # Divide the second (implicit) input by it
  π/     # Divide it by PI
    ü    # Ceil (and output implicitly)
Kevin Cruijssen
źródło
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!

gastropner
źródło
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ć

Sumner18
źródło
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ą.

Panda0nEarth
źródło
1

JavaScript (węzeł Babel) , 25 bajtów

-2 bajty przy użyciu komentarza @flawr = D. -1 od @Kevin. -7 od @Shaggy

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

Wypróbuj online!

Luis Felipe De Jesus Munoz
źródło
Ma tylko a=>b=>Math.ceil(a/(b+b)/Math.PI)32 bajty. :)
Kevin Cruijssen
25 bajtów
Shaggy
1

Haskell, 25 bajtów

f d r=ceiling(d/(r+r)/pi)
notatka
źródło
Możesz zdefiniować operatora (!)zamiast fi używać ceiling$zamiast tego ceiling(..)oszczędza 3 bajty: Wypróbuj online!
ბიმო
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.

ouflak
źródło
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ą!

sergiol
źródło
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.

Gabriel Mills
źródło
? param($d,$r);($a=[math])::ceiling($d/($r+$r)/$a::pi)
mazzy
0

JavaScript (węzeł Babel), 23 bajty

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

Wypróbuj online!

Igor Sowiński
źródło
2
W kodzie nie mogą znajdować się cyfry 0–9.
Dennis
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

TheGreatGeek
źródło
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.

Misza Ławrow
źródło