Dada uma entrada int n, imprima n * invertido (n)

9

Dado um número inteiro n, impriman * reversed(n)

reversed(n)é o número que você obtém quando reversedigita os dígitos 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

O menor código vence!

Entre os melhores

K Divisão X
fonte
3
Qual é o inverso 100?
TSH
001, mas, em qualquer caso, tudo bem se você tiver zeros adicionais na frente
K Split X
4
Por que voto negativo? Porque esse desafio é muito trivial (compare com alguns outros desafios, não é!) Ou porque é mal formatado / pouco claro?
user202729
2
@ user202729 Fiz uma votação baixa porque não vi ou previ muita variedade ou profundidade de respostas. Esta pergunta é chata, eu tentei. Parte do motivo é chato, porque é trivial, o que eu acho que é uma causa perfeitamente justa para rebater uma questão por si própria.
Ad Hoc Garf Hunter

Respostas:

10

05AB1E , 2 bytes

R*

Experimente online!

Em 05AB1E, números inteiros e seqüências de caracteres são tratados como tipos equivalentes, então reversal ( R) se converte em sequência e inverte, enquanto a multiplicação ( *) trata o reverso e a entrada como números inteiros.

Mr. Xcoder
fonte
4
Â*também é válido: D.
Magic Octopus Urn
4

JavaScript (SpiderMonkey) , 45 35 33 28 bytes

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

Experimente online!

  • Economizou 2 bytes graças a dennis
  • Guardado 8 bytes graças a kamoroso94
  • Economizou 2 bytes graças ao ATaco
  • Guardado 5 bytes graças a Shaggy
Ephellon Dantzler
fonte
Bem-vindo ao PPCG! Você não precisa contar f=; funções anônimas são permitidas por padrão.
Dennis
Troque (n+"").split("")para [...(n+"")]salvar alguns bytes. Você não precisa do plus unário, e os parênteses ao redor da string invertida são estranhos. Em suma, você economiza 10 bytes.
kamoroso94
Você pode substituir .join("")por .join``para salvar 2 bytes.
ATaco 10/10
Guardar 5 bytes por tomar entrada como uma string: tio.run/##BcFRCoAgDADQu/ilQYP6t4tEoNgMzTZxIXR6ey/...
Shaggy
4

Gelatina , 3 bytes

×ṚḌ

Eu sou novo no Jelly, por isso, deixe-me saber se existe uma maneira de fazer isso em 1 ou 2 bytes!

Experimente online!

Explicação

×ṚḌ    (Input: 12)

 Ṛ     Reversed decimal digits (Stack: [2, 1])
×      Multiply by input       (Stack: [24, 12])
  Ḍ    Convert to decimal      (Stack: 252)
       Implicit print
JungHwan Min
fonte
Na verdade, ṚḌ×seria uma versão melhor. Claro que isso ainda funcionaria, devido a como as bases funcionam.
Erik the Outgolfer
@EriktheOutgolfer eu escrevi originalmente que o primeiro, mas mudou o ×para fanciness;)
JungHwan Min
4

Ruby, 25 24 bytes

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

Experimente Online! .

Integer#digits retorna uma lista de dígitos invertidos; portanto, não é necessária uma reversão adicional.

Obrigado a @ benj2240 por jogar um byte!

Yytsi
fonte
@ benj2240 obrigado! :)
Yytsi
A rota eval não funciona, pois fará com que o programa falhe no 900 com erro, em Invalid octal digit (SyntaxError)vez de retornar o esperado 8100 ...
Value Ink
3

ARBLE , 12 bytes

Recebe entrada como int.

a*reverse(a)

Experimente online!

ATaco
fonte
É por isso que eu disse entrada inteira;), int ainda funciona?
K Dividir X
@KSplitX Ah, eu não percebi isso. Eu acho essa restrição um pouco desnecessária, mas depende de você.
ATaco 10/10
@KSplitX Fixed.
ATaco 10/10
Deve usar n * reverse(n)para que corresponda à especificação da pergunta, palavra por palavra (dado um número inteiro n, imprima n * reversed(n)) #
0412 Okx
3

Python 3, 35 e 28 bytes

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

