Для заданного ввода 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

code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

3
Что обратного 100?
17

001, но в любом случае, это хорошо, если у вас есть дополнительные нули впереди
K Split X

4
Почему понизить? Поскольку этот вызов слишком тривиален (по сравнению с некоторыми другими вызовами, это не так!) Или потому что он плохо отформатирован / неясен?
user202729

2
@ user202729 Я понизил голос, потому что не видел и не ожидал большого разнообразия или глубины ответов. Этот вопрос скучный, я пробовал. Одна из причин, по которой он скучен, заключается в том, что он тривиален, что, я думаю, является совершенно справедливым поводом для самостоятельного ответа на вопрос.
Ad Hoc

Ответы:


10

05AB1E , 2 байта

R*

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

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


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 за игру в гольф!



@ benj2240 спасибо! :)
Yytsi

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


3

ARBLE , 12 байт

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

a*reverse(a)

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


Вот почему я сказал целочисленный ввод;), 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 байт, исправив ошибку, указанную Деннисом.


Нах его ясно, вы конвертируете в строку, [::-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 байта !




Разве это не партия, а не Баш? 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;

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



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

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в поле параметров.


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.



1

MATL , 5 байтов

VPUG*

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

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


1

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

i:0qr͍n*@

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

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

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



@ Только ASCII Справедливо. Я в конечном итоге возиться с большинством из них на работе и не всегда возвращаюсь, когда я отправляю их дома.
Draco18s больше не доверяет SE
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.