Dönüş sayısı


10

Görev

Yarıçapı göz önüne alındığında, bir tekerleğin belirli bir mesafeyi kat etmesi için gereken dönüş sayısını bulmak için bir işlev veya program yazın.

kurallar

Giriş 2 pozitif rasyonel sayı olabilir ve herhangi bir uygun formatta alınabilir.

Her iki giriş de aynı birimdedir.

Kodunuzda 0-9 rakamı olmamalıdır.

Çıktı bir tamsayı olacaktır (şamandıra durumunda, sonsuza kadar yuvarlak)

Bu kod golf, bu yüzden en kısa kod kazanır

Örnekler

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

5
Muhtemelen rakamların derleyici seçeneklerinde (veya başka bir yerde) de yasaklandığını eklemelisiniz: eğer bu kısıtlamayı sadece kodla sınırlarsanız, gcc ile -DP=3.14derleyici bayraklarında olduğu Pgibi, pi'nin bir yaklaştırması olarak tanımlanan bir şey yapabiliriz. istediğin gibi değil
Annyo

Yanıtlar:


6

MathGolf , 5 4 bayt

τ/╠ü

Çevrimiçi deneyin!

açıklama

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


4

Java 8, 32 30 bayt

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

\u0002Tek tırnak işaretleri arasında yazdırılamaz .

Bağlantı noktası @jOKing Perl 6 cevap .

Çevrimiçi deneyin.


Kodunuzdaki '1' rakamı bu mu? Bence buna izin verilmiyor olabilir.
ouflak

4
@ouflak Bu şekilde sabitlenebilir gibi görünüyor .
Outgolfer Erik

@ouflak Woops, bu oldukça aptalca bir hataydı .. Baskısız olanı kullanmak için basamağı kullanmıyorum 2ve sonra sadece basamağı kullanıyorum 1... Neyse ki Erik basit bir negatif tekinle +1(genellikle kullanılan negatif ve tekli diğer operatörlerden daha yüksek önceliğe sahip olduğundan parantezden kurtulmak için).
Kevin Cruijssen

4

Perl 6 , 15 12 bayt

-3 bytes tjanks nwellnhof bana tau hakkında hatırlatan

