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