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 npelo 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.
modpor %, é 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 Nestá 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 nem alguma base r, obtém padrões como este ( (n - rev(n)) / (r - 1)para r=10, agrupados em rcolunas, 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 fseria 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_iem 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 revcom 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-integerjá 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.