Для заданного ввода int n выведите n * reversed (n)

9

Учитывая целое число n, распечататьn * reversed(n)

reversed(n)это число, которое вы получаете, когда вы reverseцифры n.


reverse(512) = 215

reverse(1) = 1

reverse(101) = 101

>>>>>>>>

func(5) = 5*5 = 25

func(12) = 12*21 = 252

func(11) = 11*11 = 121

func(659) = 659*956 = 630004

Самый короткий код выигрывает!

Leaderboard

К Сплит Х
источник
3
Что обратного 100?
17
001, но в любом случае, это хорошо, если у вас есть дополнительные нули впереди
K Split X
4
Почему понизить? Поскольку этот вызов слишком тривиален (по сравнению с некоторыми другими вызовами, это не так!) Или потому что он плохо отформатирован / неясен?
user202729
2
@ user202729 Я понизил голос, потому что не видел и не ожидал большого разнообразия или глубины ответов. Этот вопрос скучный, я пробовал. Одна из причин, по которой он скучен, заключается в том, что он тривиален, что, я думаю, является совершенно справедливым поводом для самостоятельного ответа на вопрос.
Ad Hoc

Ответы:

10

05AB1E , 2 байта

R*

Попробуйте онлайн!

В 05AB1E целые числа и строки обрабатываются как эквивалентные типы, поэтому reversal ( R) преобразуется в строку и инвертирует, тогда как умножение ( *) обрабатывает реверс и ввод как целые числа.

Мистер Xcoder
источник
4
Â*действует тоже: D.
Волшебная Урна Осьминога
4

JavaScript (SpiderMonkey) , 45 35 33 28 байт

n=>n*[...n].reverse().join``

Попробуйте онлайн!

  • Сохранено 2 байта благодаря Денису
  • Сохранено 8 байт благодаря kamoroso94
  • Сохранено 2 байта благодаря ATaco
  • Сохранено 5 байтов благодаря Shaggy
Эпхелон Данцлер
источник
Добро пожаловать в PPCG! Вам не нужно считать f=; анонимные функции разрешены по умолчанию.
Деннис
Выключите (n+"").split("")для [...(n+"")]сохранения нескольких байтов. Вам не нужен унарный плюс, а круглые скобки вокруг перевернутой строки посторонние. В целом, это экономит 10 байт.
kamoroso94
Вы можете заменить .join("")на, .join``чтобы сохранить 2 байта.
ATaco
Сохраните 5 байтов, используя входные данные в виде строки: tio.run/##BcFRCoAgDADQu/ilQYP6t4tEoNgMzTZxIXR6ey/…
Shaggy
4

Желе , 3 байта

×ṚḌ

Я новичок в желе, поэтому, пожалуйста, дайте мне знать, если есть способ сделать это в 1 или 2 байта!

Попробуйте онлайн!

объяснение

×ṚḌ    (Input: 12)

 Ṛ     Reversed decimal digits (Stack: [2, 1])
×      Multiply by input       (Stack: [24, 12])
  Ḍ    Convert to decimal      (Stack: 252)
       Implicit print
Юнг Хван Мин
источник
На самом деле ṚḌ×была бы лучшая версия. Конечно, это все равно будет работать из-за того, как работают базы.
Эрик Outgolfer
@EriktheOutgolfer Первоначально я написал это сначала, но переместил ×для причудливости;)
JungHwan Мин
4

Рубин, 25 24 байта

->n{n*eval(n.digits*'')}

Попробуйте онлайн! ,

Integer#digits возвращает список перевернутых цифр, поэтому дальнейшая перестановка не требуется.

Спасибо @ benj2240 за игру в гольф!

Yytsi
источник
@ benj2240 спасибо! :)
Yytsi
Eval route на самом деле не работает, так как это приведет к сбою программы на 900 с ошибкой Invalid octal digit (SyntaxError)вместо возврата ожидаемых 8100 ...
Value Ink
3

ARBLE , 12 байт

Принимает ввод как int.

a*reverse(a)

Попробуйте онлайн!

Ataco
источник
Вот почему я сказал целочисленный ввод;), int все еще работает?
K Split X
@KSplitX О, я этого не заметил. Я думаю, что это ограничение немного излишне, но решать вам.
ATaco
@KSplitX Исправлено.
ATaco
Следует использовать n * reverse(n)так, чтобы оно nn * reversed(n)
совпадало
3

Python 3, 35 28 байт

lambda m:m*int(str(m)[::-1])

