En Base-10, todos los cuadrados perfectos terminan en 0 , 1 , 4 , 5 , 6 o 9 .
En Base-16, todos los cuadrados perfectos terminan en 0 , 1 , 4 o 9 .
Nilknarf describe por qué esto es así y cómo resolverlo muy bien en esta respuesta, pero también daré una breve descripción aquí:
Al cuadrar un número de Base 10, N , el dígito "unos" no se ve afectado por lo que está en el dígito "decenas" o el dígito "cientos", y así sucesivamente. Solo el dígito "unos" en N afecta el dígito "unos" en N 2 , por lo que una forma fácil (pero quizás no la más elegante) de encontrar todos los últimos dígitos posibles para N 2 es encontrar n 2 mod 10 para todos 0 <= n < 10 . Cada resultado es un posible último dígito. Para Base-m, puede encontrar n 2 mod m para todos 0 <= n < m .
Escriba un programa que, cuando recibe la entrada N , emite todos los últimos dígitos posibles para un cuadrado perfecto en Base-N (sin duplicados). Puede suponer que N es mayor que 0 , y que N es lo suficientemente pequeño como para que N 2 no se desborde (si puede probar hasta N 2 , le daré una cantidad finita de puntos de brownie, pero sepa que el tipo de cambio de puntos brownie a puntos reales es infinito a uno).
Pruebas:
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
Este es el código de golf , por lo que se aplican reglas estándar.
(Si considera que esto es demasiado fácil, o si desea una pregunta más detallada sobre el tema, considere esta pregunta: cobertura mínima de las bases para la prueba cuadrática de residuos de la cuadratura ).
fuente

Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Explicación
fuente
Hojas de cálculo de Google,
525147 bytesGuardado 4 bytes gracias a Taylor Scott
Las hojas agregarán automáticamente 4 paréntesis de cierre al final de la fórmula.
No devuelve los resultados en orden ascendente, pero devuelve los resultados correctos.
fuente
)s de terminación para -4 bytes05AB1E , 5 bytes
Pruébalo en línea! o como un conjunto de pruebas
fuente
sfunciona aquí? ¿Se repite la entrada?sespop a,b; push b,a. Cuando un comando intenta extraer algo de la pila y no queda nada, se utiliza la siguiente entrada. Si no hay más entradas, se usa la última entrada ( aquí hay un ejemplo ). En este caso, podría haber utilizado el¹que empuja la primera entrada, perosfunciona mejor para el conjunto de pruebas.Ln¹%êes equivalente aquí.s.Swift ,
47 3532 * bytes* -3 gracias a @Alexander.
Posiblemente la primera vez en la historia ¿Los
lazosrápidos vencen a Python?Pruébalo en línea!
Explicación
(0..<m).map{}- Itera a través del rango[0...m)y mapea los siguientes resultados:$0*$0%m- El cuadrado de cada número entero módulo la basem.Set(...)- Elimina los duplicados.m in- Asigna la base a una variablemfuente
C #, 63 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 52 bytes
Casos de prueba
Mostrar fragmento de código
Versión no recursiva,
6058 bytesGuardado 2 bytes gracias a @ThePirateBay
Casos de prueba
Mostrar fragmento de código
fuente
m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))Pyth, 6 bytes
Pruébalo en línea
Cómo funciona
fuente
Brachylog ,
109 bytesPruébalo en línea!
Explicación
fuente
{>≜^₂;?%}ᵘcomo alternativa ... luego me di cuenta de que también hay números negativos. > _ <≜.>que aún explicaría los números negativos afaik.Japt ,
76 bytesPruébalo
1 byte guardado gracias a Oliver
Explicación
Entrada implícita de entero
U.Cree una matriz de enteros desde
0hastaU-1, inclusive y pase cada uno a través de una función.Cuadrado.
Módulo
U.Obtenga todos los elementos únicos en la matriz y genere implícitamente el resultado.
fuente
Dz%UÃâParece funcionar bien.Python 3 ,
403937 bytes-1 byte gracias al Sr. Xcoder. -2 bytes gracias a Business Cat.
Pruébalo en línea!
fuente
n**2conn*n?range(m)es suficienteEn realidad , 11 bytes
Pruébalo en línea!
Explicación:
fuente
CJam , 12 bytes
Bloqueo anónimo que acepta un número y devuelve una lista.
Pruébalo en línea!
Explicación
fuente
{:X{_*X%}%_&}para 13 bytesHaskell , 45 bytes
-4 bytes de Anders Kaseorg
Pruébalo en línea!
fuente
f m=nub$map((`mod`m).(^2))[0..m]es igual de larga, a menos que haya una sintaxis furtiva para deshacerse de los paréntesis adicionales.MATL ,
65 bytes-1 byte gracias a @LuisMendo
Pruébalo en línea!
fuente
Octava , 27 bytes
Pruébalo en línea!
fuente
Mathematica, 30 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 48 bytes
43 bytes si devolver un en
Setlugar de una matriz es aceptable.fuente
Scala ,
3230 bytesUso simple de la sugerencia fácil de OP.
Pruébalo en línea!
-2 bytes gracias a @MrXcoder, con prioridades (sin necesidad de
()alrededor*operación)Preguntándose: ¿es posible decirle al compilador implícitamente que comprenda cosas como
(0 to n-1)map(x=>x*x%n)toSet(sin tener que hacerloimport scala.language.postfixOps)?fuente
(0 to n-1).map(x=>x*x%n).toSetpor 30 bytes. La exponenciación tiene mayor precedencia que el módulo.Haskell , 44 bytes
Pruébalo en línea!
fuente
Retina , 70 bytes
Pruébalo en línea! Advertencia: lento para entradas grandes. Versión de 72 bytes ligeramente más rápida:
Pruébalo en línea!
fuente
Clojure, 40 bytes
fuente
Perl 6 , 19 bytes
Pruébalo
Expandido:
fuente
Pyth , 13 bytes
Probar en línea
Cojo intento de explicar:
Para ordenar la salida, inserte un
Sen cualquier lado del{Creo que debería haber un camino más corto ...
fuente
map¡es tu amigo!Python 2 , 59 bytes
Pruébalo en línea!
fuente
PowerShell , 35 bytes
Pruébalo en línea!
fuente
R , 28 bytes
Pruébalo en línea!
fuente
Rubí ,
3130 bytesPruébalo en línea!
fuente
PHP , 53 bytes
Pase de 0 al número de entrada, usando la
n^2 mod basefórmula para marcar los números que se han usado. Va a esa posición en una matriz, verificando si se ha incrementado y emitiéndola si no lo ha hecho. Luego lo incrementa para que no se impriman valores duplicados.Pruébalo en línea!
fuente
8 ° ,
138131 bytesCódigo
Explicación
[]- Crear matriz de salidaswap dup >r- Guardar entrada para uso posterior( 2 ^ r@ n:mod a:push ) 1 rot loop- Calcular extremo cuadradordrop- Limpiar r-stack' n:cmp a:sort- Ordenar matriz de salida' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip- Deshágase de los duplicados consecutivos de la matrizSED (Diagrama de efecto de pila) es:
a -- aUso y ejemplo
fuente
Perl 5 , 41 + 1 (-n) = 42 bytes
Pruébalo en línea!
fuente