В этом задании вы напишите программу, которая выведет, сколько десятичных разрядов во входной строке, и при необходимости обрежет ввод.
Примеры
-12.32
2
32
0
3231.432
3
-34.0
0 -34
023
0 23
00324.230
2 324.23
10
0
00.3
1 0.3
0
0
-04.8330
3 -4.833
правила
- Вводом будет строка, которая может быть принята через STDIN, аргументы функции или ближайший эквивалент
- Вывод может быть через функцию return, STDOUT или ближайший эквивалент.
- Размер входного целого числа не ограничен, за исключением максимальной длины строки в вашем языке .
- Если на входе есть ненужные (начальные или конечные) нули:
- Вы должны взять их
- Выведите количество десятичных знаков в новом числе
- Выведите новый номер, разделенный разделителем (например, пробел, символ новой строки, запятая)
- Ввод всегда будет соответствовать этому RegEx:,
-?\d+(\.\d+)?
или если вы не говорите RegEx :- В начале может быть
-
отрицательное число. Тогда будет хотя бы одна цифра. Тогда может быть ....
и еще несколько цифр. - Чтобы проверить правильность ввода, проверьте здесь
- В начале может быть
- Нет регулярных выражений
Это код-гольф, поэтому выигрывает самый короткий код в байтах
0
.Ответы:
PHP 7, 142 байта
Мне как-то удалось сжать все в одно печатное утверждение:
Запускается из командной строки, например:
демонстрация
Просмотрите все тесты, в том числе очень длинный (62 символа) в действии:
Попробуй , прежде чем купить 1
1 Наведите курсор на поле под « Выход для 7.0.0 », чтобы увидеть все результаты.
источник
Python 2,
165180 байтСначала я думал о написании своей первой программы Pyth, заставил ее считать цифры после потенциальной запятой. Но потом я сильно разозлился, я не знаю, как тебе понравился бы этот язык, думаю, это просто для целей победы. В любом случае вот мое решение (отредактировано, поскольку оно не работает для больших чисел):
В случае, если кто-то захочет развить мою работу в Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
чтобы увидеть, где вы находитесь, вы можете вставить точку между ними@+
.источник
05AB1E , 23 байта (неконкурентный)
Черт, я был так близко. Python анализирует очень большие числа с плавающей точкой, используя научную запись, поэтому я исправил эту ошибку в интерпретаторе. Тем не менее, это было сделано после конкурса, и поэтому моя заявка не является конкурентной.
Код:
Объяснение:
Использует кодировку ISO 8859-1 .
источник
JavaScript (ES6), 156
162Редактировать Исправлена ошибка для '-0' - спасибо @Fez Vrasta Редактировать 2 6 байтов сохранено thx @Neil
Это беспорядок, но он на 100% основан на строках - нет ограничений из-за числовых типов
Меньше гольфа
Тест
источник
-0
входными0
0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
чтобы сохранить вас байт?t=l=k=p=0
и++t&&c=='.'
т. Д.ES6,
102180177 байтРедактировать: 3 байта сохранены благодаря @ edc65; Сохранено 1 байт благодаря имени пользователя здесь.
источник
t=[...s]
t[--l]==0
наt[--l]<1
.C ++, 180 байт
Это переносимый C ++, который не предполагает предположений о кодировке символов и не содержит библиотек (даже стандартной библиотеки).
Ввод передается в
s
. Количество десятичных знаков возвращается; строка изменяется на месте, и новый старт возвращается вp
.По праву я должен вернуть a
size_t
, но вместо этого я собираюсь утверждать, что вы должны скомпилировать это для ОС, которая ограничивает размер строк до половины диапазонаint
. Я думаю, что это разумно; на 32-разрядных архитектурах он насчитывает более 2 миллиардов знаков после запятой.объяснение
Тестовая программа
Тестовый вывод
источник