Вызов
Репдигиты является неотрицательным целым числом , чьи цифры все равны.
Создайте функцию или завершенную программу, которая принимает одно целое число в качестве входных данных и выводит истинное значение, если входное число является повторной цифрой в базе 10 и ложным значением в противном случае.
На входе гарантировано положительное целое число.
Вы можете безнаказанно принимать и использовать ввод как строковое представление в базе 10.
Контрольные примеры
Это все repdigits ниже 1000.
1
2
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
111
222
333
444
555
666
777
888
999
Большой список можно найти на OEIS .
выигрыш
Самый короткий код в байтах побеждает. Нельзя сказать, что умные ответы на многословных языках не будут приветствоваться.
code-golf
math
number
arithmetic
decision-problem
Эйдан Ф. Пирс
источник
источник
Ответы:
Брахилог , 1 байт
Попробуйте онлайн!
Это действует на целые числа.
От
src/predicates.pl#L1151
:источник
C (gcc) ,
333029 байтПопробуйте онлайн!
источник
return
(думаю, я собираюсь украсть последнее для моего ответа :)).-O0
запишет окончательный результатn
из from точноeax
, чтобы сделать его возвращаемым значением? Не могли бы вы рассказать о логике, почему вы знали, что это сработает?return n
быть nop, и нет причин назначать локальную переменную в конце функции, если вы не собираетесь возвращать результат.КОБОЛ , 139 БАЙТОВ
Я чувствую, что COBOL не получает никакой любви в гольф-коде (вероятно, потому что нет никакого способа, которым он мог бы победить), но здесь идет:
A определяется как PIC 9 (4).
источник
TRUE
FALSE
05AB1E , 1 байт
Проверяет, все ли цифры равны
Попробуйте онлайн!
источник
Питон 3,
25, 2419 байт.A stdin => вариант кода ошибки.
Возвращает код ошибки 0, если это повторная цифра - или ошибка при ошибке.
Спасибо Деннису за помощь в комментариях.
источник
>1
а не<2
. Повышение фактической ошибки будет короче, чем использованиеexit
btw.if python3 repdigit.py; then echo truthy; else echo falsy; fi
должен работать в соответствии с нашим определением, поэтому 0 - это правда, а все остальное - ложь.*
распаковывает итерацию. Например,{*'123'}
генерирует множество{'1','2','3'}
.Mathematica, 27 байт
Он не побеждает
Equal@@IntegerDigits@#&
, но побеждает другое арифметическое решение Mathematica.Повторные цифры имеют вид n = d (10 м -1) / 9, где m - количество цифр, а d - повторяющаяся цифра. Мы можем восстановить d из n , взяв его по модулю 10 (потому что, если это цифра повторения, ее последняя цифра будет d ). Таким образом, мы можем просто изменить это как m = log 10 (9 n / (n% 10) + 1) и проверить, является ли m целым числом.
источник
Haskell , 15 байт
Попробуйте онлайн! Принимает строку ввода.
Эквивалент
\s->all(==head s)s
. Узко выбивает альтернативы:источник
f s=(s<*s)==(s*>s)
это очень интересная идея, я не знал об этом поведении<*
раньше.C (gcc), 41 байт
Это функция, которая принимает входные данные в виде строки и возвращает,
1
если она является повторной, и в0
противном случае.Это делается путем использования
strspn
функции, которая принимает две строки и возвращает длину самого длинного префикса первой строки, состоящего только из символов из второй строки. Здесь первая строка является вводом, а вторая строка является последней цифрой ввода, полученной путем передачи указателя на последний символ входной строки.Если входной сигнал является повторным, то результатом вызова
strspn
будетstrlen(s)
. Затем индексирование вs
возвращает нулевой байт, если это так (str[strlen(str)]
всегда\0
) или первая цифра, которая в противном случае не соответствует последней цифре. Отрицание этого!
приводит к тому,s
представляет ли репдигит.Попробуйте онлайн!
Спасибо @Dennis за то, что он косвенно напомнил мне о трюке с присваиванием вместо возврата через его безумно впечатляющий ответ , сэкономив 4 байта!
источник
strlen
и создавая новую строку из*s
:c;f(char*s){c=*s;c=!s[strspn(s,&c)];}
для 37.PHP,
252825удалите все символы справа, которые равны первому, и напечатайте,
1
если все символы были удалены.источник
R, 31 байт
Эта функция работает со строковыми входами и использует регулярное выражение, чтобы определить, является ли ввод повторной цифрой.
пример
источник
/// , 110 байт
Попробуйте онлайн!
Язык /// не имеет понятия истины и фальши, поэтому он выводит «T», если ввод является повторной, и не выводит никаких символов, если ввод не является повторной.
источник
Желе ,
21 байтПопробуйте онлайн!
источник
1
-9
подсчет как repdigits?Октава , 11 байт
Попробуйте онлайн!
Принимает ввод в виде строки.
Он проверяет все символы на равенство с первыми символами. Если все равны, результатом будет вектор только с
1
(true в Октаве), в противном случае будет хотя бы один0
(false в Octave). Вот доказательство .источник
all(...)
чтобы получить истинное / ложное значение?grep, 17 байт
Соответствует любой строке, которая является повторением первого символа.
источник
C #,
423328 байтi
должен быть строкой.Много сбрил благодаря @LethalCoder
источник
i[0].ToString()
может быть сокращено доi[0]+""
,<1
короче чем==0
..Length<1
может быть просто==""
Braingolf , 6 байтов
Попробуйте онлайн!
К сожалению, неявный ввод Braingolf из аргументов командной строки не может принять ввод всех цифр в виде строки, он всегда будет приводить его к числу, поэтому вместо этого решение состоит в том, чтобы передать его через STDIN, который добавляет 1 байт для чтения STDIN (
i
)Объяснение:
После того, как
u
длина стеки равно число уникальных символов на входе, вычитание 1 означает , что будет ,0
если и только если существует ровно один уникальный характер на входе,0
является единственной falsey числа в Python, такn
будет заменить0
с1
, а все остальное с0
.источник
Japt , 4 байта
Попробуйте онлайн!
источник
JavaScript (ES6),
2321 байтСохранено 2 байта благодаря Нейлу
Принимает ввод в виде целого числа или строки. Возвращает логическое значение.
демонстрация
Показать фрагмент кода
источник
test
вместо!!exec
сохранения 2 байта?Ом , 4 байта
Попробуйте онлайн!
объяснение
источник
Ul≤
должно работать.0
, фальшивка, а все остальные числа правдивы. Я только что заметил, что для этой задачи нам нужно прямо противоположное (часто нам разрешают менять местами, если мы объявляем, какой случай правдивый, а какой ложный). Истина определяется "взял бы бранч".Ul1E
также должен работать (хотя я не знаю, ом), потому что он не должен обрабатывать 0.APL, 5 байт
2 байта сохранены благодаря @KritixiLithos
Попробуйте онлайн!
источник
⊢≡1⌽⊢
.⊢
на,⍕
чтобы обрабатывать как строки, так и числа.Java, 21 байт:
l
этоMutableList<Character>
из коллекции затмения.источник
l
также может быть CharAdapter.Котлин ,
2819 байтПопробуйте онлайн!
Принимает в качестве входа ,
String
потому чтообъяснение
Если вам не нравится тот факт , он принимает
String
, вы можете иметь один , который принимаетInt
на 24 байт .источник
Регулярное выражение (ECMAScript), 31 байт
Попробуйте онлайн!
Принимает ввод в унарном виде, как обычно для математических регулярных выражений (обратите внимание, что проблема с тривиальным вводом тривиальна: просто
^(.)\1*$
).Объяснение:
источник
PHP, 30 байт
источник
Нейм , 1 байт
Просто проверяет, что все элементы равны.
Без встроенного, 2 байта:
Объяснение:
Это работает, потому что только
1
в Нейме считается правдой, а все остальное ложно.Альтернативно, для 4 байтов:
Объяснение:
Попытайся!
источник
C, 38 байт
Рекурсивно гуляет строка. Если первые два символа отличаются (
*s^s[1]
), то мы добьемся успеха только в том случае, если мы находимся в конце строки (!s[1]
), в противном случае мы повторим тест в следующей позиции (f(s+1)
).Тестовая программа
источник
Ява,
383323 байтаn
этоString
, естественно.Обратите внимание, что нет необходимости
^...$
в регулярном выражении поскольку оно автоматически используется для точного сопоставления (например,match
метода) по сравнению с поиском в строке.Попытайся!
Сохраняет
String
поскольку «Вы можете безнаказанно принимать и использовать ввод как строку».источник
matches
не требуется,^$
потому что оно соответствует всей строке. Так что определенный +1 от меня. ;)R, 25 байт
Попробуйте онлайн
Лучшее решение без регулярных выражений, которое я мог придумать, было 36 байтов:
источник
rle(charToRaw(scan(,'')))$v[2]<1
Cubix , 15 байтов
Попробуйте онлайн!
Смотреть это работает
Выходы 1 для правды и ничего для фальси
Очень просто читать читает на входе по одному символу за раз. Уносит текущего персонажа от предыдущего. Если результат не равен нулю, он немедленно останавливается. В противном случае он продолжает вводить и сравнивать до ВЗ. На ВЗ (-1), отрицание и выход
источник
QBasic 4.5, 55 байт
Я соответствовал этому! Цикл FOR проверяет количество цифр на входе, а затем создает его
c
, который представляет собой последовательность из 1, равную длине ввода. Затем число является повторным числом, если оно состоит из одной строки == 0.Попробуйте онлайн! Обратите внимание, что онлайн-интерпретатор немного странный, и мне пришлось написать пару утверждений, что основанная на DOS среда IDE QBasic будет расширяться автоматически.
источник