Sou divisível pelo dobro da soma dos meus dígitos?


40

Dado um número inteiro positivo como entrada, sua tarefa é gerar um valor verdadeiro se o número for divisível pelo dobro da soma de seus dígitos e, caso contrário, um valor falso ( OEIS A134516 ). Em outras palavras:

(sum_of_digits)*2 | number
  • Em vez de valores verdadeiros / falsos para os casos verdadeiros e falsos, você pode especificar qualquer conjunto finito de valores para o caso verdadeiro / falso, e eles complementam os outros valores. Para um exemplo simples, você pode usar 0para o caso verdadeiro e todos os outros números para o caso falso (ou vice-versa, se desejar).

  • Regras de entrada e saída padrão se aplicam. As brechas padrão também se aplicam.

  • Você pode receber a entrada como um número inteiro ou como a representação de sequência desse número inteiro.

  • Este é o , portanto o código mais curto em bytes vence!

  • Eu sou novo no PPCG, então gostaria que você publicasse uma explicação, se possível.


Casos de teste

Entrada - Saída - (Razão)

80 - Verdade - (16 divide 80)
100 - Verdade - (2 divide 100)
60 - Verdade - (12 divide 60)
18 - Verdade - (18 divide 18)
12 - Verdade - (6 divide 12)

4 - Falsia - (8 não divide 4)
8 - Falsia - (16 não divide 8)
16 - Falsia - (14 não divide 16)
21 - Falsia - (6 não divide 21)
78 - Falsy - (30 não divide 78)
110 - Falsy - (4 não aparece 110)
111 - Falsy - (6 não divide 111)
390 - Falsy - (24 não divide 390)

Bom desafio, bem-vindo ao PPCG!
Skidsdev 03/07

@ Mayay Obrigado, é o meu segundo desafio, mas o primeiro foi fechado: P

Podemos aceitar dígitos como uma lista de números inteiros?
Henry

4
@Henry Não, isso seria muito trivial

11
De fato, as duas frases de "Em vez de valores verdadeiros / falsos para os casos verdadeiros e falsos, você pode especificar qualquer conjunto finito de valores para o caso verdadeiro e seu complemento para os casos falsos. Para um exemplo simples, você pode usar 0 para o caso verdadeiro e todos os outros números para o caso falso (ou vice-versa, se você preferir) "parecem contradizer-se (em particular, o" finito "e o" ou vice-versa ").
9789 Greg Martin

Respostas:


7

Neim , 3 bytes

𝐬ᚫ𝕞

Explicação:

𝐬      Implicitly convert to int array and sum the digits
 ᚫ     Double
  𝕞   Is it a divisor of the input?

Experimente online!

Versão detalhada


Umm ... você deve verificar se a entrada é um múltiplo do dobro da soma dos dígitos, e não vice-versa.
Erik the Outgolfer

@EriktheOutgolfer O que você quer dizer? Eu verifico se a entrada é um múltiplo do dobro da soma dos dígitos. Talvez eu não tenha explicado isso corretamente.
Okx 03/07/19

4
O Neim precisa ficar ainda mais animado - quando os envios são muito longos, meu navegador começa a ficar lento.
Esolanging Fruit

11
@ Challenger5 Peço sinceras desculpas pela falta de golfe. Vou tentar novamente na próxima vez. Mais uma vez, desculpe por isso.
Okx 08/07/19

@Okx E sinceramente peço desculpas por ter preguiça de encontrar uma resposta Neim que fosse uma demonstração melhor do que eu estava falando.
Esolanging Fruit

16

JavaScript (ES6), 31 29 27 bytes

Recebe a entrada como uma sequência. Retorna zero para verdade e diferente de zero para falsidade.

n=>n%eval([...n+n].join`+`)

Comentado

n => n % eval([...n + n].join`+`)
n =>                                   // take input string n  -> e.g. "80"
                  n + n                // double the input     -> "8080"
              [...     ]               // split                -> ["8", "0", "8", "0"]
                        .join`+`       // join with '+'        -> "8+0+8+0"
         eval(                  )      // evaluate as JS       -> 16
     n %                               // compute n % result   -> 80 % 16 -> 0

Casos de teste


Eu nunca vi o método [...] de dividir antes, existe um nome para isso especificamente?
23417 Jacob Persi

