Jumlah rotasi


10

Tugas

Tulis fungsi atau program untuk menemukan jumlah rotasi yang diperlukan oleh roda untuk menempuh jarak tertentu, dengan radiusnya.

Aturan

Input dapat berupa 2 angka rasional positif dan dapat diambil dalam format apa pun yang nyaman.

Kedua input memiliki unit yang sama.

Tidak boleh ada angka 0-9 dalam kode Anda.

Output akan berupa bilangan bulat (jika mengambang, bulat hingga tak terbatas)

Ini adalah kode-golf sehingga kode terpendek menang

Contohnya

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

5
Anda mungkin harus menambahkan bahwa digit juga dilarang dalam opsi kompiler (atau di mana pun): jika Anda membatasi batasan ini hanya untuk kode, dengan gcc kita dapat melakukan sesuatu seperti -DP=3.14pada flag compiler, yang akan didefinisikan Psebagai perkiraan pi, yang mungkin merupakan bukan yang Anda maksud
Annyo

Jawaban:


6

MathGolf , 5 4 byte

τ/╠ü

Cobalah online!

Penjelasan

τ      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/'')

Berisi yang tidak dapat dicetak di \u0002antara tanda kutip tunggal.

Port of @jOKing 's Perl 6 menjawab .

Cobalah online.


Apakah itu angka '1' dalam kode Anda? Saya pikir itu mungkin tidak diizinkan.
ouflak

4
@ouflak Sepertinya bisa diperbaiki seperti ini .
Erik the Outgolfer

@ouflak Woops, itu adalah kesalahan yang sangat bodoh .. Menggunakan yang tidak patut jadi saya tidak menggunakan digit 2, dan kemudian hanya menggunakan digit 1... Untungnya Erik memang benar bahwa unary negatif sederhana memiliki efek yang sama seperti +1(sering digunakan untuk menghilangkan tanda kurung karena negatif dan unary memiliki prioritas lebih tinggi daripada kebanyakan operator lain).
Kevin Cruijssen

4

Perl 6 , 15 12 byte

-3 byte tjanks untuk nwellnhof mengingatkan saya tentang tau

