Dado um número inteiro positivo n como entrada, produza a soma da faixa reversa de n.
Uma soma de intervalo invertida é criada criando um intervalo inclusivo de até n, começando com 1 e incluindo n, revertendo cada um dos números internos e somando-o.
Exemplo:
Aqui está o que aconteceria com uma entrada de 10:
Alcance: [1,2,3,4,5,6,7,8,9,10]
Inverter: [1,2,3,4,5,6,7,8,9,01]
(os números de 1 caractere invertidos são eles mesmos, 10 invertidos são 01 ou 1)
Soma: 46
Os números com mais de 3 dígitos são revertidos da mesma forma que os números com 2 dígitos. Por exemplo, 1234 se tornaria 4321.
Casos de teste:
Input -> Output
10 -> 46
5 -> 15
21 -> 519
58 -> 2350
75 -> 3147
999 -> 454545
Casos completos de texto para a entrada de 999 podem ser encontrados aqui , muito obrigado a @ fireflame241.
code-golf
number
arithmetic
Camarada SparklePony
fonte
fonte
Respostas:
05AB1E , 3 bytes
Código
Usa a codificação 05AB1E . Experimente online!
Explicação
fonte
Reverse
deve serReverse each
verdade ...R
, enquantoí
é "inverter cada".Utilitários Bash + GNU, 24
Experimente online .
Explicação
fonte
JavaScript (ES6), 42 bytes
Minha solução duplamente recursiva favorita é, infelizmente, três bytes a mais:
fonte
Perl 6 , 20 bytes
Teste-o
Expandido:
fonte
».flip
Chama o.flip
método em cada um dos valores no intervalo. A próxima maneira mais curta de fazer isso.map(*.flip)
é 5 bytes a mais.».flip
é uma chamada de método hiper. Enquanto eu posso dividir o»
e.flip
usando um espaço não\
como eu fiz antes; isso dificultaria a compreensão, pois pareceria o fim de umaqqww/ /
construção (« a b "c d" »
).Retina ,
413635 bytesExperimente online! O link inclui casos de teste. Editar: salvou 5 bytes graças a @FryAmTheEggman. Guardou 1 byte graças a @ PunPun1000. Explicação:
Converta para unário.
Crie um intervalo de
1
atén
.Converta de volta para decimal.
Inverta cada número.
Converta de volta para unário.
Soma e converta de volta para decimal.
fonte
¶
no.+¶
O jogo irá corresponder em todas as linhasO^$s`.
reverter toda a string também funciona.Gelatina , 4 bytes
Experimente online!
Quão?
fonte
Haskell, 34 bytes
Simples e direto.
fonte
C (gcc) , 63 bytes
Experimente online!
fonte
cQuents , 4 bytes
Experimente online!
Explicação
fonte
Python 2 , 38 bytes
Não é possível calcular termos mais altos que o limite de recursão:
Experimente online!
fonte
import sys
e,sys.setrecursionlimit()
se quiser lidar com números maiores, no cabeçalho do tio.Braquilog , 4 bytes
Experimente online!
Explicação
fonte
Röda ,
564136 bytes15 bytes salvos graças a @fergusq
Experimente online!
Essa é uma função anônima que pega um número inteiro do fluxo de entrada e gera um número inteiro para o fluxo de saída.
Explicação
fonte
[::-1]
vez de inverter. Também `$_
` é mais curto que_..""
e parênteses após parseInteger não são necessários.C # (.NET Core) ,
10397 bytesExperimente online!
O link TIO gera todos os resultados de 1 a 999, portanto, fique à vontade para conferir meu trabalho.
Eu esperava que isso fosse um pouco mais curto, mas acontece que
Reverse()
retorna umaIEnumerable<char>
string em vez de outra, então eu tive que adicionar alguns extras para transformá-la novamente em uma string para que eu pudesse analisá-la em um int. Talvez haja uma maneira mais curta de passarIEnumerable<char>
para int corretamente.Nota importante, isso também usa as funçõesRange()
Reverse()
eSum()
tudo em ordem.-6 bytes graças a TheLethalCoder
fonte
new int[r]
e.Select((_,n)=>...)
você vai economizar bytes.new int[r+1]
obter a saída correta, pois o índice inicia em 0, mas ainda salva alguns bytes. RIPRange()
emboraRubi,
56, 52, 41,39 bytesRuby, 34 bytes (se lambda param for uma string)
Obrigado a @Unihedron pela segunda solução.
fonte
->n{
funciona também.?a..?z
e?a1..?h8
(embora é melhor ter cuidado com o 2º formato: D)succ
e 2. (se o valor inicial ou final não for implementadosucc
) devem ser numéricas, portantoint..string
serão rejeitadas como "Valor inválido para o intervalo". O inverso é verdadeiro (mas infelizmente não há é downto gama), ou(?1..n)
pode ser usado em vezMathematica, 47 bytes
Experimente online! (para trabalhar em matemática, precisamos substituir "Tr" por "Total")
fonte
Tr@*IntegerReverse@*Range
Carvão ,
1413 bytes-1 byte graças a Carlos Alejo
Experimente online! Link é a versão detalhada.
Explicação
fonte
»
. A propósito, onde no wiki Charcoal oReduce
operador está documentado?Modulo
operador pode ser usado para formatar seqüências de caracteres em carvão vegetal?Magneson , 102 bytes
Isso não é muito visível, então aqui está uma versão ampliada (Observação: na verdade, não será executado e ainda não é muito bonito)
Magneson opera analisando uma imagem e avaliando comandos a partir das cores dos pixels que lê. Então, percorrendo a imagem para esse desafio, temos:
R: 0, G: 1, B: 1
é um comando de atribuição de número inteiro, que usa uma sequência para o nome da variável e o valor a ser atribuído. Usaremos isso para armazenar a soma total.R: 0, G: 1, B: 0
é uma string pré-construída com o valorVAR_1
(Observação: isso é apenas enquanto solicitamos uma string; o código de cores tem uma função separada quando usado em outro lugar).R: 3, G: 0, B: 0
é um número bruto. Magneson lida com números padrão exigindo que o componente Vermelho seja exatamente 3 e, em seguida, forma um número usando o valor azul diretamente mais o valor verde multiplicado por 256. Nesse caso, estamos apenas obtendo o número 0.R: 0, G: 1, B: 1
é outro comando de atribuição de número inteiro. Desta vez, estamos armazenando uma variável de iteração, para acompanhar o número em que estamosR: 0, G: 1, B: 1
é uma string pré-construída com o valorVAR_2
(Mais uma vez, somente quando precisamos de uma string)R: 3, G: 0, B: 0
é o número 0, mais uma vez. Para os bits interessantes agora.R: 1, G: 0, B: 0
indica o início de um loop. Isso pega um número e faz um loop do seguinte trecho de código várias vezes.R: 2, G: 0, B: 0
é a função STDIN, ou pelo menos é quando precisamos de um número. Isso lê uma linha de entrada do console e a transforma em um número, pois solicitamos um número.R: 0, G: 8, B: 0
inicia nosso código de loop e é um comando aditivo. Isso adiciona um número a uma variável inteira e, portanto, leva uma sequência para o nome da variável e o número a ser adicionado.R: 0, G: 1, B: 1
é a string pré-construída paraVAR_2
, que é a nossa variável de iteração.R: 3, G: 0, B: 1
é um número bruto, mas desta vez é o número 1.R: 0, G: 8, B: 0
é outro comando de adição.R: 0, G: 1, B: 0
é a string paraVAR_1
, que é a nossa soma total.R: 0, G: 3, B: 0
é uma função que reverte uma string. No contexto de solicitar um número, ele converte a sequência invertida em um número.R: 0, G: 2, B: 1
é um comando de recuperação de número inteiro e recuperará o número armazenado em uma variável fornecida. No contexto de solicitar uma string (como no comando reverso), ele converte o número em uma string.R: 0, G: 1, B: 1
É o nomeVAR_2
; nossa variável de iteração.R: 1, G: 0, B: 1
é o marcador para finalizar o loop e voltar ao início do loop se os critérios não forem atendidos (por isso, se precisarmos continuar fazendo loop). Caso contrário, prossiga.R: 0, G: 0, B: 1
é um comando println muito simples e usa uma string.R: 0, G: 2, B: 1
recupera um número inteiro de uma variávelR: 0, G: 1, B: 0
é o nome da nossa variável total de soma,VAR_1
Em suma, o programa:
VAR_1
eVAR_2
VAR_2
VAR_2
paraVAR_1
VAR_1
fonte
Python 2 ,
5047 bytes-3 bytes graças a officialaimm!
Experimente online!
fonte
str
salvar 3 bytes.CJam , 12 bytes
Experimente online!
-1 graças a Business Cat .
Explicação:
fonte
,
APL (Dyalog) ,
107 bytes3 bytes de golfe graças a @ Adám convertendo para um tradfn de um trem
Experimente online!
fonte
+/⍎⌽⍕⍳⎕
¨
era :) inteligenteJava 8, 97 bytes
EDITAR
De acordo com o comentário de
Kevin Cruijssen
, eu gostaria de melhorar minha resposta.Java 8, 103 bytes
fonte
Integer.valueOf
pode ser jogado paranew Integer
, e.reverse().toString()
pode ser jogado para.reverse()+""
. Além disso, você deve incluir os parâmetros de importação e lambda necessários, comojava.util.stream.IntStream
en->
antes dele. E você também pode jogar golfeIntStream
eInteger
paraLongStream
eLong
. A resposta final serán->java.util.stream.LongStream.range(1,n+1).map(i->new Long(new StringBuffer(""+i).reverse()+"")).sum()
( 103 bytes - Sua resposta atual com o parâmetro import e lambda adicionado seria 117 bytes .) Ainda +1, resposta legal!Japonês ,
75 bytes-2 bytes graças a @Shaggy.
Experimente online!
Explicação
Solução antiga, 7 bytes
Mantendo isso, pois é um uso muito legal de
z2
.Experimente online!
Explicação
fonte
z2
em uma matriz simples é o mesmo quew
, righ ... uhm ... desculpe a minha inadequação na Japt ...õ_swÃx
graças à nova adição deN.s(f)
.õs xw
por 5 bytes.z2
truque; isso foi um gênio maldito. Observe que não competir não é mais algo .C ++, 146 bytes
fonte
auto
.auto
palavra-chave é necessáriausing namespace std;
salvar bytes.Casca ,
7 63 bytesExperimente online!
Ungolfed / Explicação
fonte
Perl 5 ,
29 2722 + 1 (-p
) = 23 bytesExperimente online!
fonte
map$r+=reverse,1..<>;say$r
.-p
RProgN 2 , 8 bytes
Explicado
Experimente online!
fonte
Pitão ,
86 bytes-2 bytes graças a FryAmTheEggman!
Experimente online!
fonte
sms_`dS
, que não abuse implícitaU
no final.Tcl , 66 bytes
Experimente online!
fonte
Neim , 4 bytes
Experimente online!
Explicação
fonte
𝐈Ψ𝐫𝐬
(criar gama inclusiva, inverter cada elemento, soma)Ψ
token existia! definitivamente teria usado isso em retrospectiva. real niceC (gcc) , 71 bytes
Experimente online!
fonte
f()
retorna seu resultado sem nenhumareturn
declaração? Ae=a
instrução manipula os registros de maneira que o resultado seja armazenado no mesmo registro que o usado pelos valores retornados?