@JacobPersi Este é o operador de spread .
Arnauld

7

C #, 46 bytes

using System.Linq;n=>n%(n+"").Sum(c=>c-48)*2<1

Versão completa / formatada:

using System;
using System.Linq;

class P
{
    static void Main()
    {
        Func<int, bool> f = n => n % (n + "").Sum(c => c - 48) * 2 < 1;

        Console.WriteLine(f(80));
        Console.WriteLine(f(100));
        Console.WriteLine(f(60));

        Console.WriteLine();

        Console.WriteLine(f(16));
        Console.WriteLine(f(78));
        Console.WriteLine(f(390));

        Console.ReadLine();
    }
}

4

Retina , 38 27 bytes

-11 bytes e corrigiu um erro no código graças a @MartinEnder

$
$_¶$_
.+$|.
$*
^(.+)¶\1+$

Experimente online!

Imprime 1 se divisível, 0 caso contrário

Explicação (espero que eu entendi direito)

$
$_¶$_

Anexa toda a entrada, mais uma nova linha, mais a entrada novamente

.+$|.
$*

Converte cada correspondência em unária (a segunda linha inteira que é a entrada original ou cada dígito na primeira linha)

^(.+)¶\1+$

Verifique se a primeira linha (a soma de dois dígitos) é um divisor da segunda linha


4

MATL , 7 bytes

tV!UsE\

Saída 0se divisível, número inteiro positivo caso contrário. Especificamente, ele gera o restante da divisão do número pelo dobro da soma de seus dígitos.

Experimente online!

Explicação

t   % Implicit input. Duplicate
V!U % Convert to string, transpose, convert to number: gives column vector of digits
s   % Sum
E   % Times 2
\   % Modulus. Implicit display

4

05AB1E , 5 4 bytes

-1 byte graças a Okx

SO·Ö

Experimente online!

Você também pode remover o último Ö para obter 0 para verdade e outra coisa para falsidade, resultando em apenas 3 bytes, mas para mim isso parece não se encaixar adequadamente na definição.

Explicação

SO·Ö
SO    # Separate the digits and sum them
  ·   # Multiply the result by two
   Ö  # Is the input divisible by the result?

Você pode jogá-lo em 4 bytes substituindo %_por Ö.
Okx 03/07/19

4

Código da máquina x86-64, 24 bytes

6A 0A 5E 31 C9 89 F8 99 F7 F6 01 D1 85 C0 75 F7 8D 04 09 99 F7 F7 92 C3

O código acima define uma função no código de máquina x86 de 64 bits que determina se o valor de entrada é divisível pelo dobro da soma de seus dígitos. A função está em conformidade com a convenção de chamada do System V AMD64, para que possa ser chamada de praticamente qualquer idioma, como se fosse uma função C.

Ele usa um único parâmetro como entrada via EDIregistrador, conforme a convenção de chamada, que é o número inteiro a ser testado. (Supõe-se que seja um número inteiro positivo , consistente com as regras de desafio e é necessário para que as CDQinstruções que usamos funcionem corretamente.)

Retorna seu resultado no EAXregistro, novamente, conforme a convenção de chamada. O resultado será 0 se o valor de entrada for divisível pela soma de seus dígitos e diferente de zero. (Basicamente, um booleano inverso, exatamente como o exemplo dado nas regras de desafio.)

Seu protótipo C seria:

int DivisibleByDoubleSumOfDigits(int value);

Aqui estão as instruções da linguagem assembly não destruídas, anotadas com uma breve explicação do objetivo de cada instrução:

; EDI == input value
DivisibleByDoubleSumOfDigits:
   push 10
   pop  rsi             ; ESI <= 10
   xor  ecx, ecx        ; ECX <= 0
   mov  eax, edi        ; EAX <= EDI (make copy of input)

SumDigits:
   cdq                  ; EDX <= 0
   div  esi             ; EDX:EAX / 10
   add  ecx, edx        ; ECX += remainder (EDX)
   test eax, eax
   jnz  SumDigits       ; loop while EAX != 0

   lea  eax, [rcx+rcx]  ; EAX <= (ECX * 2)
   cdq                  ; EDX <= 0
   div  edi             ; EDX:EAX / input
   xchg edx, eax        ; put remainder (EDX) in EAX
   ret                  ; return, with result in EAX