*/*/τ+|$+!$

Cobalah online!

Anonim Apapun lambda yang menggunakan formula (a/b/tau).floor+1. Tau dua kali pi. Dua variabel anonim $dipaksa untuk nomor 0, yang digunakan untuk lantai nomor +|0(bitwise atau 0) dan tambahkan satu +!$(ditambah bukan nol).


Tidak boleh ada angka 0-9 dalam kode Anda.
Titus

@Itus saya tidak percaya saya lupa itu. Terima kasih sudah diperbaiki!
Jo King

Apakah angka dalam eksponen juga diperbolehkan?
ouflak

3

Python 2 , 47 45 44 43 byte

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

Cobalah online!


  • -2 byte, terima kasih kepada flawr
  • -1 byte, terima kasih kepada Jonathan Allan

Karena input telah dijamin baik (benar-benar) positif dan rasional, kami tidak pernah mencapai kasus tepi yang membutuhkan jumlah rotasi yang tepat, jadi saya pikir kami dapat melakukan l/(r+r)//pi+l/ldan menghemat satu byte.
Jonathan Allan

@JonathanAllan Terima kasih :)
TFeld




2

C, 46 byte

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

Saya baru untuk PPCG, jadi saya tidak yakin apakah saya harus menghitung bagian lain dalam jumlah byte, seperti

include <math.h>

diperlukan untuk fungsi ceil, yang akan naik hitungan menjadi 64 byte


Selamat datang di PPCG! Ini jawaban pertama yang bagus. Ya, Anda perlu menghitung #includedan sejenisnya terhadap total byte Anda. Tautan ke test suite online selalu dihargai, inilah yang Anda bebas untuk memasukkannya ke dalam posting Anda: tio.run/…
OOBalance

@OOBalance Digit tidak diperbolehkan dalam kode untuk tantangan ini;)
Annyo

@Annyo aku tahu aku lupa sesuatu :(
OOBalance

2

Catholicon , 8 byte

ċ//ĊǓĊ`Ė

Penjelasan:

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

Versi baru (pi builtin dibuat satu byte, parameter pembagian bertukar), 5 byte

ċ/π/Ǔ



2

MathGolf , 6 5 byte

∞/π/ü

Semi-port dari komentar Python 2 @ flawr .
Mengambil input dalam urutan radius distance.

-1 byte karena ceilbuiltin baru saja ditambahkan, menggantikan floor+1.

Cobalah online .

Penjelasan:

        # 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');}

Perkiraan pi yang masuk akal adalah 355/113. Karena keliling C = 2 * r * PI, kita bisa bukannya pi menggunakan tau, yang tentu saja ~ 710/113. 710 kebetulan memiliki faktor nyaman 2 * 5 * 71, yang secara ringkas dinyatakan sebagai 'G' * '\n'. Kami menambahkan satu ( r/r) untuk memaksa pembulatan hingga tak terbatas.

Sunting: Trik saya terlalu pintar untuk kebaikannya sendiri: tentu saja membuatnya gagal jika jaraknya kelipatan dari kelilingnya.

Cobalah online!



2

R , 39 32 byte

-7 byte Berkat Giuseppe

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

Cobalah online!

Saya merasa ini pasti golf, tapi saya agak malas sekarang untuk melakukan apa-apa


2

min , 16 byte

/ tau / ceil int

Mengambil jarak dan jari-jari diletakkan di tumpukan dalam urutan itu. Kemudian membaginya dengan tau, bulat, dan membuat int.






1

Haskell, 25 byte

f d r=ceiling(d/(r+r)/pi)

Anda dapat menetapkan operator (!)alih-alih fdan menggunakan ceiling$alih-alih ceiling(..)yang menghemat 3 byte: Coba online!
ბიმო

1

Lua , 61 58 57 49 byte

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

Cobalah online!

Terima kasih untuk KirillL. -8 byte.


Saya tidak tahu banyak Lua (jadi mungkin masih terlalu lama), tetapi tampaknya lebih pendek sebagai fungsi: 49 byte
Kirill L.

@ KirillL., Saya masih belajar aturan di sini. Tantangan OP cukup terbuka pada input. Jadi pertanyaan saya adalah, apakah kita harus menghitung panggilan program Anda () terhadap jumlah byte? Jika tidak, Anda pasti memotong sepotong yang bagus.
ouflak

Gaya penyerahan yang cukup umum di sini adalah fungsi anonim (sehingga kita tidak perlu menghitung nama, kecuali itu bersifat rekursif), yang ditampilkan berdasarkan nilai baliknya. Bagian footer dengan panggilan fungsi dan pencetakan aktual ke konsol pada dasarnya digunakan untuk memvisualisasikan hasil dan tidak diperhitungkan dalam skor Anda. BTW, Anda dapat menambahkan lebih banyak contoh uji OP ke footer, sehingga dapat dengan mudah dilihat sekaligus. Perhatikan bahwa dalam beberapa kasus program penuh sebenarnya bisa berubah menjadi golfier!
Kirill L.


1

Tcl , 50 byte

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

Cobalah online!


Tcl , 53 byte

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

Cobalah online!

Kurangnya konstanta pi atau fungsi membuat saya kehilangan kompetisi golf!


Apakah saya perlu menghapus .0 di akhir setiap output? Itu akan membuat saya mengkonsumsi lebih banyak byte!
sergiol

1
[incr i]cukup pintar tapi saya pikir Anda bisa menggunakan $d/$datau $r/$rsebaliknya.
david

Menyimpan beberapa byte berkat ide @ david!
sergiol

1

PowerShell, 53 52 51 byte

-1 byte terima kasih kepada @mazzy
-1 byte setelah saya menyadari saya tidak perlu titik koma setelah param()blok

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

Cobalah online!

Mengambil input dari dua parameter baris perintah, jarak -ddan jari-jari -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))))

Fungsi anonim yang menerima dua bilangan bulat adan bsebagai argumen: jarak dan jari-jari roda masing-masing.

Cobalah online!

(count " ")2a2πb


0

TI-Basic (83 series), 12 byte

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

Mengambil input sebagai daftar radius dan jarak di Ans: misalnya {0.9999:12.5663:prgmX,.

e^(ΔList(ln(Ansakan mengambil rasio jarak tersebut, dan min(mengubahnya menjadi angka. Kemudian kita bagi dengan Tmax, yang merupakan parameter grafik yang sama dengan 2π secara default. Akhirnya, -int(-ambil plafon.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.