Количество оборотов


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

Содержит непечатные \u0002между одинарные кавычки.

Порт @jOKing 's Perl 6 ответа .

Попробуйте онлайн.


Это цифра «1» в вашем коде? Я думаю, что это может быть запрещено.
ouflak

4
@ouflak Похоже, это можно исправить вот так .
Эрик Outgolfer

@ouflak Woops, это была довольно глупая ошибка .. Использование непечатаемого текста, поэтому я не использую цифру 2, а затем просто использую цифру 1... К счастью, Эрик действительно прав, что простой отрицательный унарный имеет тот же эффект, что и +1(часто используется избавиться от скобок, поскольку отрицательные и унарные имеют более высокий приоритет, чем большинство других операторов).
Кевин Круйссен

4

Perl 6 , 15 12 байт

-3 байта tjanks в nwellnhof, напоминающие мне о тау

*/*/τ+|$+!$

Попробуйте онлайн!

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


В вашем коде не должно быть цифр 0-9.
Тит

@ Не могу поверить, что я забыл это. Спасибо, исправлено!
Джо Кинг

Разрешены ли цифры в показателях?
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и т. Д. К общему количеству байтов. Всегда приветствуется ссылка на набор онлайн-тестов, вот что вы можете бесплатно добавить
OOBalance

@OOBalance Цифры не допускаются в коде для этого вызова;)
Annyo

@Annyo Я знал, что что-то забыл :(
OOBalance

2

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

ċ//ĊǓĊ`Ė

Объяснение:

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

Новая версия (пи встроил один байт, параметры деления поменялись местами), 5 байт

ċ/π/Ǔ



2

MathGolf , 6 5 байт

∞/π/ü

Полупорт порта комментария @flawr 's Python 2 .
Принимает ввод в порядке 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 использовать тау, что тогда, конечно, ~ 710/113. 710 имеет удобные коэффициенты 2 * 5 * 71, которые кратко выражаются как'G' * '\n' . Мы добавляем один ( r/r) для округления до бесконечности.

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

Попробуйте онлайн!



2

Р , 39 32 байта

-7 байт благодаря Джузеппе

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

Попробуйте онлайн!

Я чувствую, что это определенно можно сыграть в гольф, но сейчас я немного ленив, чтобы что-то с этим сделать


2

мин , 16 байт

/ tau / ceil int

Берет расстояние и радиус, помещенные в стек в указанном порядке. Затем делит на тау, округляет и делает int.







1

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

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

Попробуйте онлайн!

Спасибо Кириллу. -8 байт.


Я не знаю много Lua (так что, может быть, он все еще слишком длинный), но, как представляется, он как функция короче: 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 в конце каждого выхода? Это заставило бы меня потреблять больше байтов!
sergiol

1
[incr i]довольно умно, но я думаю, что вы можете использовать $d/$dили $r/$rвместо.
Дэвид

Сохранено несколько байтов благодаря идее @ david!
sergiol

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)
Маззи


0

Clojure , 50 байтов

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

Анонимная функция, которая принимает два целых числа aиb в качестве аргументов: расстояние и радиус колеса, соответственно.

Попробуйте онлайн!

(count " ")оценивает 2, поэтому эта функция реализуетa2πб,


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.