Попробуйте онлайн!

Сохранено 7 байт, исправив ошибку, указанную Деннисом.

LyricLy
источник
Нах его ясно, вы конвертируете в строку, [::-1]переворачиваете ее, затем мы оцениваем xD
K Split X
Это не работает для ввода 80 , так как 08является недопустимым (восьмеричным) литералом.
Деннис
3
Сохраняя 7 байт, исправляя ошибку, разве вам не нравится, когда это происходит ...
ETHproductions
3

Haskell , 27 23 байта

4 байта сохранены благодаря Линн и Лайкони

(*)=<<read.reverse.show

Попробуйте онлайн!

Специальный охотник за гарфами
источник
1
23 байта без импорта: попробуйте онлайн!
Лайкони
С Control.Monadтакже 23 байта: ap(*)$read.reverse.show.
Лайкони
1
Нет необходимости Control.Monad. (*)=<<read.reverse.showработает отлично.
Линн
@ Линн Спасибо! Я чувствую, что должен был это увидеть.
Специальный охотник на Гарф
3

C # .NET, 55 байт

n=>{int i=n,j=0;for(;i>0;i/=10)j=j*10+i%10;return n*j;}

Объяснение:

Попробуй это здесь.

n=>{           // Method with integer as both parameter and return-type
  int i=n,     //  Integer `i` (starting at the input)
      j=0;     //  Integer `j` (starting at 0)
  for(;i>0;    //  Loop as long as `i` is not 0
      i/=10)   //    After every iteration: Remove the last digit of `i`
    j=j*10     //   Add a trailing zero to `j`,
      +i%10;   //   and then sum this new `j` with the last digit of `i`
               //  End of loop (implicit / single-line body)
  return n*j;  //  Return the input multiplied with `j`
}              // End of method
Кевин Круйссен
источник
2

Пакет, 87 байт

@set s=%1
@set r=
:l
@set/ar=r*10+s%%10,s/=10
@if %s% gtr 0 goto l
@cmd/cset/a%1*r

Здесь нужно выбрать арифметический маршрут, так как смена строк не выполняется для некоторых чисел, например 80.

Нил
источник
2

J 7 байт

*|.&.":

Попробуйте онлайн!

Не могу придумать более короткий путь, хотя я чувствую, что это довольно элегантно.

объяснение

*|.&.":
   &.":  Convert to string, apply next function, then undo conversion
 |.      Reverse
*        Multiply by input
капуста
источник
2

LISP, 91 64 байта

(defun R (N) (defvar M (запись в строку N)) (parse-integer (обратный M))) (запись (* x (R x)))

(defun R(N)(write(* N(parse-integer(reverse(write-to-string N))))))

Где x N - ваше целое число, с которым вы хотите работать, конечно.

Я довольно новичок в программировании, но я обнаружил, что пробовать эти проблемы с Code Golf было хорошей практикой. Есть что-то, что я пропускаю, что могло бы помочь с этим?

РЕДАКТИРОВАТЬ: Благодаря некоторым советам от потолка, я смог сбрить несколько байтов. Старая программа сохранена в зачеркнутом виде для справки.

Эстет
источник
Добро пожаловать в Code Golf! Вы можете устранить некоторые пробелы и, возможно, отказаться от назначения переменной. Кроме того, по соглашению вы можете просто вернуть результат вместо(write ...)
floorcat
Вы можете сохранить байт, используя lambdaвместо defun. Также читайте советы по игре в гольф на lisp
ceilingcat
2

Баш, 52 48 байт

for((i=n=$1;r=r*10+i%10*n,i/=10;));{ :;};echo $r
Науэль Фуйе
источник
Вы можете заменить do...doneфигурные скобки, чтобы сохранить несколько байтов: попробуйте онлайн! , Это из подсказок к посту Bash .
Джастин Маринер
спасибо, я рад узнать это, я никогда не видел этот синтаксис, обновляя свой пост
Науэль Фуйе
Разве это не ракушка?
Стэн Струм
2

Пакетный , 150 125 121 байт (+ 5 байт? cmd/q)

set l=%1
set n=0
set r=
:L
call set t=%%l:~%n%,1%%%
set/an+=1
if [%t%] neq [] set r=%t%%r%&goto L
set/ar=%r%*%l%
echo %r%

Сохранено 25 байт благодаря пользователю 202729 !

Благодаря Matheus Avellar сэкономлено 4 байта !