Experimente online!

Economizou 7 bytes corrigindo um bug apontado por Dennis.

LyricLy
fonte
Nah seu claro, você converter a corda, os [::-1]reveses, então nós eval xD
K Dividir X
Isso não funciona para a entrada 80 , pois 08é um literal inválido (octal).
Dennis
3
Salvo 7 bytes através da fixação de um bug que você não apenas adoro quando isso acontece ...
ETHproductions
3

Haskell , 27 23 bytes

4 bytes salvos graças a Lynn e Laikoni

(*)=<<read.reverse.show

Experimente online!

Caçador Ad Hoc Garf
fonte
11
23 bytes sem importação: Experimente online!
Laikoni 10/10
Com Control.Monadele também é de 23 bytes: ap(*)$read.reverse.show.
Laikoni 10/10
11
Não há necessidade Control.Monad. (*)=<<read.reverse.showfunciona bem.
Lynn
@Lynn Thanks! Eu sinto que deveria ter visto isso.
Ad Hoc Garf Hunter
3

Perl 6 , 10 bytes

{$_*.flip}

Tente

Expandido

{       # bare block lambda with implicit parameter $_
  $_
  *
  .flip # implicit method call on $_
}
Brad Gilbert b2gills
fonte
3

C # .NET, 55 bytes

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

Explicação:

Experimente aqui.

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
Kevin Cruijssen
fonte
2

Lote, 87 bytes

@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

É necessário seguir a rota aritmética aqui, pois a inversão de string falha em alguns números, como 80.

Neil
fonte
2

J, 7 bytes

*|.&.":

Experimente online!

Não conseguia pensar em um caminho mais curto, embora eu sinta que isso é bastante elegante.

Explicação

*|.&.":
   &.":  Convert to string, apply next function, then undo conversion
 |.      Reverse
*        Multiply by input
Cole
fonte
2

C (gcc) , 49 bytes

i,a;f(n){for(i=0,a=n;a>0;a/=10)i=i*10+a%10;n*=i;}

Experimente online!

Freira Furada
fonte
5
Sugerir substituição a>0por justa
tetocat 10/10
2

LISP, 91 64 bytes

(defun R (N) (defvar M (gravação na cadeia N)) (analisar número inteiro (M reverso))) (escrever (* x (R x)))

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

Onde x N é o número inteiro com o qual você deseja trabalhar, é claro.

Sou bastante iniciante em programação, mas descobri que tentar esses problemas com o Code Golf tem sido uma boa prática. Está faltando algo que poderia ajudar com isso?

EDIT: Graças a algumas dicas do tetocat, eu era capaz de cortar alguns bytes. Programa antigo preservado em tachado para referência.

Esthete
fonte
Bem-vindo ao Code Golf! Você pode eliminar alguns espaços em branco e talvez abandonar uma atribuição de variável. Além disso, por convenção você pode ser capaz de simplesmente retornar a saída em vez de(write ...)
ceilingcat
Você pode salvar um byte usando um em lambdavez de defun. Além disso, leia dicas para jogar golfe em lisp
ceilingcat 10/10
2

bash, 52 48 bytes

for((i=n=$1;r=r*10+i%10*n,i/=10;));{ :;};echo $r
Nahuel Fouilleul
fonte
Você pode substituir do...donepor chaves para economizar alguns bytes: Experimente online! . Isso é das dicas para a postagem do Bash .
Justin Mariner
obrigado, fico feliz em saber que nunca tinha visto essa sintaxe, atualizando meu post
Nahuel Fouilleul 10/10
Não é esse shellshock?
Stan Strum
2

