Кількість обертів


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é Дякую, але, на жаль, у мого стародавнього перекладача APL + WIN немає оператора ⍨
Грем

4

Java 8, 32 30 байт

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

Містить недруковані \u0002між цитатами.

Порт відповіді Perl 6 @jOKing .

Спробуйте в Інтернеті.


Це цифра "1" у вашому коді? Я думаю, що це може бути дозволено.
ouflak

4
@ouflak виглядає як це може бути виправлено , як це .
Ерік Аутгольфер

@ouflak Woops, це була досить дурна помилка. Використання недрукованого файлу, тому я не використовую цифру 2, а потім просто використовую цифру 1... На щастя, Ерік справді правий, що простий негативний унар має той же ефект, що і +1(часто використовується позбутися дужок, оскільки негативні та одинарні мають вищий пріоритет, ніж більшість інших операторів).
Кевін Кройсейсен

4

Perl 6 , 15 12 байт

-3 байт-tjanks до nwellnhof, що нагадує мені про тау

*/*/τ+|$+!$

Спробуйте в Інтернеті!

Анонімне Що б лямбда не використовувала формулу (a/b/tau).floor+1. Тау - два рази пі. Дві анонімні змінні $примусові до числа 0, яке використовується для підрахунку числа +|0(порозрядно або 0) та додавання однієї +!$(плюс не нуля).


У вашому коді не повинно бути цифр 0-9.
Тит

@Titus Я не можу повірити, що забув це. Спасибі, виправлено!
Джо Кінг

Чи допускаються також цифри в показниках?
ouflak

3

Python 2 , 47 45 44 43 байт

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

Спробуйте в Інтернеті!


  • -2 байти, завдяки flawr
  • -1 байт, завдяки Джонатану Аллану

Оскільки вхідні дані гарантуються як (суворо) позитивними, так і раціональними, ми ніколи не стикаємося з кращим випадком, коли потрібна точна кількість обертів, тому я думаю, що ми можемо зробити l/(r+r)//pi+l/lі зберегти байт.
Джонатан Аллан

@JonathanAllan Дякую :)
TFeld




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

Католикон , 8 байт

ċ//ĊǓĊ`Ė

Пояснення:

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

Нова версія (pi вбудований зробив один байт, змінив параметри поділу), 5 байт

ċ/π/Ǔ



2

MathGolf , 6 5 байт

∞/π/ü

Пол-порт @flawr Python 2 коментарі «s .
Бере введення в порядку radius distance.

-1 байт, оскільки ceilвбудований модуль щойно доданий, замінюючи 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');}

Доцільне наближення пі - 355/113. Оскільки окружність C = 2 * r * PI, ми можемо замість pi використовувати tau, що, звичайно, тоді ~ 710/113. 710, буває, має зручні коефіцієнти 2 * 5 * 71, що компактно виражається як 'G' * '\n'. Додаємо один ( r/r), щоб примусити округлення до нескінченності.

Редагувати: мій трюк був надто розумним для власного блага: він, звичайно, збився, якщо відстань кратна окружності.

Спробуйте в Інтернеті!



2

R , 39 32 байти

-7 байт Завдяки Джузеппе

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

Спробуйте в Інтернеті!

Я відчуваю, що це, безумовно, могло б бути полем для гольфу, але я трохи ледачий зараз робити щось з цього приводу


2

хв. , 16 байт

/ tau / ceil int

Визначає відстань і радіус, нанесений на стек, у такому порядку. Потім ділиться на tau, обводить і робить int.







1

Луа , 61 58 57 49 байт

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

Спробуйте в Інтернеті!

Завдяки KirillL. -8 байт.


Я не знаю багато Луа (тому, можливо, вона все ще занадто довга), але вона, здається, є коротшою як функція: 49 байт
Кіріл Л.

@KirillL., Я досі вивчаю правила. Завдання ОП досить відкрите на вході. Отже, моє запитання полягає в тому, чи варто нам рахувати ваш програмний виклик () проти кількості байт? Якщо ні, то, безумовно, голиться хороший шматок.
ouflak

Досить поширеним стилем подання тут є анонімна функція (так що нам не доведеться рахувати ім’я, якщо воно не є рекурсивним), яке виводить за своїм зворотним значенням. Розділ нижнього колонтитулу з викликами функцій та фактичним друком на консолі потім в основному використовується для візуалізації результатів і не рахується з вашим балом. До речі, ви можете додати більше тестових прикладів 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])))}

Спробуйте в Інтернеті!

Відсутність константи пі або функції змушує мене програти змагання з гольфу!


Чи потрібно видаляти .0 в кінці кожного виводу? Це змусило б спожити більше байтів!
серхіол

1
[incr i]є досить розумним, але я думаю, ви можете використовувати $d/$dабо $r/$rзамість цього.
Девід

Збережено кілька байтів завдяки ідеї @ david!
сергіол

1

PowerShell, 53 52 51 байт

-1 байт завдяки @mazzy
-1 байт після того, як я зрозумів, що мені не потрібна крапка з комою після param()блоку

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

Спробуйте в Інтернеті!

Вводить дані з двох параметрів командного рядка, відстані -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 " ")оцінює до 2, тому ця функція реалізуєтьсяа2πб.


0

TI-Basic (83 серія), 12 байт

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

Приймає вхідний сигнал у вигляді списку радіусу і відстані в Ans: наприклад, {0.9999:12.5663:prgmX.

e^(ΔList(ln(Ansвізьме відношення цих відстаней і min(перетворить це на число. Потім ми ділимо на Tmax, що є параметром графіки, рівним 2π за замовчуванням. Нарешті, -int(-бере стелю.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.