Эпхелон Данцлер
источник
97 байт
user202729
Или 87 байтов
user202729
Разве это не партия, а не Баш? TIO для Bash не работает для этого.
Джастин Маринер
Да да это; извините за это
Ephellon Dantzler
Вы можете встраивать , что ifбыть на 121 байт: if [%t%] neq [] set r=%t%%r%&goto L. Тем не менее, я думаю, что вы должны включить 1 байт для /Qпередаваемого флага, cmdчтобы он @echo off
Матеус
2

> <>, 41 39 байт

:&>:a%:}-\
/~\?)0:,a/
>l1-?\&*n;
\ +*a/

Как это работает:

:&

Предположим, что ввод был перенесен в стек ( https://codegolf.meta.stackexchange.com/a/8493/76025 ). Дублируйте его и сохраните копию в реестре.

   >:a%:}-\
   \?)0:,a/

Преобразует это в отдельные цифры, оставляя их в стеке.

/~
>l1-?\
\ +*a/

Верхнее значение всегда будет нулевым из-за процесса преобразования цифр в цифры; бросьте это из стека. Теперь, когда длина> 1, умножьте первый элемент на десять и добавьте его к элементу под ним. Это приводит к изменению числа.

      &*n;

Умножьте исходное число на обратную, распечатайте ответ и остановитесь.

Bolce Bussiere
источник
33 байта
Джо Кинг
2

Ом v2 , 2 байта

œΠ

Попробуйте онлайн!

Объяснение:

œΠ   Main wire, arguments: n

œ    Pushes [n, n.reverse]
 Π   Multiplies that array together
     Implicit output
Ник Клиффорд
источник
2
остается на телефоне в течение 4 месяцев : P
K3v1n
Вы должны быть отложены на долгое время, чтобы не было никаких объяснений
MilkyWay90
@ MilkyWay90 Мы все застряли полтора года назад, верно?
Ник Клиффорд
@NickClifford Не у всех нас есть
MilkyWay90
1

Mathematica, 19 байт

# IntegerReverse@#&

Принимает целочисленный ввод.

Юнг Хван Мин
источник
1

Casio-Basic (fx-CP400), 44 байта

ExpToStr n,a
StrInv a,a
Print n*strToExp(a)

Там нет встроенного для обращения целого числа, но есть один для обращения строки.

ExpToStr n,aпревращает n в строку и сохраняет ее a, затем StrInv a,aперезаписывает aее обратной версией. Последняя строка превращается aв число и печатает n*a.

43 байта для кода, +1 для ввода nв поле параметров.

numbermaniac
источник
1

Japt, 2 байта

Принимает ввод в виде строки, выводит целое число.

*w

Попробуй это

мохнатый
источник
Ух ты, я думал, что это должно быть как минимум 4 байта ... Я предполагаю, что это только 3 байта, даже если принимать входные данные как целое число*sw
ETHproductions
@ETHproductions: да, это то, что у меня было изначально.
Лохматый
1

MATLAB / Octave , 33 31 байт

@(n)str2num(flip(int2str(n)))*n

Попробуйте онлайн!

Octave / MATLAB анонимная функция. Это довольно наивный подход - конвертирует целое число в строку, переворачивает строку, конвертирует результат обратно в целое число и умножает его на оригинал.


  • Сохраните 2 байта, используя flipвместо fliplr.
Том Карпентер
источник
1

PHP, 23 + 1 байт

<?=$argn*strrev($argn);

Сохранить в файл и запустить как канал с -nF.

Titus
источник
1

MATL , 5 байтов

VPUG*

Попробуйте онлайн!

Объяснение: Vпреобразует в строку, Pпереворачивает, Uпреобразует обратно в числовое значение, Gснова копирует исходный ввод и *умножает их вместе.

Б. Мехта
источник
1

Рунические чары , 11 10 байт

i:0qr͍n*@

Попробуйте онлайн!

Делает ввод, дублирует его, приводит одну копию к строке, переворачивает ее, возвращает ее к числовому значению, умножает и выводит результат.

0qвыполняет приведение к строке, конкатенируя ноль на конце. Там нет явного ToString()оператора, так что это самый короткий метод в данном конкретном случае, где 0, поменяемый местами с началом, не изменяет результирующее числовое значение. Спасибо ASCII-только за это -1 байт.

Draco18s больше не доверяет SE
источник
10
только ASCII
@ Только ASCII Справедливо. Я в конечном итоге возиться с большинством из них на работе и не всегда возвращаюсь, когда я отправляю их дома.
Draco18s больше не доверяет SE