No primeiro bloco, fazemos algumas inicializações preliminares dos registros:

  • PUSHAs POPinstruções + são usadas como uma maneira lenta, mas curta, de inicializar ESIpara 10. Isso é necessário porque a DIVinstrução em x86 requer um operando de registro. (Não existe uma forma que divida por um valor imediato de, digamos, 10.)
  • XORé usado como uma maneira curta e rápida de limpar o ECXregistro. Este registro servirá como o "acumulador" dentro do próximo loop.
  • Finalmente, uma cópia do valor de entrada (de EDI) é feita e armazenada EAX, que será eliminada à medida que avançamos no loop.

Então, começamos a repetir e somar os dígitos no valor de entrada. Isso se baseia na DIVinstrução x86 , que divide EDX:EAXpor seu operando e retorna o quociente in EAXe o restante in EDX. O que faremos aqui é dividir o valor de entrada por 10, de modo que o restante seja o dígito em último lugar (que adicionaremos ao nosso registro acumulador ECX), e o quociente é o restante.

  • A CDQinstrução é uma maneira curta de definir EDXcomo 0. Na verdade , ela estende o valor EAXpara EDX:EAX, que é o que DIVusa como dividendo. Na verdade, não precisamos de extensão de sinal aqui, porque o valor de entrada não é assinado, mas CDQé de 1 byte, em vez de usar XORpara limpar EDX, que seria de 2 bytes.
  • Então DIVide EDX:EAXpor ESI(10).
  • O restante ( EDX) é adicionado ao acumulador ( ECX).
  • O EAXregistro (quociente) é testado para verificar se é igual a 0. Nesse caso, passamos por todos os dígitos e seguimos em frente. Caso contrário, ainda temos mais dígitos para somar, então voltamos ao topo do loop.

Por fim, após a conclusão do loop, implementamos number % ((sum_of_digits)*2):

  • A LEAinstrução é usada como uma maneira curta de multiplicar ECXpor 2 (ou, equivalentemente, adicionar ECXa si mesma) e armazenar o resultado em um registro diferente (neste caso EAX).

    (Também poderíamos ter feito add ecx, ecx+ xchg ecx, eax; ambos são 3 bytes, mas a LEAinstrução é mais rápida e mais típica.)

  • Então, fazemos CDQnovamente para nos preparar para a divisão. Como EAXserá positivo (isto é, não assinado), isso tem o efeito de zerar EDX, exatamente como antes.
  • A seguir, é a divisão, desta vez dividida EDX:EAXpelo valor de entrada (uma cópia não-modificada da qual ainda reside EDI). Isso é equivalente ao módulo, com o restante em EDX. (O quociente também é inserido EAX, mas não precisamos dele.)
  • Finalmente, XCHGtrocamos o conteúdo de EAXe EDX. Normalmente, você faria um MOVaqui, mas XCHGé apenas 1 byte (embora mais lento). Como EDXcontém o restante após a divisão, será 0 se o valor for igualmente divisível ou diferente de zero. Assim, quando RETurn, EAX(o resultado) será 0 se o valor de entrada for divisível pelo dobro da soma de seus dígitos, ou diferente de zero.

Espero que isso seja suficiente para uma explicação.
Esta não é a entrada mais curta, mas, ei, parece que bate quase todas as línguas que não são de golfe! :-)


3

Japonês , 7 4 bytes

Recebe a entrada como uma sequência. Saídas 0para trueou um número maior que 0para false, que, de outras soluções, parecem válidas. Caso contrário, avise-me e reverteremos.

%²¬x

Teste-o


Explicação

Entrada implícita da sequência U.
"390"

²

Repita Uduas vezes.
"390390"

¬

Dividir para matriz de caracteres individuais.
["3","9","0","3","9","0"]

x

Reduza pela soma, convertendo automaticamente cada caractere para um número inteiro no processo.
24

%

Obtenha o restante da divisão Upelo resultado, também convertendo automaticamente Upara um número inteiro no processo. Implica implicitamente o número inteiro resultante.
6 (=false)


2
Suas explicações geralmente usam muito espaço vertical, o que eu acho que não é necessário. De qualquer forma, é a sua resposta.
Okx 03/07/19

@Okx; Não sei como pode ser "normal" quando mudei para esse formato há alguns dias.
Shaggy