*/*/τ+|$+!$

Çevrimiçi deneyin!

Anonim Formülü kullanan lambda ne olursa olsun (a/b/tau).floor+1. Tau pi'nin iki katıdır. İki anonim değişken , sayıyı katlamak (bitsel veya 0) ve bir (artı sıfır değil) eklemek için kullanılan $sayıya zorlanır .0+|0+!$


Kodunuzda 0-9 rakamı olmamalıdır.
Titus

@Titus Bunu unuttuğuma inanamıyorum. Teşekkürler, düzeltildi!
Jo King

Üslerdeki rakamlara da izin veriliyor mu?
ouflak

3

Python 2 , 47 45 44 43 bayt

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

Çevrimiçi deneyin!


  • Kusur sayesinde -2 bayt
  • -1 bayt, Jonathan Allan sayesinde

Girdilerin hem (kesinlikle) hem de pozitif ve rasyonel olduğu garanti edildiğinden, tam olarak rotasyon gerektiren kenar kasasına asla çarpmayız, bu yüzden l/(r+r)//pi+l/lbir bayt yapabilir ve kaydedebiliriz.
Jonathan Allan





2

C, 46 bayt

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

PPCG'de yeniyim, bu nedenle bayt sayısındaki diğer bölümleri saymam gerekip gerekmediğinden emin değilim.

include <math.h>

sayısı 64 bayta çıkaracak olan tavan işlevi için gerekli


PPCG'ye Hoşgeldiniz! Bu güzel bir ilk cevap. Evet, #includebayt toplamınıza doğru saymanız ve benzerlerini yapmanız gerekir . Çevrimiçi bir test paketinin bağlantısı her zaman takdir edilir, işte postanıza
eklemekte özgürsünüz

@OOBalance Rakamlar bu meydan okuma için kodda izin verilmez;)
Annyo

@Annyo bir şey unutduğumu biliyordum :(
OOBalance

2

Katolikon , 8 bayt

ċ//ĊǓĊ`Ė

Açıklama:

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

Yeni sürüm (pi yerleşik bir bayt, bölüm parametreleri değiştirildi), 5 bayt

ċ/π/Ǔ




2

C (gcc) , 45 47 45 bayt

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

Pi'nin makul bir yaklaşımı 355/113'tür. Çevresi C = 2 * r * PI olduğundan, pi kullanımı tau yerine elbette ~ 710/113 olabilir. 710, kompakt olarak ifade edilen uygun faktörlere 2 * 5 * 71 sahiptir 'G' * '\n'. Sonsuza yuvarlamayı zorlamak için bir ( r/r) ekliyoruz .

Düzenleme: Benim hile kendi iyiliği için çok zeki oldu: Tabii ki mesafe çevresi bir katı olsaydı başarısız yaptı.

Çevrimiçi deneyin!



2

R , 39 32 bayt

-7 bayt Giuseppe'ya teşekkürler

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

Çevrimiçi deneyin!

Bu kesinlikle golf olabilir gibi hissediyorum, ama şu anda bu konuda bir şey yapmak için biraz tembelim


2

min , 16 bayt

/ tau / ceil int

Bu sıraya yığına yerleştirilen mesafe ve yarıçapı alır. Sonra tau ile böler, yuvarlar ve int yapar.







1

Lua , 61 58 57 49 bayt

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

Çevrimiçi deneyin!

KirillL'e teşekkürler. -8 bayt.


Çok fazla Lua bilmiyorum (belki de hala çok uzun), ancak bir işlev olarak daha kısa görünüyor: 49 bayt
Kirill L.

@KirillL., Hala buradaki kuralları öğreniyorum. OP'nin görevi girişte oldukça açık. Yani sorum şu: program çağrınızı () bayt sayısına karşı saymamız gerekir mi? Değilse, kesinlikle güzel bir yığın tıraş.
ouflak

Burada oldukça yaygın bir gönderme tarzı, dönüş değeri ile sonuçlanan anonim bir işlevdir (böylece özyinelemesiz adı saymamız gerekmez). Fonksiyon çağrıları ve konsola gerçek baskı içeren altbilgi bölümü temel olarak sonuçları görselleştirmek için kullanılır ve puanınıza dahil edilmez. BTW, OP'nin test örneklerinden daha fazlasını altbilgiye ekleyebilirsiniz, böylece hepsi aynı anda kolayca görülebilir. Bazı durumlarda tam bir programın daha golfçü olabileceğini unutmayın!
Kirill L.


1

Tcl , 50 bayt

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

Çevrimiçi deneyin!


Tcl , 53 bayt

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

Çevrimiçi deneyin!

Bir pi sabiti veya fonksiyonunun olmaması golf yarışmasını kaybetmemi sağlıyor!


Her çıktının sonunda .0'ı kaldırmam gerekir mi? Daha fazla bayt tüketmemi sağlayacak!
sergiol

1
[incr i]Oldukça zekidir ama kullanabilirsiniz düşünüyorum $d/$dveya $r/$ronun yerine.
david

@ David'in fikri sayesinde bayt kurtardı!
sergiol

1

PowerShell, 53 52 51 bayt

-1 byte sayesinde @mazzy
-1 byte param()bloktan sonra noktalı virgül kullanmam gerektiğini fark ettikten sonra

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

Çevrimiçi deneyin!

Mesafe -dve yarıçap olmak üzere iki komut satırı parametresinden girdi alır -r.


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


0

Clojure , 50 bayt

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

İki tamsayıyı ave bbağımsız değişken olarak kabul eden anonim bir işlev : sırasıyla mesafe ve tekerleğin yarıçapı.

Çevrimiçi deneyin!

(count " ")2a2πb


0

TI-Basic (83 serisi), 12 bayt

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

Girdiyi yarıçap ve mesafe listesi olarak alır Ans: örneğin {0.9999:12.5663:prgmX,.

e^(ΔList(ln(Ansbu mesafelerin oranını alır ve min(bunu bir sayıya dönüştürür. Sonra Tmax, bölüyoruz, bu varsayılan olarak 2π'ye eşit bir grafik parametresidir. Sonunda -int(-tavanı alır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.