терминология
Увеличивающееся число равно единице, где каждая цифра больше или равна всем цифрам слева от нее (например, 12239)
Уменьшающееся число - это число, где каждая цифра меньше или равна всем цифрам слева от нее (например, 95531)
Надувное число - это любое число, которое не увеличивается или не уменьшается. Поскольку для этого требуется как минимум 3 цифры, первое оживленное число - 101
Задание
Дано целое число n, большее или равное 1, найти сумму первых n оживленных чисел
правила
- Это код гольф, поэтому ответ с кратчайшим количеством байтов выигрывает
- Если ваш язык имеет ограничения на целочисленный размер (например, 2 ^ 32-1), n будет достаточно маленьким, чтобы сумма помещалась в целое число
- Входные данные могут быть в любой разумной форме (стандартный, файл, параметр командной строки, целое число, строка и т. Д.)
- Вывод может быть в любой разумной форме (стандартный вывод, файл, графический пользовательский элемент, отображающий число и т. Д.)
Контрольные примеры
1 > 101
10 > 1065
44701 > 1096472981
sort
узнать номера и проверить, совпадают ли они с исходным номером? Это использует встроенный (sort
), но это не совсем встроенный, чтобы проверить, увеличивается ли он. Ознакомьтесь с ненаблюдаемыми требованиями к программе и делайте X без Y в нашей мета-публикации «Что нужно избегать».Ответы:
Желе ,
108 байтПопробуйте онлайн!
Как это устроено
источник
ṚƬ
очень аккуратно ...Pyth , 10 байт
Попробуй это здесь!
Как это устроено?
источник
К (нгн / к) , 37 байт
Попробуйте онлайн!
{
}
это функция с аргументомx
x{
}\0
применяется{}
на0
x
время, сохраняя при этом промежуточные результаты(1+)
является функцией-преемником{
}(1+)/x+1
применяет функцию-преемник начиная сx+1
тех пор, пока не{}
вернет true10\x
десятичные цифрыx
a:
назначить вa
|\
максимальное сканирование (частичные максимумы)a
&\
аналогично, мин-сканa~|\a
этоa
соответствует его максимальному сканированию?|
илиa~&\a
его минимальное сканирование?+/
суммаисточник
JavaScript (ES6), 77 байт
Попробуйте онлайн!
комментарии
источник
Python 2,
1109289 байтПопробуйте онлайн
Эта функция определяет, является ли число бодрым:
источник
set(map(cmp,`x`[:-1],`x`[1:]))
.map
этот способ.x=s=0\nwhile n:b={-1,1}<=set(map(cmp,`x`[:-1],`x`[1:]));s+=x*b;n-=b;x+=1
сохраняет 3 байтаPython 2 , 84 байта
Попробуйте онлайн! Или посмотрите тестовый набор .
источник
Сетчатка , 93 байта
Попробуйте онлайн! Объяснение:
Инициализировать
s=i=0
. (s
число#
s до:
,i
число#
s после.)Повторите
n
раз.Повторять пока
i
не бодро.Увеличьте
i
и сделайте копию в десятичном виде.Преобразовать цифры копии в одинарные. Тест на бодрость использует унарную копию, поэтому он работает только один раз,
i
но был увеличен хотя бы один раз.Добавить
i
кs
и удалить копию одинарных цифр, так что для следующего прохода внутреннего цикла тест bounciness терпит неудачу , иi
получает приращение по крайней мере один раз.Преобразовать
s
в десятичную.121-байтовая версия рассчитывается в десятичном формате, поэтому может работать для больших значений
n
:Попробуйте онлайн! Объяснение:
Initialise
s=i=0
.Повторите
n
раз.Повторять пока
i
не бодро.Увеличить
i
и сделать копию.Преобразовать цифры копии в одинарные. Тест на бодрость использует унарную копию, поэтому он работает только один раз,
i
но был увеличен хотя бы один раз.Добавить
i
кs
и удалить копию одинарных цифр, так что для следующего прохода внутреннего цикла тест bounciness терпит неудачу , иi
получает приращение по крайней мере один раз.Удалить
i
.источник
05AB1E , 12 байтов
Попробуйте онлайн!
объяснение
источник
Java 8,
114112 байтИспользует регулярное выражение для проверки, увеличивается или уменьшается число. Попробуйте это онлайн здесь .
Ungolfed:
источник
Python 2, 250 байт
источник
;
для размещения как можно больше операторов в одной строке, удаляя пробелы и определяя функцию для 2 очень длинных строк, которые очень похожи, так что вы можете повторно использовать часть кода. Также вы можете сделатьa=b=s=0
иlen(g)!=h-1!=len(d)
.Stax , 14 байт
Запустите и отладьте его
источник
Красный , 108 байт
Попробуйте онлайн!
Более читабельно:
Хорошая возможность использования
form
-form i
на 5 байт корочеto-string i
источник
MATL ,
3130 байтПопробуйте онлайн!
источник
R , 96 байт
Попробуйте онлайн!
Пояснение:
источник
Рубин (123 байта)
Выглядит довольно уродливо для меня. Bounciness определяется в этом блоке
x.sort!=x&&x.sort!=x.reverse
источник
Рубин , 76 байт
Попробуйте онлайн!
источник
C (gcc), 104 байта
Попробуйте это онлайн здесь .
Ungolfed:
источник
u+=!y?--b,o:0,++o
вместоu+=y?0:o+0*--b,++o
,;y&=(c-=n%10)<0?:c?2:y)c=n%10,n/=10;
а не;)c=n%10,n/=10,y&=(c-=n%10)<0?:c?2:y;