Lote , 150 125 121 bytes (bytes + 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%

Economizou 25 bytes graças a user202729 !

Guardado 4 bytes graças a Matheus Avellar !

Ephellon Dantzler
fonte
97 bytes
user202729
Ou, 87 bytes
user202729 10/10
Não é este lote, não é bash? O TIO para bash não funciona para isso.
Justin Mariner
Sim Sim é isso; sinto muito por isso
Ephellon Dantzler
Você pode embutida que ifestar em 121 bytes: if [%t%] neq [] set r=%t%%r%&goto L. No entanto, eu acho que você tem que incluem 1 byte para o /Qsinalizador passado para cmdque ele funcione com implícita@echo off
Matheus Avellar
2

> <>, 41 39 bytes

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

Como funciona:

:&

Suponha que a entrada tenha sido enviada por push para a pilha ( https://codegolf.meta.stackexchange.com/a/8493/76025 ). Duplique e armazene uma cópia no registro.

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

Converte isso em dígitos individuais, deixando-os na pilha.

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

O valor superior sempre será zero devido ao processo de conversão de número em dígito; solte-o da pilha. Agora, enquanto o comprimento for> 1, multiplique o primeiro item por dez e adicione-o ao item abaixo dele. Isso resulta no número revertido.

      &*n;

Multiplique o número original pelo contrário, imprima a resposta e pare.

Bolce Bussiere
fonte
33 bytes
Jo King
2

Ohm v2 , 2 bytes

œΠ

Experimente online!

Explicação:

œΠ   Main wire, arguments: n

œ    Pushes [n, n.reverse]
 Π   Multiplies that array together
     Implicit output
Nick Clifford
fonte
2
permanece no telefone por 4 meses : P
K3v1n 22/02/19
Você deve ser colocada em espera por um longo tempo para que haja nenhuma explicação
MilkyWay90
@ MilkyWay90 Todos nós ficamos presos por um ano e meio antes, certo?
Nick Clifford
@NickClifford Nem todos nós temos
MilkyWay90
1

Mathematica, 19 bytes

# IntegerReverse@#&

Toma uma entrada inteira.

JungHwan Min
fonte
1

cQuents 0 , 8 bytes

#|1:A\rA

Experimente online!

Explicação

#|1:      Output first term in sequence
    A\rA  Each term in the sequence equals:
           A * \reverse(A)
Stephen
fonte
1

Casio-Basic (fx-CP400), 44 bytes

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

Não existe um built-in para reverter um número inteiro, mas existe um para reverter um string.

ExpToStr n,atransforma n em uma sequência de caracteres e a armazena e, em aseguida, StrInv a,asobrescreve aa versão invertida de si mesma. A última linha se transforma aem um número e é impressa n*a.

43 bytes para o código, +1 para inserir nna caixa de parâmetros.

numbermaniac
fonte
1

Japonês, 2 bytes

Pega a entrada como uma string e gera um número inteiro.

*w

Tente

Shaggy
fonte
Uau, eu pensei que teria que ser de 4 bytes, pelo menos ... Acho que é apenas 3 mesmo se pegar a entrada como um inteiro*sw
ETHproductions
@ETHproductions: sim, era o que eu tinha originalmente.
Shaggy
1

MATLAB / Oitava , 33 31 bytes

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

Experimente online!

Função anônima Octave / MATLAB. Essa é uma abordagem bastante ingênua - converte o número inteiro em uma sequência, inverte a sequência, converte o resultado novamente em um número inteiro e multiplica-o pelo original.


  • Salve 2 bytes usando em flipvez de fliplr.
Tom Carpenter
fonte
1

PHP, 23 + 1 bytes

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

Salve em arquivo e execute como pipe com -nF.

Titus
fonte
1

MATL , 5 bytes

VPUG*

Experimente online!

Explicação: Vconverte em sequência, Pvira, Uconverte novamente em numérico, Gcopia a entrada original novamente e as *multiplica.

B. Mehta
fonte
1

Encantos Rúnicos , 11 10 bytes

i:0qr͍n*@

Experimente online!

Pega entrada, duplica, coage uma cópia para uma sequência, inverte, coage de volta a um valor numérico, multiplica e gera o resultado.

0qexecuta a coerção em uma string concatenando um zero no final. Não há ToString()operador explícito , portanto, este é o método mais curto nesse caso específico, em que o 0 trocado para o início não altera o valor numérico resultante. Graças ao ASCII-only para este -1 byte.

Draco18s não confia mais no SE
fonte
10
somente ASCII
@ Apenas ASCII justo o suficiente. Acabo brincando com a maioria delas no trabalho e nem sempre as revisito quando vou publicá-las em casa.
Draco18s não confia mais em SE