Na Base-10, todos os quadrados perfeitos terminam em 0 , 1 , 4 , 5 , 6 ou 9 .
Na Base-16, todos os quadrados perfeitos terminam em 0 , 1 , 4 ou 9 .
Nilknarf descreve por que isso é e como resolver isso muito bem nesta resposta, mas também darei uma breve descrição aqui:
Ao quadrado um número da Base 10, N , o dígito "ones" não é afetado pelo que está no dígito "dezenas", ou no dígito "centenas", e assim por diante. Somente o dígito "uns" em N afeta o dígito "uns" em N 2 , portanto, uma maneira fácil (mas talvez não a mais divertida) de encontrar todos os últimos dígitos possíveis para N 2 é encontrar n 2 mod 10 para todos os 0 <= n < 10 . Cada resultado é um último dígito possível. Para Base-m, você pode encontrar n 2 mod m para todos os 0 <= n < m .
Escreva um programa que, quando recebida a entrada N , produz todos os últimos dígitos possíveis para um quadrado perfeito na Base-N (sem duplicatas). Você pode assumir que N é maior que 0 e que N é pequeno o suficiente para que N 2 não transborde (se você puder testar até N 2 , darei a você uma quantidade finita de pontos de brownie, mas saiba que a taxa de câmbio de pontos brownie para pontos reais é infinito para um).
Testes:
Input -> Output
1 -> 0
2 -> 0,1
10 -> 0,1,5,6,4,9
16 -> 0,1,4,9
31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105
isso é código-golfe , então as regras padrão se aplicam!
(Se você acha isso muito fácil ou deseja uma pergunta mais aprofundada sobre o assunto, considere esta pergunta: Cobertura mínima de bases para teste de quadrática de resíduos de esquadria ).
fonte
Respostas:
Gelatina , 5 bytes
Experimente online!
Explicação
fonte
Planilhas Google,
525147 bytesGuardado 4 bytes graças a Taylor Scott
As folhas adicionam automaticamente 4 parênteses de fechamento ao final da fórmula.
Ele não retorna os resultados em ordem crescente, mas retorna os resultados corretos.
fonte
)
é de -4 bytes05AB1E , 5 bytes
Experimente online! ou como um conjunto de testes
fonte
s
funciona aqui? A entrada é repetida?s
épop a,b; push b,a
. Quando um comando tenta tirar algo da pilha e não resta mais nada, a próxima entrada é usada. Se não houver mais nenhuma entrada, a última entrada será usada ( aqui está um exemplo ). Nesse caso, eu poderia ter usado o¹
que pressiona a primeira entrada, mass
funciona melhor para o conjunto de testes.Ln¹%ê
é equivalente aqui.s
.Rápido ,
47 3532 * bytes* -3 graças a @Alexander.
Possivelmente a primeira vez na história, os
laçosSwift superam o Python?Experimente online!
Explicação
(0..<m).map{}
- Repete o intervalo[0...m)
e mapeia os seguintes resultados:$0*$0%m
- O quadrado de cada número inteiro modulo a basem
.Set(...)
- Remove as duplicatas.m in
- Atribui a base a uma variávelm
fonte
C #, 63 bytes
Experimente online!
fonte
JavaScript (ES6), 52 bytes
Casos de teste
Mostrar snippet de código
Versão não recursiva,
6058 bytesGuardado 2 bytes graças a @ThePirateBay
Casos de teste
Mostrar snippet de código
fonte
m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))
Pitão, 6 bytes
Experimente online
Como funciona
fonte
Braquilog ,
109 bytesExperimente online!
Explicação
fonte
{>≜^₂;?%}ᵘ
como uma alternativa ... então percebi que também há números negativos. > _ <≜
.>
ainda seria responsável por números negativos.Japonês ,
76 bytesTeste-o
1 byte salvo graças a Oliver
Explicação
Entrada implícita de número inteiro
U
.Crie uma matriz de números inteiros de
0
paraU-1
, inclusive e passe cada uma por uma função.Quadrado.
Módulo
U
.Obtenha todos os elementos exclusivos da matriz e produza implicitamente o resultado.
fonte
Dz%UÃâ
Parece funcionar bem.Python 3 ,
403937 bytes-1 byte graças ao Sr. Xcoder. -2 bytes graças ao Business Cat.
Experimente online!
fonte
n**2
comn*n
?range(m)
é suficienteNa verdade , 11 bytes
Experimente online!
Explicação:
fonte
CJam , 12 bytes
Bloco anônimo que aceita um número e retorna uma lista.
Experimente online!
Explicação
fonte
{:X{_*X%}%_&}
13 bytesHaskell , 45 bytes
-4 bytes de Anders Kaseorg
Experimente online!
fonte
f m=nub$map((`mod`m).(^2))[0..m]
é tão longa, a menos que haja uma sintaxe sorrateira para se livrar de parênteses extras.MATL ,
65 bytes-1 byte graças a @LuisMendo
Experimente online!
fonte
Oitava , 27 bytes
Experimente online!
fonte
Mathematica, 30 bytes
Experimente online!
fonte
JavaScript (ES6), 48 bytes
43 bytes se retornar um
Set
array em vez de uma matriz for aceitável.fonte
Scala ,
3230 bytesUso simples da dica fácil do OP.
Experimente online!
-2 bytes graças a @MrXcoder, com prioridades (sem necessidade de
()
volta*
operação)Pensando: é possível dizer implicitamente ao compilador para entender coisas como
(0 to n-1)map(x=>x*x%n)toSet
(sem a necessidadeimport scala.language.postfixOps
)?fonte
(0 to n-1).map(x=>x*x%n).toSet
por 30 bytes. A exponenciação tem maior precedência que o módulo.Haskell , 44 bytes
Experimente online!
fonte
Retina , 70 bytes
Experimente online! Aviso: Lento para entradas grandes. Versão um pouco mais rápida de 72 bytes:
Experimente online!
fonte
Clojure, 40 bytes
fonte
Perl 6 , 19 bytes
Teste-o
Expandido:
fonte
Pitão , 13 bytes
Experimente online.
Esfarrapada tentativa de explicar:
Para classificar a saída, insira um
S
em qualquer lado do{
Eu acho que deveria haver uma maneira mais curta ...
fonte
map
é seu amigo!Python 2 , 59 bytes
Experimente online!
fonte
PowerShell , 35 bytes
Experimente online!
fonte
R , 28 bytes
Experimente online!
fonte
Rubi ,
3130 bytesExperimente online!
fonte
PHP , 53 bytes
Faça um loop de 0 ao número de entrada, usando a
n^2 mod base
fórmula para marcar os números que foram usados. Ele vai para essa posição em uma matriz, verificando se foi incrementado e emitindo-o se não tiver. Em seguida, o incrementa para que os valores duplicados não sejam impressos.Experimente online!
fonte
8o ,
138131 bytesCódigo
Explicação
[]
- Criar matriz de saídaswap dup >r
- Salvar entrada para uso posterior( 2 ^ r@ n:mod a:push ) 1 rot loop
- Calcular final quadradordrop
- Pilha r limpa' n:cmp a:sort
- Ordenar matriz de saída' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip
- Livre-se de duplicatas consecutivas da matrizO SED (diagrama de efeito de pilha) é:
a -- a
Uso e exemplo
fonte
Perl 5 , 41 + 1 (-n) = 42 bytes
Experimente online!
fonte