Вызов
Если задано целое число Q
в диапазоне -(2^100) ≤ Q ≤ 2^100
, выведите количество цифр в этом числе (в базе 10).
правила
Да, вы можете взять число в виде строки и найти его длину.
Все математические функции разрешены.
Вы можете принимать входные данные в любой базе, но выходные данные должны быть длиной числа в 10-й базе.
Не считайте знак минус для отрицательных чисел. Число никогда не будет иметь десятичной точки.
Ноль может иметь одну или ноль цифр.
Предположим, что ввод всегда будет действительным целым числом.
Примеры
Input > Output
-45 > 2
12548026 > 8
33107638153846291829 > 20
-20000 > 5
0 > 1 or 0
выигрыш
Самый короткий код в байтах побеждает.
Такси , 1118 байт
Попробуйте онлайн!
Ungolfed:
Объяснение:
источник
Zoom Zoom
каждом циклеplan "r"
. Я только что проверил его до 100 000 цифр, и он никогда не заканчивался бензин. Я не рассчитал это, но я полагаю, что для того, чтобы заплатить за газ, который он использует, требуется более, чем достаточно, чтобы заполнить бак на каждом цикле.Mathematica, 13 байт
Там есть встроенный ... возвращается
0
на0
.источник
There's a built-in
: Когда там нет?дк, 3
Обратите внимание, что обычно
dc
требуется давать отрицательные числа_
вместо более обычных-
. Однако в этом случае может быть использован любой из них. Если-
дано, тоdc
обрабатывает это как вычитание в пустом стеке, бросаетdc: stack empty
, а затем продолжает с остальной частью числа; Таким образом, результат не отличается.Попробуйте онлайн .
источник
Z
функции?dc
Конкатенационный язык с операторами quote + dup + eval, поэтому может повторно использовать произвольные строки кода.Сетчатка , 2 байта
Попробуйте онлайн!
Retina на самом деле не знает, что такое числа, поэтому ввод обрабатывается как строка, и мы просто считаем цифры.
источник
05AB1E , 2 байта
Попробуйте онлайн! или попробуйте все тесты!
источник
Ä
а? Нетþ
? Справедливо.Ä
, ноþ
обработал бы десятичную точку, так что, думаю, немного лучше.Алиса , 16 байт
Попробуйте онлайн!
объяснение
Найти полуприличный макет для этого было довольно сложно. Я все еще не очень доволен этим из-за пробелов,
<
и;
, но это лучшее, что я мог сделать на данный момент.Длина строки - одна из тех очень распространенных встроенных функций, которые не существуют в Алисе, потому что ее ввод является строкой, а вывод - целым числом (и все команды Алисы являются строго целыми числами для целых чисел или строками для строк). Мы можем измерить длину строки, записав ее на ленту в обычном режиме, а затем найдя ее конец в кардинальном режиме.
Я также пытался позаботиться о знаке минус в режиме Cardinal с помощью
H
(абсолютного значения), но дополнительный переключатель режима всегда оказывался более дорогим в моих попытках.источник
PHP, 23 байта
Попробуйте онлайн!
журнал базы 10 абсолютного значения плюс одно приведение к int
для нуля, поскольку вход log10 возвращает,
INF
что интерпретируется как ложноеЛучше всего заменить
$argn
на$argn?:1
+3 байтаPHP, 27 байт
длина строки минус логическое значение меньше нуля
+2 байта для сравнения строк
$argn<"0"
Попробуйте онлайн!
PHP, 32 байта
Попробуйте онлайн!
Regex подсчитать все цифры
35 байт
Попробуйте онлайн!
длина строки минус количество
-
strspn
источник
10
, потому что^
имеет более низкий приоритет. Вы можете это исправить с помощью-~
.<?=strlen(abs($argn));
?$argn?:1
? Было бы 26 байтов сlog10()
иabs()
.-~$x
эквивалентен((int)$x)+1
.<?=-~log10(abs($argn?:1));
похоже на работу.Фортран 95 (гфортран),
1219695 байтОбъяснение:
Вычитает индекс знака «-» из длины аргумента.
Массивы начинаются с 1 в Fortran, а index () возвращает 0, если символ не найден.
Редактировать: переключено на неявное целое число «i», также получатель объединенного аргумента.
Редактировать: -1 байт благодаря @Tsathoggua
источник
PowerShell, 24 байта
преобразует «абсолютное» значение входных аргументов в строку и получает ее свойство length.
На 1 байт короче
"".Length
пока кто-то не найдет лучший способ получить абс числа в PS, это, вероятно, так же коротко, как и получится.
источник
"$args".trim('-')|% Le*
? :)05AB1E , 2 байта
Попробуйте онлайн!
источник
мозговой трах , 37 байт
Вывод байтового значения.
Попробуйте онлайн!
объяснение
источник
Рубин,
1511 + 1 =1612 байтИспользует
-n
флаг.Попробуйте онлайн!
объяснение
источник
Желе , 2 байта
Попробуйте онлайн!
Это делает буквально то, что спросили:
источник
D
работает на десятичных? Будет ли-1.2
выход[-1,-0.2]
? Пробовал сам, это не так.654.321D
дало бы[6,5,4.321]
(ну на самом деле[6.0,5.0,4.321000000000026]
)[-6.0, -5.0, -4.321000000000026]
собственно, видимо.CJam , 5 байтов
Строка на основе.
Попробуйте онлайн!
9 байтов для чисто математического решения:
Или еще 5 с базовым преобразованием:
источник
rizs,
.Japt , 5 байт
Попробуйте онлайн!
объяснение
источник
RProgN 2 , 2 байта
Попробуйте онлайн!
Просто получает абсолютное значение ввода и считает цифры.
источник
JavaScript (ES6),
27262524 байтаПринимает ввод в виде строки.
источник
s=>`${s>0?s:-s}`.length
:!JavaScript (ES6), 23 байта
Другой подход к ответу Шегги .
источник
s=>s.length-(s<0)
сохраняет 6 байтовJava,
3024 байтаПредполагает
i
являетсяBigInteger
. Кроме того, тип является контекстуализированным, поэтому импорт не требуется, как показано в тестовом коде.Тест
Сохраняет
источник
+""
вместо.toString()
?i
ответа. Я думаю, что больше лямбда-ответов должны сделать это.Python 2 ,
3122 байта-9 байтов благодаря Роду.
Попробуйте онлайн!
источник
len(`abs(s)`)
с номером в качестве ввода корочеlen∘repr∘abs
.Brain-Flak , 63 байта
Попробуйте онлайн!
Это 62 байта кода и +1 байт для
-a
флага.Я попробовал два других подхода, но, к сожалению, оба они были длиннее:
Это должен быть очень короткий ответ. На самом деле, если бы нам не нужно было поддерживать отрицательные числа, мы могли бы просто сделать:
Но мы должны сравнить первый вход с 45 (ASCII
-
) первым, что составляет большую часть байтов этого ответа.Арифметическое решение может быть короче.
источник
([{}]((((()()()()())){}{})){}{})({(<()>)}{}[]<>)
Рубин, 20 байтов
источник
->a{a.abs.to_s.size}[-95]
->a{a.abs.to_s.size}.call(-92)
Pyth, 4 байта
Попробуйте онлайн!
Все тесты
источник
R, 18 байт
источник
Алиса , 10 байт (не конкурирует)
Попробуйте онлайн!
Это неконкурентное решение, потому что в то время, когда в этот вызов была отправлена команда
c
была прослушена в официальном (и только: D) интерпретаторе. Мартин Эндер тем временем исправил это, так что теперь это работает.объяснение
Указатель инструкций проходит через два зеркала (
/
) несколько раз, поэтому за ним может быть немного трудно следовать. Я постараюсь объяснить это как можно более четко, используя основные направления (например, N вверх, SW вниз налево ...). Я назову/1
самое левое зеркало и/2
самое правое.источник
GNU Make , 78 байт
Императивный стиль:
Функциональный стиль, 113 байт:
Pure Make, 83 байта:
источник
C ++,
8076 байтВыводит длину аргумента, минус 1, если первый символ минус, потому что
bool
гарантирует преобразование в1
iftrue
или0
iffalse
<46
вместо него=='-'
, и вместо массива вместо[]
источник
c[1][0]=='-'
с ,*c[1]<46
так как мы можем предположить , вход всегда будет действительным числом. (Если не разрешены префиксы, отличные от '-' ...)TI-Basic (TI-84 Plus CE, OS 5.2+), 6 байтов
TI-Basic - это токенизированный язык;
length(
иtoString(
два байта каждый.Ans
используется в качестве неявного ввода; значение последней (единственной) строки возвращается неявно.Довольно просто, принимает абсолютное значение, чтобы избавиться от знака минус, преобразует в строку, возвращает длину строки.
6-байтовый математический подход, который не работает для 0:
источник
toString(
?Пари / ГП , 13 байт
Попробуйте онлайн!
источник