Лестничный номер представляет собой положительное целое число x, такое, что его n- тая цифра (одна индексированная, начиная с наименьшей значащей цифры) равна x% (n + 1) . Это немного глоток, поэтому давайте посмотрим на пример. Возьмем 7211311 , если мы возьмем модульные остатки 7211311 в диапазоне 2-8, мы получим следующее:
7211311 % 2 = 1
7211311 % 3 = 1
7211311 % 4 = 3
7211311 % 5 = 1
7211311 % 6 = 1
7211311 % 7 = 2
7211311 % 8 = 7
Это цифры 7211311 ! Таким образом, 7211311 - это номер лестницы.
задача
Записать код, который принимает, когда в качестве входных данных задано положительное число, будут выводиться два различных значения: одно, если число является числом лестницы, и другое, если это не так.
Это соревнование по коду-гольфу, поэтому ваша цель должна заключаться в том, чтобы минимизировать количество байтов в исходном коде.
Тестовые случаи
Вот первые 13 номеров лестниц:
1, 10, 20, 1101, 1121, 11311, 31101, 40210, 340210, 4620020, 5431101, 7211311, 12040210
источник
0
лестница номер? Многие ответы так считают.Ответы:
Хаскелл, 55
57байтДругой подход, чем другое решение Haskell.
Спасибо xnor за сохранение 2 байта.
источник
let
выражение.Брахилог ,
25211614 байтПопробуйте онлайн!
Первое представление Brachylog: D,
вероятно, очень безрассудно... большое спасибо Leaky Nun и Fatalize за поддержку и помощь в игре в гольф с 25 до 14 лет :) :) :)источник
Javascript,
42413938 байт-4 байта благодаря @Shaggy и @ETHProductions
Это берет число как строку и возвращает,
false
если число является числом лестницы иtrue
иначе.Пример кода:
источник
!
поскольку в задаче явно не указано, что вы должны возвращать значенияtrue
true иfalse
false, просто вы должны вернуть 2 разных значения.i
сами:s=>[...s].some(d=>s%i--^d,i=s.length+1)
~x == -(x+1)
на целых числах иx%-y == x%y
, я думаю, вы можете получить еще один:s=>[...s].some(d=>s%i++^d,i=~s.length)
05AB1E , 6 байтов
Код:
Использует кодировку 05AB1E . Попробуйте онлайн!
Объяснение:
источник
Haskell, 60 байт
Принимает число как int
источник
Mathematica, 60 байт
Попробуйте онлайн!
@alephalpha сыграл в гольф до 48
Mathematica, 48 байтов
следующий 24120020
источник
Python 2 , 54 байта
Попробуйте онлайн!
источник
Джапт ,
97 байтПринимает ввод в виде строки.
Попробуй это
объяснение
Мы неявно принимаем строку в качестве входных данных.
Карта каждого символа в строке.
J
является константой Japt-1
и´
уменьшает ее на 1 при каждом проходе (--
в JavaScript). Итак, на первом проходе это дает нам-2
.Мы используем это значение для выполнения операции по модулю над входной строкой, которая автоматически преобразуется в процесс в целое число. В JavaScript
x%-y
дает тот же результат, что иx%y
.Переверните полученную строку.
Проверьте, совпадает ли новая строка с исходным вводом и неявно выведите результат как логическое значение.
источник
(Y+2
, я чувствую, что это может быть как минимум на 1 байт короче ...¥£%´JÃw
:-) (потому что работаетx%y == x%-y
в JS)Нейм , 6 байт
Объяснение:
Попробуйте онлайн!
источник
Желе , 7 байт
Попробуйте онлайн!
источник
Python 2 , 56 байт
Попробуйте онлайн!
источник
Perl 6 , 32 байта
Попробуйте онлайн!
.comb
это количество символов в строковом представлении входного аргумента$_
(то есть количество цифр).1 + .comb ... 2
последовательность чисел от одного больше, чем количество цифр до 2.«%«
представляет собой модуль hyperoperator , что дает остаток , когда$_
, входной аргумент на его слева, делится на каждый из элементов последовательности на своем праве:$_ % 2, $_ % 3, ...
.[~]
объединяет эти цифры в новое число, которое сравнивается с входным аргументом с помощью оператора равенства строкeq
.источник
PHP , 43 байта
Попробуйте онлайн!
PHP , 44 байта
печатает 1 за правду и ничего за ложь
Попробуйте онлайн!
источник
Pyth , 13 байт
-1 байт благодаря Okx .
Попробуйте онлайн!
объяснение
Альтернативное решение , все еще 13 байт (благодаря карлкастору )
Попробуйте онлайн! По сути, это то же самое, что и первое решение, за исключением того, что оно используется
i
для преобразования массива чисел в число, а диапазон генерируется по-разному.источник
ss`M_
на,jk_
чтобы сохранить 2 байта.j
выводит строку, а мне нужно число для сравнения с входом (это число).qi_.e%Q+2k`QT
использование перечислимой map (.e
) вместо map. И преобразование остатков в базу 10 int из списка вместо использования соединения.C ++, 104 байта
1) оригинальная версия:
2) в читаемой форме:
Попробуйте онлайн!
источник
Пари / ГП , 42 байта
Попробуйте онлайн!
источник
Python 2 ,
66 60 5857 байтx and
(не должны проверять на 0)enumerate
Попробуйте онлайн!
источник
Python 3: 63 байта
Если бы я мог посчитать, сколько раз я хотел, чтобы «перечисление» было короче ...
Попробуйте онлайн!
источник
lambda m:all(m%n==int(x)for n,x in enumerate(str(m)[::-1],2))
Java (OpenJDK 8) , 60 байт
Попробуйте онлайн!
Нестроковая версия.
источник
Java 8,
156149байтUngolfed:
Попробуйте онлайн!
ОБНОВЛЕНИЕ:
-7 байт : удалено бесполезно
{}
и замененоInteger.parseInt(...)
наnew Integer(...)
-9 байт : благодаря Кевину Круйссену удалено множество бесполезных
()
, используемыхLong
вместоInteger
иprint
вместоprintln
. Спасибо, Кевин!источник
new Integer
может бытьnew Long
(-3 байта);println
может бытьprint
(-2 байта); и вы можете удалить круглые скобкиnew Long(s[0])%i+f;
(-4 байта).Древесный уголь ,
2015 байтПопробуйте онлайн! Выходы
-
для лестничного номера, ничего другого. Ссылка на подробную версию кода.источник
Python 2, 61 байт
источник
q / kdb +, 34 байта
Решение:
Пример:
Объяснение:
Приведите входной номер к строке, отсчитайте от 0 до длины строки, добавьте 2 ко всем, переверните ее и введите каждое число
mod
вместе с исходным вводом. Приведите результат мода к строке и уменьшите список, проверьте, равен ли он строке входного числа:Заметки:
Большая часть решения для генерации
2,3,4..
списка, у меня есть другое решение, которое делает меньше вещей, но в итоге получается 37 байт после игры в гольф:источник
Clojure, 75 байтов
Ввод - это строка, использующая
map
и трейлинг%
оказался короче, чемfor[i(range(count %))]
подход.источник
Haskell, 62 байта
f x=and$zipWith(==)(reverse$show x)$map(head.show.mod x)[2..]
Вместо того, чтобы обратить (бесконечный) список модулей в обратный, он обрезает список, сжав его с помощью перевернутой строки-представления интеграла x, который он затем обеспечивает равным для каждого элемента.
источник
Perl 5 , 41 байт
39 байт кода + 2 флага
-pa
Попробуйте онлайн!
Ничего не выводит (undef) для номеров лестниц, 1 для всего остального
источник