จำนวนรอบการหมุน


10

งาน

เขียนฟังก์ชั่นหรือโปรแกรมเพื่อค้นหาจำนวนรอบการหมุนที่ล้อต้องการเพื่อเดินทางไปตามระยะทางที่กำหนดโดยกำหนดรัศมี

กฎระเบียบ

อินพุตสามารถเป็นจำนวนตรรกยะจำนวนบวก 2 ตัวและสามารถนำไปใช้ในรูปแบบใดก็ได้ที่สะดวก

อินพุตทั้งสองเป็นหน่วยเดียวกัน

ต้องไม่มีตัวเลข 0-9 ในรหัสของคุณ

เอาท์พุทจะเป็นจำนวนเต็ม (ในกรณีที่ลอย, รอบที่ไม่มีที่สิ้นสุด)

นี่คือรหัส - กอล์ฟเพื่อให้ได้รหัสที่สั้นที่สุด

ตัวอย่าง

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

5
คุณอาจจะเพิ่มตัวเลขที่ห้ามใช้ในตัวเลือกคอมไพเลอร์ (หรือที่อื่น): ถ้าคุณ จำกัด ข้อ จำกัด นี้เฉพาะโค้ดด้วย gcc เราสามารถทำอะไรบางอย่าง-DP=3.14ในธงคอมไพเลอร์ซึ่งจะกำหนดPเป็นค่าประมาณของ pi ไม่ใช่สิ่งที่คุณตั้งใจไว้
Annyo

คำตอบ:



4

APL + WIN, 9 ไบต์

พรอมต์สำหรับรัศมีตามด้วยระยะทาง:

⌈⎕÷○r+r←⎕

ลองออนไลน์! ความอนุเคราะห์จาก Dyalog Classic

คำอธิบาย:

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

⌈⎕÷ prompt for distance, divide by result above and take ceiling

⌈⎕÷○+⍨⎕ใช้งานได้ 7 ไบต์
J. Sallé

@ J.Salléขอบคุณ แต่น่าเสียดายที่ล่าม APL + WIN โบราณของฉันไม่มีโอเปอเรเตอร์
เกรแฮม

4

Java 8, 32 30 ไบต์

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

มี unprintable \u0002ระหว่างเครื่องหมายคำพูดเดี่ยว

ท่าเรือ@jOKing 's Perl 6 คำตอบ

ลองออนไลน์


นั่นคือตัวเลข '1' ในโค้ดของคุณหรือไม่ ฉันคิดว่าอาจไม่ได้รับอนุญาต
ouflak

4
หน้าตา @ouflak เหมือนว่ามันจะสามารถแก้ไขได้เช่นนี้
Erik the Outgolfer

@ouflak โอ๊ะว่าเป็นความผิดพลาดโง่สวย .. ใช้ unprintable ดังนั้นผมจึงไม่ได้ใช้หลัก2และจากนั้นเพียงแค่ใช้หลัก1... โชคดีที่เอริคเป็นที่แน่นอนที่เหมาะสมที่เป็นลบง่ายเอกมีผลเช่นเดียวกับ+1(มักจะใช้ เพื่อกำจัดวงเล็บเนื่องจากค่าลบและค่ายูรีมีลำดับความสำคัญสูงกว่าตัวดำเนินการอื่นส่วนใหญ่)
Kevin Cruijssen

4

Perl 6 , 15 12 ไบต์

-3 bytes tjanks ถึง nwellnhof เตือนฉันเกี่ยวกับ tau