4
Gostei do formato da explicação. Foi fácil de seguir, principalmente para esse problema, pois era uma redução linear e descia a página como um problema de matemática. Apenas meus dois centavos.
Henry

3
Esse formato de explicação é muito melhor que o formato usual, especialmente para aqueles que não estão familiarizados com os idiomas. Eu gostaria que outros jogadores que usassem essas línguas também fizessem isso.
Jul1

3

C89, 55 53 bytes

(Obrigado a Steadybox!

s,t;f(x){for(t=x,s=0;t;t/=10)s+=t%10;return x%(s*2);}

É preciso uma única entrada x, que é o valor a ser testado. Retorna 0 se xfor divisível igualmente pelo dobro da soma de seus dígitos, ou diferente de zero.

Experimente online!

Ungolfed:

/* int */ s, t;
/*int */ f(/* int */ x)
{
    for (t = x, s = 0; t /* != 0 */; t /= 10)
        s += (t % 10);
    return x % (s * 2);
}

Como você pode ver, isso tira proveito das regras implit-int do C89. As variáveis ​​globais se tsão implicitamente declaradas como ints. (Eles também são implicitamente inicializados como 0 porque são globais, mas não podemos tirar proveito disso se queremos que a função seja solicitada várias vezes.)

Da mesma forma, a função, fleva um único parâmetro, x,que é implicitamente um int, e retorna um int.

O código dentro da função é bastante direto, embora o forloop pareça muito estranho se você não estiver familiarizado com a sintaxe. Basicamente, um forcabeçalho de loop em C contém três partes:

for (initialization; loop condition; increment)

Na seção "inicialização", inicializamos nossas variáveis ​​globais. Isso será executado uma vez, antes que o loop seja inserido.

Na seção "condição do loop", especificamos em que condição o loop deve continuar. Isso deve ser óbvio.

Na seção "incremento", basicamente colocamos código arbitrário, pois ele será executado no final de cada loop.

O objetivo maior do loop é iterar através de cada dígito no valor de entrada, adicionando-o a s. Finalmente, depois que o loop termina, sé duplicado e levado xpara o módulo para ver se é igualmente divisível. (Uma explicação melhor e mais detalhada da lógica aqui pode ser encontrada em minha outra resposta , na qual esta se baseia.)

Versão legível por humanos:

int f(int x)
{
    int temp = x;
    int sum  = 0;
    while (temp > 0)
    {
        sum  += temp % 10;
        temp /= 10;
    }
    return x % (sum * 2);
}

Você pode salvar dois bytes, se usar em tvez de t>0como a condição de loop .
Steadybox 4/07

Ah, claro! Boa captura, @Steadybox. Não tenho certeza de como eu perdi isso, já que testar contra 0 é exatamente o que minha implementação de asm fez, na qual essa resposta foi fortemente baseada.
Cody Gray




2

Mathematica, 26 bytes

(2Tr@IntegerDigits@#)∣#&

Nenhuma pista por que tem uma precedência mais alta que a multiplicação ...


2

PHP , 41 bytes

imprime zero se divisível, número inteiro positivo caso contrário.

<?=$argn%(2*array_sum(str_split($argn)));

Experimente online!


Você coloca a atribuição no bloco de cabeçalho. Assim como você pode usar $a=10, mas você se esqueceu de contar isso para a sua contagem de bytes
aross

@aross Por que devo contar a entrada para a minha contagem de bytes? $argnestá disponível com o -F(neste caso) ou -Ropção
Jörg Hülsermann 5/17/17

Hum, interessante. Eu não sabia -F. Mas isso não se reflete no seu TIO (ele suporta eco do STDIN?).
Aross

@aross, funciona como sua abordagem, use apenas um arquivo em vez de código e a -Fopção em vez de -R php.net/manual/en/features.commandline.options.php Se você encontrou uma maneira melhor de fazer o mesmo no tio como no commnd linha me avise
Jörg Hülsermann

2

Excel, 63 bytes

=MOD(A1,2*SUMPRODUCT(--MID(A1,ROW(OFFSET(A$1,,,LEN(A1))),1)))=0

A soma de dígitos é o bit longo.



2

Casca , 9 8 bytes

Agradecemos a Leo por economizar 1 byte.

Ṡ¦ȯ*2ṁis

Experimente online!

Explicação

Ṡ¦ȯ         Test whether f(x) divides x, where f is the function obtained by
            composing the next 4 functions.
       s    Convert x to a string.
     ṁi     Convert each character to an integer and sum the result.
   *2       Double the result.

Você pode usar M para mapear e soma com um único comando, salvando um byte
Leo

2

Haskell , 38 37 42 bytes

Agradecimentos a Zgarb por jogar fora 1 byte

f x=read x`mod`foldr((+).(*2).read.pure)0x

Experimente online!

Recebe entrada como uma string; retorna 0 se divisível e diferente de zero caso contrário.


(:[])pode ser pure.
Zgarb 3/07

Você vai economizar 1 byte, substituindo o lambda pela declaração da função
bartavelle

@ Bartavelle: Tenho certeza que é uma lavagem. Exemplo?
Julian Lobo

Você está certo, é exatamente o mesmo comprimento. Não sei como isso passou pela minha cabeça: /
bartavelle

2

Python 3, 35 bytes

lambda a:a%(sum(map(int,str(a)))*2)

Olá e bem-vindo ao site. Você pode remover alguns espaços em branco aqui. Particularmente em torno =e após o )no int(c). Além disso, como sumpode usar um gerador como argumento, você pode remover o [..]interior dele. Se você tiver alguma dúvida adicional, sinta-se à vontade para me enviar um ping.
Assistente de trigo

int(c)for c in atambém poderia ser map(int,a), para salvar alguns bytes.
Assistente de trigo

Isso não funciona - ou melhor, funciona ao contrário. Facilmente corrigido com 4 bytes extras:lambda a:not a%(sum(map(int,str(a)))*2)
osuka_

@osuka_ ver um ponto de bala na descrição questão
wrymug

2

TI-BASIC, 27 26 21 bytes

-5 graças a @Oki

:fPart(Ans/sum(2int(10fPart(Ans10^(~randIntNoRep(1,1+int(log(Ans

Isso é complicado pelo fato de não haver uma maneira concisa de somar dígitos inteiros no TI-BASIC . Retorna 0para Truee um número diferente para False.

Explicação:

:fPart(Ans/sum(2int(10fPart(Ans10^(-randIntNoRep(1,1+int(log(Ans
                               10^(-randIntNoRep(1,1+int(log(Ans #Create a list of negative powers of ten, based off the length of the input, i.e. {1,0.1,0.01}
                            Ans                                  #Scalar multiply the input into the list
                    10fPart(                                     #Remove everything left of the decimal point and multiply by 10
               2int(                                             #Remove everything right of the decimal point and multiply by 2
           sum(                                                  #Sum the resulting list
       Ans/                                                      #Divide the input by the sum
:fPart(                                                          #Remove everything left of the decimal, implicit print

2
10^-randIntNoRep(1,1+int(log(Ansfaz o mesmo que seq(10^(~A-1),A,0,log(Ansem menor número de bytes como matéria ordem esquentar (Assumindo versão 2.55MP)
Oki

1

Braingolf , 13 12 bytes

VR.Mvd&+2*c%

Experimente online!

Saídas 0 para verdade, qualquer outro número para falsey.

Explicação

VR.Mvd&+2*c%  Implicit input from command-line args
VR            Create stack2, return to stack1
  .M          Duplicate input to stack2
    vd        Switch to stack2, split into digits
      &+      Sum up all digits
        2*    Double
          c   Collapse stack2 back into stack1
           %  Modulus
              Implicit output of last item on stack

1

Japonês , 7 bytes

vUì x*2

Retorna 1para true, 0porfalse

Experimente online!

Explicação

vUì x*2
v        // Return 1 if the input is divisible by:
 Uì      //   Input split into a base-10 array
    x    //   Sum the array
     *2  //   While mapped by *2

Também vim com algumas outras soluções de 7 bytes (embora eu não ache que seja uma delas) - estou convencido de que há uma solução mais curta.
Shaggy


1

Java , 66 bytes

-1 byte graças a Olivier

a->{int i=0;for(int b:(""+a).getBytes())i+=b-48;return a%(i*2)<1;}

Ungolfed & explicação:

a -> {
    int i = 0;

    for(int b : (""+a).getBytes()) { // Loop through each byte of the input converted to a string
        i += b-48; // Subtract 48 from the byte and add it to i
    }

    return a % (i*2) < 1 // Check if a % (i*2) is equal to one
    // I use <1 here for golfing, as the result of a modulus operation should never be less than 0
}

Use em intvez de bytepara salvar ... um byte.
Olivier Grégoire

@ OlivierGrégoire Obrigado. Não percebi isso.
Okx 03/07/19

@Okx Precisa mudar o código também.
Henry

Seu código (golfed) fornece valores incorretos para 110, 111. Provavelmente, o a%i*2que é analisado, (a%i)*2uma vez que o módulo e a multiplicação têm a mesma ordem.
Olivier Grégoire

@ OlivierGrégoire Ah, isso é péssimo.
Okx 03/07/19

1

J, 15 bytes

0 indica verdade, diferente de zero indica falsidade.

|~[:+/2#"."0@":

Explicação

        "."0@":  convert to list of digits
  [:+/2#         sum 2 copies of the list ([: forces monadic phrase)
|~               residue of sum divided by argument?

Maneira muito inteligente de evitar parênteses ou múltiplos @ou [:!
Jonah

11
Eu debati postar isso como minha própria resposta, mas não é realmente diferente o suficiente. |~2*1#.,.&.":por 13 bytes.
cole

Eu recebo um 'erro de domínio' por isso no meu J Qt IDE. (| ~ [: + / 2 # "." 0 @ ": 112) Então, para o código de cole, recebo (| ~ 2 * 1 #.,. &.": 112) = 0. : / Possivelmente algo errado do meu lado.
DrQuarius




1

PHP, 44 bytes

for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;

Execute assim:

echo 80 | php -nR 'for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;'

Explicação

Repete os dígitos para calcular o total e, em seguida, gera o módulo como a maioria das respostas.


1

Java (OpenJDK 8) , 55 53 bytes

a->{int i=0,x=a;for(;x>0;x/=10)i+=x%10*2;return a%i;}

Experimente online!

Um valor de retorno de 0significa verdade, qualquer outra coisa significa falsidade.

Como meu comentário na resposta de Okx não fez ondulações, eu a apaguei e publiquei como esta resposta, ainda mais.

Mais golfe graças a @KrzysztofCichocki e @Laikoni, que por direito me mostraram que eu não preciso responder a um valor de verdade / falsidade, mas a qualquer valor desde que eu descreva o resultado.


Você pode remover a parte <1 no final, para que o resultado seja 0 para verdadeiro e> 0 para falso, o que é aceitável, isso resultará em -2 bytes adicionais, para que você possa responder como 53 bytes.
Krzysztof Cichocki

@KrzysztofCichoki Não, não posso: é Java. O único valor verdadeiro é true.
Olivier Grégoire

@ OlivierGrégoire Embora isso seja verdade, se nada mais for especificado, esse desafio é específico Instead of truthy / falsy values for the true and false cases, you may instead specify any finite set of values for the true/false case, and their complement the other values..
Laikoni

@KrzysztofCichocki e Laikoni Desculpe por interpretar mal essa parte, eu apenas a corrigi! Obrigado a ambos :) Além disso, desculpe-nos por rejeitar a edição que era realmente apropriada neste caso.
Olivier Grégoire

1

Mini-Flak, 296 292 bytes

({}((()[()]))){(({}[((((()()()){}){}){}){}])({}(((({})){}){}{}){})[({})])(({}({})))({}(({}[{}]))[{}])({}[({})](({}{})(({}({})))({}(({}[{}]))[{}])({}[({})]))[{}])(({}({})))({}(({}[{}]))[{}])({}[({})])}{}({}(((({}){})))[{}]){({}((({}[()]))([{(({})[{}])()}{}]()){{}{}(({}))(()[()])}{})[{}][()])}

Experimente online!

O link do TIO tem mais comentários meus, por isso é parcialmente mais fácil de ler.

Truthy / Falsey: Truthy (divisível) se o segundo número for igual ao terceiro número, caso contrário, falso. Portanto, tanto o conjunto verdadeiro quanto o falso são infinitos, mas suponho que isso deva ser permitido. 10 bytes, se não estiver.

Nota: Novas linhas / espaços em branco à esquerda / à direita não são permitidos na entrada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.