Escreva uma função (ou subprograma equivalente) para aceitar um único argumento com valor inteiro e retorne um valor (do mesmo tipo) encontrado revertendo a ordem dos dígitos da base 10 do argumento.
Por exemplo, dado 76543, retorne 34567
Escreva uma função (ou subprograma equivalente) para aceitar um único argumento com valor inteiro e retorne um valor (do mesmo tipo) encontrado revertendo a ordem dos dígitos da base 10 do argumento.
Por exemplo, dado 76543, retorne 34567
Respostas:
‮n
substitua n
pelo seu número
Your search -
- não encontrou nenhum documento.
data:text/html,&%238238;egnahcxEkcatS olleH
Python
int(str(76543)[::-1])
EDITAR:
Solução mais curta, conforme sugerido por @gnibbler:
int(`76543`[::-1])
ou, se acima não estiver claro:
x=76543
int(`x`[::-1])
s[::-1]
é muito mais rápido do que''.join(reversed(s))
Universal ( independente de idioma / independente )
Se você deseja usar apenas números (evite converter o número em string) e não quiser usar alguma biblioteca específica (para ser universal para qualquer idioma):
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
Isso é python, mas pode ser feito em qualquer idioma, porque é apenas um método matemático.
mod
por %
, é válido Python;) #
y=y*10+x%10
....
".|.":y
Onde y é o seu valor.
|.&.":
"reverse under do", que é praticamente uma tradução literal da tarefa.
Programa executável completo:
N.@
Onde N
está o seu número? As regras dizem "aceitar um único argumento com valor inteiro "; No Befunge, você só pode inserir números inteiros de 0 a 9.
Inspirado pela resposta de Kiril Kirov acima. Fiquei curioso sobre as propriedades matemáticas de reverter um número, então decidi investigar um pouco.
Acontece que, se você plotar a diferença n - rev(n)
para números naturais n
em alguma base r
, obtém padrões como este ( (n - rev(n)) / (r - 1)
para r=10
, agrupados em r
colunas, vermelho indica número negativo):
Esta sequência pode ser gerada como tal (pseudocódigo):
for i=1 to r:
output 0
for m=0, 1, …
for k=1 to (r-1):
for d=1 to r^m:
for i=0 to (r-1):
output (r-1) * (r+1)^m * (k - i)
Se você armazenar esses valores em uma lista / matriz, n - arr[n]
obterá a forma invertida de n
. Agora, para "jogar matematicamente" isso, idealmente, queremos uma expressão de forma fechada que nos forneça o n: ésimo valor na sequência, para que possamos ter uma expressão de forma fechada para resolver a tarefa inteira. Infelizmente, não consegui encontrar essa expressão ... mas parece que deveria ser possível. :(
Então, sim, não tanto um código-golfe quanto uma curiosidade matemática, mas se houver uma expressão de forma fechada da sequência acima, ela pode realmente ser útil em envios adequados de golfe PL.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)
?
(+0)
: Homem legítimo! Embora tecnicamente você não precise disso .(+0)
, pois f
seria mais polimórfico do que o problema requer (é permitido retornar uma saída com 'tipo semelhante'). Eu rasparia esses 5 caracteres.
:se ri<CR>C<C-R>"
x = 13456
x.to_s.reverse
.to_s.reverse.to_i
em conformidade com as especificações.
É possível converter um número em uma sequência, depois inverta a sequência e depois converta-a novamente em número. Esse tipo de recurso provavelmente está disponível em todos os idiomas. Se você está procurando um método mais matemático, isso pode ajudar:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
r=lambda i:int(str(i)[::-1])
print(input()[::-1])
Considero que alguns dos outros exemplos de Python são trapaceiros, ou pelo menos baratos, devido ao uso de entrada codificada e / ou por não satisfazer totalmente os requisitos.
`-1%~
Isso pega um argumento na pilha e deixa o resultado na pilha. Estou explorando a opção "subprogram" na especificação: se você insiste em uma função, são quatro caracteres a mais na pilha:
{`-1%~}:r
`-1%~
antes `-1$~
(e tomei a liberdade de editar sua resposta para dizer isso).
No script de shell:
echo "your number"|rev
Espero que isso tenha sido útil :)
rev<<<yournumber
, por exemplo rev<<<132
(para bash / zsh, e não por POSIX embora)
rev
, a pergunta não diz que tem que ser uma função. Você pode comparar rev
com uma função interna, mesmo que não seja uma.
Meio tarde, mas
⍎⌽⍞
Se você insiste em uma função
⍎∘⌽∘⍕
IntegerReverse
Isso não é competitivo, porque essa função foi adicionada apenas na versão 10.3 da semana passada, mas, para completar, pensei em adicionar o único (eu acho?) Incorporado para esta tarefa.
Você pode fazer o seguinte em Java. Observe que isso se converte em String e vice-versa e não é uma solução matemática.
public class test {
public static int reverseInt(int i) {
return Integer.valueOf((new StringBuffer(String.valueOf(i))).reverse().toString());
}
public static void main(String[] args) {
int i = 1234;
System.out.println("reverse("+i+") -> " + reverseInt(i));
}
}
43 caracteres. num como o parâmetro para a função:
num.toString().split('').reverse().join('')
(first(list(parse-integer(reverse(write-to-string '4279)))))
você receberá 9724.
(first(list
? parse-integer
já retorna o número.
#
+#(.*)(.)/\2#\1
#/
Tecnicamente, isso não conta (o rs foi criado no início deste ano), mas eu não vi outras respostas baseadas em regex e achei que era legal.
#
Insira um caractere de libra no início da string. Isso é usado como um marcador.
+#(.*)(.)/\2#\1
Anexe previamente o último caractere da sequência principal à área antes do marcador até que não haja mais caracteres.
#/
Retire o marcador.