Написать программу или функцию , которая принимает в положительных целых числах a
, b
и c
, и печатает или возвращаются a/b
к c
знакам после запятой, используя операции + - * /% [добавить, вычитание, умножение, деление, модулирует] на положительных целых числах: вы можете использовать все , что ваш язык позволяет, но не на числах с плавающей запятой. Диапазон a, b, c будет диапазоном, разрешенным для целых чисел без знака в вашем языке. Числовой результат будет усечен до последней цифры для печати (поэтому нет round
).
Это означает, что если ваш язык не имеет целочисленного типа (только с плавающей точкой), вы можете участвовать, используя эти числа с плавающей точкой только как положительные целые числа. Ключом к этому упражнению было бы написать функцию, которая находит цифры в делении с плавающей запятой, используя только операцию + - * /% для [unsigned] целых чисел.
Примеры
print(1,2,1)
будет печатать0.5
print(1,2,2)
будет печатать0.50
print(13,7,27)
будет печатать1.857142857142857142857142857
print(2,3,1)
будет печатать0.6
print(4,5,7)
будет печатать0.8000000
print(4,5,1)
будет печатать0.8
print(9999,23,1)
будет печатать434.7
print(12345613,2321,89)
напечатает, если ваш язык имеет 32-битный без знака5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
Самый короткий код в байтах побеждает. Извините, если это кажется непонятным ... Я тоже не знаю языков, плохо помню слова ... Лучше иметь одну ссылку на Ideone.com или другое место, чтобы легко найти ответ, особенно для проверить некоторые входные данные, отличные от предложенных.
(1,2,0)
. См. Meta.codegolf.stackexchange.com/a/5608/194(1,2,0)
?(1,2,0)
должно быть не имеет значения, так0
как не является положительным целым числом. И я бы предпочел, чтобы c так и оставалось, потому что я предпочел бы не думать о добавлении.
или нетОтветы:
05AB1E ,
17 13 11 1914 байтовВвод в форме
b, a, c
.Сохранено 5 байтов благодаря Грими .
Попробуйте онлайн!
источник
b,a,c
?‰`I°*¹÷I°+¦'.sJ
‰`¹+I°*¹÷¦'.sJ
Haskell, 87 байт
Пример использования:
(13#7)27
->"1.857142857142857142857142857"
.23 байта для обработки
c==0
регистра и использования начального нуля вместо таких вещей, как.5
.Как это работает: умножить
a
на10^c
, разделить наb
, превратить в строку, разделить, где.
необходимо вставить, соединить обе части с.
промежуточным и исправить крайние случаи.источник
Perl 6 ,
58 57 5548 байтЧто довольно досадно, так это то, что его можно было бы сократить до того,
{($^a.FatRat/$^b).base(10,$^c)}
чтобы было разрешено округление до ближайшего значения.Объяснение:
источник
(...).FatRat / 10**$x
это не подразделение Rational? Вам разрешено делить только целые числа.does Real
илиdoes Numeric
это будет разрешено? Что, если я дополню (исправление обезьяны) существующий класс, чтобы удалить эти роли, это будет разрешено?+-*/%
только с простыми целочисленными типами. «обычное целое» с точки зрения функциональности (прежде всего: целочисленного деления), а не внутреннего представления. Как вы думаете, разрешено ли использовать программную библиотеку с плавающей точкой, которая (несмотря на название) также использует только целые числа для внутреннего представления?Perl, 55 байт
Включает +3 для
-p
Дайте a и b в одной строке на STDIN, c на следующей
division.pl
:$_/$&
немного спорно. Я на самом деле хочу целочисленное деление там, но Perl не имеет этого без загрузки специальных модулей. Так что это временно нецелое число, которое я затем немедленно усекаю (использую|0
), так что я получаю целое число, которое даст целочисленное деление. Его можно переписать так($_-$_%$&)/$&
, чтобы даже временно не иметь нецелочисленного значения (хотя внутренне оно все еще было бы с плавающей точкой)источник
$-
его только для int? (Я думаю, что есть строгие ограничения на микс / макс, и я уверен, что вы уже рассмотрели это, но хотя это стоит проверить!)use integer
$-
, приятно знать. Благодарность!JavaScript (ES6),
5550 байт(a/b|0)
выполняет деление с плавающей запятой, но немедленно приводит к целому числу. Пожалуйста, дайте мне знать, если это не разрешено.источник
PHP, 187 байт
работает со строками для числителя, которые могут быть значения int больше, чем
PHP_INT_MAX
У меня нет другого шанса, тогда 13/7 сокращается до 1.8571428571429, и я достигаю, поэтому не тестовый случай с 27 знаками после запятой
Таким образом, 36 байтов не допускается
источник
Pyth -
2119181614 байтБудет просматривать формат ввода, который может сохранить кучу.
Тестовый пакет . (PS 27 не заканчивается онлайн, поэтому я сделал 10).
источник
0
как не является положительным целым числом (хотя операционная система продолжает добавлять примеры сc=0
)JavaScript (ES6),
646259 байтСохранено 2 байта благодаря ETHproductions.
Включенное деление всегда приводит к целому числу.
источник
m
вообще работать?f=(a,b,n,s)=>n+1?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s
составляет 60 байтов.Java 7, 105 байт
Ungolfed & тестовый код:
Попробуй это здесь.
Выход:
источник
divide
и нет/
.int
тип для хранения числового значения. (Разве это не круто? BigInteger - этоint[]
цифра. Например, {1,2,5} в базе 10 равен 125. I Я не уверен, в какой базе на самом деле находятся цифры BigInteger, но я бы предположил, что это больше, чем 10. "Рубин, 67 байт
если я сделаю это функцией для выполнения тестовых случаев выше
источник
->a,b,c{...}
это заменить эллипсы своим кодом. (Фактическое присвоение переменной не требуется консенсусом.)Ракетка 203 байта
Ungolfed:
Использование:
Выход:
Другой метод (неправильный ответ здесь):
источник
real->decimal-string
ожидаетreal
значение в качестве первого аргумента,/
как и деление с плавающей запятой, что не разрешено в этой задаче. Также:real->decimal-string
раунды ((f 1 6 7)
->0.1666667
) вместо усечения.q, 196 байт
Для запуска: сначала установите a, b, c.
источник
Ржавчина, 114 байт
тестовый код:
источник
PHP, 89 байт
intdiv () введен в php 7, поэтому он требует этого. php 7.1 позволит мне изменить list () на [] и сэкономит 4 байта.
использовать как:
источник
$o.=intdiv($a=10*($a%$b),$b);
на$o.=($a=10*($a%$b))/$b^0;
сэкономит 4 байта.C #, 126 байт
Полная программа с тестовыми примерами:
Целочисленное деление реализовано. Можно использовать числа любого размера, в зависимости от
BigInteger
типа данных (System.Numerics
требуется импорт ). Параметр подсчета цифрc
ограничен 2 ^ 31-1, однако он должен содержать более чем достаточно цифр.источник
Groovy (
787742 байта)объяснение
Eval.me(a+'.0g');
- Преобразование из целочисленного ввода в ввод BigDecimal. В Groovy BigDecimal обозначение является двойным обозначением с добавлением G или g. Я мог бы также использовать конструктор,new BigDecimal(it)
но это сохранило байт..divide(b, n, 1)
- Разделить на b с точностью n, режим округления наполовину.Попробуйте это здесь: https://groovyconsole.appspot.com/script/5177545091710976
источник
Пакетный, 122 байта
источник
Mathematica, 50 байтов
Без имени функция трех аргументов (которые упорядочены
c
,a
,b
чтобы сохранить байты где - то), который возвращает строку. Он умножаетсяa/b
на10^c
, принимает наибольшую целочисленную функцию, затем преобразуется в строку и вставляет десятичную точку в соответствующем месте. Жаль, что имена функций не короче.источник
Python 3, 62 байта
Попробуйте здесь
* Примечание : repl.it использует более старую версию Python 3 , которая требует указания всех индексов полей, то
"{:.{1}f}"
есть"{0:.{1}f}"
вместо этого будет 63 байта в repl.itКак пользоваться
Введите все три значения с пробелами между ними. т. е. ввод
1 2 1
даст результат0.5
объяснение
input().split()
: Получает пользовательский ввод и разбивает его на список с разделителем (пробел)a,b,c = map(int,XX)
: Отображает переменные в значения, указанные пользователем с типом int"{:.{1}f}".format(a/b,c)
: Форматирует строку для отображения результата деления и заменяет{1}
наc
установить десятичное место отображаемой строкиprint(XX)
: печатает предоставленную строкуисточник
Python 3 , 58 байт
Попробуйте онлайн!
Это с точностью до указанного числа десятичных знаков до тех пор, пока
a * 10 ** c
не слишком большой.Я пробовал Python 2, чтобы сократить
str(...)
до,`...`
но Python 2 вставляетL
в конце, если он слишком велик, поэтому проверка на это займет намного больше байтов, чем стоит.источник
Stax , 13 байт
Запустите и отладьте его
Аргументы принимаются по
c a b
порядку.источник
C 67 байт
Попробуйте онлайн!
В какой-то предыдущей версии, я думаю, была ошибка чтения памяти из-за присвоения программе ... Спасибо, потолок и все ...
источник