Учитывая положительное целое число n в качестве входных данных, выведите сумму обратного диапазона n.
Сумма обратного диапазона создается путем создания включающего диапазона до n, начиная с 1 и включая n, обращая каждое из чисел внутри и суммируя его.
Пример:
Вот что произойдет для ввода 10:
Диапазон: [1,2,3,4,5,6,7,8,9,10]
Реверс: [1,2,3,4,5,6,7,8,9,01]
(1-символьные числа, обратные сами по себе, 10 обратные это 01 или 1)
Сумма: 46
Числа с 3+ цифрами меняются местами так же, как числа с 2 цифрами. Например, 1234 станет 4321.
Тестовые случаи:
Input -> Output
10 -> 46
5 -> 15
21 -> 519
58 -> 2350
75 -> 3147
999 -> 454545
Полные текстовые случаи для ввода 999 можно найти здесь , большое спасибо @ fireflame241.
code-golf
number
arithmetic
Товарищ Спаркл Пони
источник
источник
Ответы:
05AB1E , 3 байта
Код
Использует кодировку 05AB1E . Попробуйте онлайн!
объяснение
источник
Reverse
должно быть наReverse each
самом деле ...R
, аí
«обратный каждый».Утилиты Bash + GNU, 24
Попробуйте онлайн .
объяснение
источник
JavaScript (ES6), 42 байта
Моё любимое двухрекурсивное решение, к сожалению, на 3 байта длиннее:
источник
Perl 6 , 20 байт
Попробуй это
Expanded:
источник
».flip
вызывает.flip
метод по каждому из значений в диапазоне. Следующий кратчайший способ сделать это.map(*.flip)
на 5 байтов больше.».flip
под вызовом гипер-метода. Хотя я могу разделить»
и.flip
, используя пробел,\
как я делал до этого; это усложнит понимание, так как это будет выглядеть как конецqqww/ /
конструкции (« a b "c d" »
).Сетчатка ,
413635 байтПопробуйте онлайн! Ссылка включает в себя тестовые случаи. Редактировать: 5 байтов сохранено благодаря @FryAmTheEggman. Сохранено 1 байт благодаря @ PunPun1000. Объяснение:
Преобразовать в одинарный.
Создайте диапазон от
1
доn
.Конвертировать обратно в десятичную.
Переверните каждый номер.
Конвертировать обратно в одинарный.
Суммируйте и преобразуйте обратно в десятичную.
источник
¶
чтобы.+¶
матч совпадал между строкO^$s`.
перевернуть всю строку также работает.Желе , 4 байта
Попробуйте онлайн!
Как?
источник
Haskell, 34 байта
Просто и понятно.
источник
C (gcc) , 63 байта
Попробуйте онлайн!
источник
cQuents , 4 байта
Попробуйте онлайн!
объяснение
источник
Python 2 , 38 байт
Невозможно вычислить более высокие условия, чем предел рекурсии:
Попробуйте онлайн!
источник
import sys
и,sys.setrecursionlimit()
если вы хотите обрабатывать большие числа, в заголовке TIO.Брахилог , 4 байта
Попробуйте онлайн!
объяснение
источник
Röda ,
564136 байт15 байтов сохранено благодаря @fergusq
Попробуйте онлайн!
Это анонимная функция, которая берет целое число из входного потока и выводит целое число в выходной поток.
объяснение
источник
[::-1]
вместо обратного. Также `$_
` короче, чем_..""
и скобки после parseInteger не нужны.C # (.NET Core) ,
10397 байтПопробуйте онлайн!
TIO link выводит все результаты с 1 по 999, так что не стесняйтесь проверять мою работу.
Я ожидал, что это будет немного короче, но, как оказалось,
Reverse()
возвращаетIEnumerable<char>
вместо другой строки, поэтому мне пришлось добавить несколько дополнительных, чтобы превратить его обратно в строку, чтобы я мог разобрать его в int. Может быть, есть более короткий путь отIEnumerable<char>
правильно к int.Небольшое примечание, это также использует функцииRange()
Reverse()
иSum()
все по порядку.-6 байт благодаря TheLethalCoder
источник
new int[r]
и.Select((_,n)=>...)
сэкономит вам байты.new int[r+1]
для получения правильного вывода, так как индекс начинается с 0, но он все же сохраняет несколько байтов. RIP ,Range()
хотяРубин,
56, 52, 41,39 байтRuby, 34 байта (если лямбда-параметр является строкой)
Спасибо @Unihedron за второе решение.
источник
->n{
работает так же.?a..?z
и?a1..?h8
(хотя вам лучше быть осторожным со вторым форматом: D)succ
и 2. (если начальное или конечное значение не реализованоsucc
) должны быть числовыми, поэтомуint..string
будет отклонено как «Плохое значение для диапазона». Инверсия верна (но, увы, нет никакого нижнего диапазона), или(?1..n)
может использоваться вместо этогоMathematica, 47 байт
Попробуйте онлайн! (чтобы работать над математикой, нам нужно заменить «Tr» на «Total»)
источник
Tr@*IntegerReverse@*Range
Древесный уголь ,
1413 байт-1 байт благодаря Карлосу Алехо
Попробуйте онлайн! Ссылка на подробную версию.
объяснение
источник
»
. Кстати, где в вики CharcoalReduce
документирован оператор?Modulo
оператор для форматирования строк в Charcoal?Магнесон , 102 байта
Это не очень заметно, так что вот увеличенная версия (Примечание: на самом деле не запускается, и все же не очень красиво)
Магнезон работает, анализируя изображение и оценивая команды по цветам пикселей, которые он читает. Таким образом, пройдя изображение для этого вызова, мы имеем:
R: 0, G: 1, B: 1
целочисленная команда присваивания, которая принимает строку для имени переменной и значения для назначения. Мы будем использовать это для хранения итоговой суммы.R: 0, G: 1, B: 0
является предварительно созданной строкой со значениемVAR_1
(Примечание: это только когда мы запрашиваем строку; цветовой код имеет отдельную функцию при использовании в другом месте).R: 3, G: 0, B: 0
это необработанное число. Магнесон обрабатывает стандартные числа, требуя, чтобы компонент Red был точно равен 3, а затем формирует число, используя непосредственно синее значение плюс значение зеленого, умноженное на 256. В этом случае мы просто получаем число 0.R: 0, G: 1, B: 1
другая целочисленная команда присваивания На этот раз мы храним переменную итерации, чтобы отслеживать, на каком числе мы находимсяR: 0, G: 1, B: 1
предустановленная строка со значениемVAR_2
(еще раз, только когда нам нужна строка)R: 3, G: 0, B: 0
число 0, еще раз. На интересные биты сейчас.R: 1, G: 0, B: 0
указывает на начало цикла. Это берет число и повторяет следующий фрагмент кода много раз.R: 2, G: 0, B: 0
это функция STDIN, или, по крайней мере, это когда нам нужно число. Это читает строку ввода из консоли и превращает ее в число, так как мы попросили номер.R: 0, G: 8, B: 0
запускает наш цикл, и это аддитивная команда. Это добавляет число к целочисленной переменной и, таким образом, принимает строку для имени переменной и добавляемого числа.R: 0, G: 1, B: 1
это готовая строка дляVAR_2
, которая является нашей итерационной переменной.R: 3, G: 0, B: 1
это необработанное число, но на этот раз это номер 1.R: 0, G: 8, B: 0
это еще одна команда сложения.R: 0, G: 1, B: 0
это строка дляVAR_1
, которая является нашей общей суммой.R: 0, G: 3, B: 0
это функция, которая переворачивает строку В контексте запроса числа он затем преобразует обратную строку в число.R: 0, G: 2, B: 1
является целочисленной командой поиска, и будет извлекать число, сохраненное в предоставленной переменной. В контексте запроса строки (например, из обратной команды) он преобразует число в строку.R: 0, G: 1, B: 1
это имяVAR_2
; наша итерационная переменная.R: 1, G: 0, B: 1
является маркером для завершения цикла и возврата к началу цикла, если критерии не выполнены (поэтому, если нам нужно продолжать цикл). В противном случае продолжайте.R: 0, G: 0, B: 1
это очень простая команда println, которая принимает строку.R: 0, G: 2, B: 1
извлекает целое число из переменнойR: 0, G: 1, B: 0
Имя нашей общей суммы переменных,VAR_1
В общем, программа:
VAR_1
иVAR_2
VAR_2
VAR_2
кVAR_1
VAR_1
источник
Python 2 ,
5047 байт-3 байта благодаря официальнымaimm!
Попробуйте онлайн!
источник
str
сохранять 3 байта.CJam , 12 байт
Попробуйте онлайн!
-1 благодаря Business Cat .
Объяснение:
источник
,
APL (Dyalog) ,
107 байтов3 байта в гольфе благодаря @ Adám путем преобразования из поезда в tradfn
Попробуйте онлайн!
источник
+/⍎⌽⍕⍳⎕
¨
было умным :)Java 8, 97 байт
РЕДАКТИРОВАТЬ
Согласно комментарию
Kevin Cruijssen
, я хотел бы улучшить свой ответ.Java 8, 103 байта
источник
Integer.valueOf
может быть в гольфnew Integer
, и.reverse().toString()
может быть в гольф.reverse()+""
. Кроме того, вы должны включить необходимые параметры импорта и лямбда, какjava.util.stream.IntStream
иn->
до него. И вы также можете играть в гольфIntStream
иInteger
кLongStream
иLong
. Окончательный ответ будетn->java.util.stream.LongStream.range(1,n+1).map(i->new Long(new StringBuffer(""+i).reverse()+"")).sum()
( 103 байта - ваш текущий ответ с добавленным параметром import и лямбда будет 117 байтов .) +1, хороший ответ!Джапт ,
75 байт-2 байта благодаря @Shaggy.
Попробуйте онлайн!
объяснение
Старое решение, 7 байт
Держать это, потому что это действительно классное использование
z2
.Попробуйте онлайн!
объяснение
источник
z2
для плоского массива это то же самоеw
, верно ... хм ... извините мою неадекватность в Джапте ...õ_swÃx
благодаря новому дополнениюN.s(f)
.õs xw
на 5 байтов.z2
трюк; это было чертовски гениально. Обратите внимание, что неконкурентоспособность больше не вещь .C ++, 146 байт
источник
auto
.auto
необходимо ключевое словоusing namespace std;
сохранение байтов.Шелуха ,
7 63 байтаПопробуйте онлайн!
Ungolfed / Пояснение
источник
Perl 5 ,
29 2722 + 1 (-p
) = 23 байтаПопробуйте онлайн!
источник
map$r+=reverse,1..<>;say$r
.-p
RProgN 2 , 8 байтов
Разъяснения
Попробуйте онлайн!
источник
Пиф ,
86 байтов-2 байта благодаря FryAmTheEggman!
Попробуйте онлайн!
источник
sms_`dS
которая не злоупотребляет неявнымU
в конце.Tcl , 66 байт
Попробуйте онлайн!
источник
Нейм , 4 байта
Попробуйте онлайн!
объяснение
источник
𝐈Ψ𝐫𝐬
(создайте инклюзивный диапазон, переверните каждый элемент,Ψ
токен существует! определенно использовал бы это задним числом. очень приятноC (gcc) , 71 байт
Попробуйте онлайн!
источник
f()
возвращает свой результат без каких-либоreturn
утверждений? Лиe=a
инструкция регистрами таким образом, что результат сохраняется в том же регистре, который используется возвращаемыми значениями?