*/*/τ+|$+!$

ลองออนไลน์!

(a/b/tau).floor+1แลมบ์ดาที่ไม่ระบุชื่ออะไรก็ตามที่ใช้สูตร เอกภาพเป็นสองเท่าของปี่ ตัวแปรนิรนามสองตัว$จะถูกรวมเข้ากับหมายเลข0ซึ่งถูกใช้เพื่อปูพื้นตัวเลข+|0(bitwise หรือ 0) และเพิ่มหนึ่งตัว+!$(บวกไม่เป็นศูนย์)


ต้องไม่มีตัวเลข 0-9 ในรหัสของคุณ
ติตัส

@Titus ฉันไม่อยากจะเชื่อเลยว่าฉันลืมไปแล้ว ขอบคุณคงแล้ว!
Jo King

อนุญาตให้ใช้เลขชี้กำลังในเลขชี้กำลังหรือไม่
ouflak

3

Python 2 , 47 45 44 43 ไบต์

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

ลองออนไลน์!


  • -2 ไบต์ขอบคุณข้อบกพร่อง
  • -1 ไบต์ขอบคุณ Jonathan Allan

เนื่องจากอินพุตได้รับการรับรองว่าเป็นทั้งบวกและอย่างมีเหตุผล (อย่างเคร่งครัด) เราไม่เคยชนขอบของการหมุนที่แน่นอนดังนั้นฉันคิดว่าเราสามารถทำได้l/(r+r)//pi+l/lและบันทึกไบต์
Jonathan Allan


2

05AB1E , 6 ไบต์

·/žq/î

ท่าเรือ@flawr 's งูหลาม 2 ความคิดเห็น
รับอินพุตตามลำดับradius, distance.

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

·         # Double the first (implicit) input
 /        # Divide the second (implicit) input by it
  žq/     # Divide it by PI
     î    # Ceil it (and output implicitly)



2

C, 46 ไบต์

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

ฉันใหม่สำหรับ PPCG ดังนั้นฉันไม่แน่ใจว่าฉันจะต้องนับส่วนอื่น ๆ เป็นจำนวนไบต์เช่น

include <math.h>

จำเป็นสำหรับฟังก์ชั่น ceil ซึ่งจะเพิ่มจำนวนเป็น64 ไบต์


ยินดีต้อนรับสู่ PPCG! นี่เป็นคำตอบแรกที่ดี ใช่คุณจำเป็นต้องนับ#includeและสิ่งที่ชอบต่อผลรวมไบต์ของคุณ ลิงค์ไปยังชุดทดสอบออนไลน์นั้นเป็นที่นิยมอยู่เสมอนี่คือสิ่งที่คุณมีอิสระที่จะรวมอยู่ในโพสต์ของคุณ: tio.run/…
OOBalance

@OOBalance ไม่อนุญาตให้ใช้ตัวเลขในรหัสสำหรับการท้าทายนี้)
Annyo

@ Annyo ฉันรู้ว่าฉันลืมบางสิ่งบางอย่าง :(
OOBalance

2

Catholiconขนาด 8 ไบต์

ċ//ĊǓĊ`Ė

คำอธิบาย:

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

เวอร์ชันใหม่ (pi builtin สร้างหนึ่งไบต์, สลับพารามิเตอร์หาร), 5 ไบต์

ċ/π/Ǔ



2

MathGolf , 6 5 ไบต์

∞/π/ü

กึ่งท่าเรือ@flawr 's งูหลาม 2 ความคิดเห็น จะเข้าในการสั่งซื้อ
radius distance

-1 ไบต์เพราะceilbuiltin floor+1ได้รับเพียงแค่เพิ่มเปลี่ยน

ลองมันออนไลน์

คำอธิบาย:

        # 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 ไบต์

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

การประมาณที่เหมาะสมของ pi คือ 355/113 เนื่องจากเส้นรอบวง C = 2 * r * PI เราสามารถแทน pi ใช้ tau ได้ซึ่งแน่นอนว่า ~ 710/113 710 เกิดขึ้นจะมีปัจจัยสะดวก 2 * 5 * 71 'G' * '\n'ซึ่งจะแสดงเป็นดาน เราเพิ่มหนึ่ง ( r/r) เพื่อบังคับให้ปัดเศษเป็นอนันต์

แก้ไข: เคล็ดลับของฉันฉลาดเกินไปสำหรับผลประโยชน์ของตนเอง: แน่นอนทำให้มันล้มเหลวหากระยะทางเป็นเส้นรอบวงหลายครั้ง

ลองออนไลน์!



2

R , 39 32 ไบต์

-7 ไบต์ขอบคุณ Giuseppe

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

ลองออนไลน์!

ฉันรู้สึกเหมือนว่าจะเล่นกอล์ฟได้ แต่ฉันขี้เกียจนิดหน่อยตอนนี้ที่จะทำอะไรกับมัน








1

Lua , 61 58 57 49 ไบต์

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

ลองออนไลน์!

ขอบคุณ KirillL -8 ไบต์


ฉันไม่รู้จัก Lua มากนัก (อาจจะนานเกินไป) แต่ดูเหมือนว่าจะสั้นกว่าในขณะที่ฟังก์ชั่น: 49 ไบต์
Kirill L.

@ KirillL. ฉันยังคงเรียนรู้กฎที่นี่ ความท้าทายของ OP ค่อนข้างเปิดกว้างในการป้อนข้อมูล ดังนั้นคำถามของฉันคือเราจะต้องนับการเรียกโปรแกรมของคุณ () เทียบกับการนับไบต์หรือไม่? ถ้าไม่อย่างนั้นคุณก็จะกำจัดก้อนอันดีออกไปได้อย่างแน่นอน
ouflak

ลักษณะทั่วไปของการส่งที่นี่คือฟังก์ชั่นที่ไม่ระบุชื่อ (เพื่อให้เราไม่ต้องนับชื่อเว้นแต่จะเรียกซ้ำ) ซึ่งส่งออกโดยค่าตอบแทน ส่วนท้ายกระดาษที่มีการเรียกใช้ฟังก์ชันและการพิมพ์จริงไปยังคอนโซลนั้นโดยทั่วไปจะใช้สำหรับการแสดงผลลัพธ์และไม่นับรวมคะแนนของคุณ BTW คุณสามารถเพิ่มตัวอย่างการทดสอบของ OP ให้กับส่วนท้ายได้มากขึ้นเพื่อให้สามารถดูได้อย่างสะดวกสบายในครั้งเดียว โปรดทราบว่าในบางกรณีโปรแกรมเต็มรูปแบบอาจกลายเป็นนักกอล์ฟ!
คิริลล์ลิตร


1

Tcl , 50 ไบต์

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

ลองออนไลน์!


Tcl , 53 ไบต์

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

ลองออนไลน์!

การขาดค่า pi คงที่หรือฟังก์ชั่นทำให้ฉันสูญเสียการแข่งขันกอล์ฟ!


ฉันจำเป็นต้องลบ. 0 ที่ส่วนท้ายของแต่ละเอาต์พุตหรือไม่ มันจะทำให้ฉันกินเนื้อที่มากขึ้น!
sergiol

1
[incr i]ค่อนข้างฉลาด แต่ฉันคิดว่าคุณสามารถใช้$d/$dหรือ$r/$rแทน
david

บันทึกเป็นจำนวนไบต์ด้วยความคิดของ @ david!
sergiol

1

PowerShell, 53 52 51 ไบต์

-1 byte ต้องขอบคุณ @mazzy
-1 byte หลังจากที่ฉันรู้ว่าฉันไม่จำเป็นต้องใช้เครื่องหมายอัฒภาคหลังจากparam()บล็อก

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

ลองออนไลน์!

นำข้อมูลจากสองพารามิเตอร์ commandline ระยะทางและรัศมี-d-r


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


0

Clojure 50 ไบต์

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

ฟังก์ชั่นไม่ระบุชื่อที่ยอมรับจำนวนเต็มสองจำนวนaและbเป็นอาร์กิวเมนต์: ระยะทางและรัศมีของวงล้อตามลำดับ

ลองออนไลน์!

(count " ")2a2πb


0

TI-Basic (83 series), 12 ไบต์

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

จะเข้าเป็นรายการของรัศมีและระยะทางในAns: {0.9999:12.5663:prgmXยกตัวอย่างเช่น

e^(ΔList(ln(Ansจะใช้อัตราส่วนของระยะทางเหล่านั้นและmin(เปลี่ยนให้เป็นจำนวน จากนั้นเราหารด้วยTmaxซึ่งเป็นพารามิเตอร์กราฟที่เท่ากับ2πตามค่าเริ่มต้น ในที่สุด-int(-ใช้เพดาน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.