En Base-10, tous les carrés parfaits se terminent par 0 , 1 , 4 , 5 , 6 ou 9 .
En Base-16, tous les carrés parfaits se terminent par 0 , 1 , 4 ou 9 .
Nilknarf décrit pourquoi c'est et comment cela fonctionne très bien dans cette réponse, mais je vais également donner une brève description ici:
Lors de la mise au carré d'un nombre Base-10, N , le chiffre "un" n'est pas affecté par ce qui est dans le chiffre "dizaines" ou le chiffre "centaines", et ainsi de suite. Seul le chiffre "uns" dans N affecte le chiffre "uns" dans N 2 , donc un moyen facile (mais peut-être pas le plus golfique) de trouver tous les derniers chiffres possibles pour N 2 est de trouver n 2 mod 10 pour tous 0 <= n < 10 . Chaque résultat est un dernier chiffre possible. Pour Base-m, vous pouvez trouver n 2 mod m pour tous les 0 <= n < m .
Écrivez un programme qui, quand on lui donne l'entrée N , sort tous les derniers chiffres possibles pour un carré parfait en Base-N (sans doublons). Vous pouvez supposer que N est supérieur à 0 et que N est suffisamment petit pour que N 2 ne déborde pas (si vous pouvez tester jusqu'à N 2 , je vous donnerai une quantité finie de points brownie, mais sachez que le taux de change des points brownie en points réels est de l'infini à un).
Tests:
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
c'est du code-golf , donc des règles standards s'appliquent!
(Si vous trouvez cela trop facile, ou si vous voulez une question plus approfondie sur le sujet, considérez cette question: Couverture minimale des bases pour les tests de résidus quadratiques de l'équerrage ).
la source
Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Explication
la source
Google Sheets,
525147 octetsEnregistré 4 octets grâce à Taylor Scott
Les feuilles ajouteront automatiquement 4 parenthèses fermantes à la fin de la formule.
Il ne renvoie pas les résultats dans l'ordre croissant, mais il renvoie les résultats corrects.
la source
)
s de terminaison pendant -4 octets05AB1E , 5 octets
Essayez-le en ligne! ou comme suite de tests
la source
s
marche ici? L'entrée est-elle répétée?s
estpop a,b; push b,a
. Lorsqu'une commande essaie de faire sauter quelque chose de la pile et qu'il n'y a plus rien, la prochaine entrée est utilisée. S'il n'y a plus d'entrée, la dernière entrée est utilisée ( voici un exemple ). Dans ce cas, j'aurais pu utiliser¹
ce qui pousse la première entrée, maiss
fonctionne mieux pour la suite de tests.Ln¹%ê
est équivalent ici.s
.Swift ,
47 3532 * octets* -3 grâce à @Alexander.
Peut - être la première fois dans l' histoire Swift
liensbat Python?Essayez-le en ligne!
Explication
(0..<m).map{}
- Itère à travers la plage[0...m)
et mappe les résultats suivants:$0*$0%m
- Le carré de chaque entier modulo la basem
.Set(...)
- Supprime les doublons.m in
- Attribue la base à une variablem
la source
C #, 63 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 52 octets
Cas de test
Afficher l'extrait de code
Version non récursive,
6058 octetsEnregistré 2 octets grâce à @ThePirateBay
Cas de test
Afficher l'extrait de code
la source
m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))
Pyth, 6 octets
Essayez-le en ligne
Comment ça fonctionne
la source
Brachylog ,
109 octetsEssayez-le en ligne!
Explication
la source
{>≜^₂;?%}ᵘ
une alternative ... puis j'ai réalisé qu'il y avait aussi des chiffres négatifs. > _ <≜
.>
cela représenterait toujours des nombres négatifs afaik.Japt ,
76 octetsEssaye-le
1 octet sauvé grâce à Oliver
Explication
Saisie implicite d'entier
U
.Créez un tableau d'entiers de
0
àU-1
, inclus et passez chacun par une fonction.Carré.
Modulo
U
.Récupère tous les éléments uniques du tableau et affiche implicitement le résultat.
la source
Dz%UÃâ
semble fonctionner très bien.Python 3 ,
403937 octets-1 octet merci à M. Xcoder. -2 octets grâce à Business Cat.
Essayez-le en ligne!
la source
n**2
parn*n
?range(m)
suffisantEn fait , 11 octets
Essayez-le en ligne!
Explication:
la source
CJam , 12 octets
Bloc anonyme acceptant un numéro et renvoyant une liste.
Essayez-le en ligne!
Explication
la source
{:X{_*X%}%_&}
pour 13 octetsHaskell , 45 octets
-4 octets d'Anders Kaseorg
Essayez-le en ligne!
la source
f m=nub$map((`mod`m).(^2))[0..m]
est tout aussi longue, sauf s'il existe une syntaxe sournoise pour se débarrasser des parenthèses supplémentaires.MATL ,
65 octets-1 octet grâce à @LuisMendo
Essayez-le en ligne!
la source
Octave , 27 octets
Essayez-le en ligne!
la source
Mathematica, 30 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 48 octets
43 octets si le renvoi d'un
Set
au lieu d'un tableau est acceptable.la source
Scala ,
3230 octetsUtilisation simple de la pointe facile d'OP.
Essayez-le en ligne!
-2 octets grâce à @MrXcoder, avec des priorités (pas besoin d'
()
environ*
fonctionnement )Vous vous demandez: est-ce possible de dire implicitement au compilateur de comprendre des choses comme
(0 to n-1)map(x=>x*x%n)toSet
(sans avoir à le faireimport scala.language.postfixOps
)?la source
(0 to n-1).map(x=>x*x%n).toSet
pour 30 octets. L'exponentiation a une priorité plus élevée que le modulo.Haskell , 44 octets
Essayez-le en ligne!
la source
Rétine , 70 octets
Essayez-le en ligne! Avertissement: lent pour les grandes entrées. Version 72 octets légèrement plus rapide:
Essayez-le en ligne!
la source
Clojure, 40 octets
la source
Perl 6 , 19 octets
Essaye-le
Étendu:
la source
Pyth , 13 octets
Essayez en ligne.
Lame tentative d'expliquer:
Pour trier la sortie, insérez un
S
sur n'importe quel côté du{
Je pense qu'il devrait y avoir un chemin plus court ...
la source
map
est votre ami!Python 2 , 59 octets
Essayez-le en ligne!
la source
PowerShell , 35 octets
Essayez-le en ligne!
la source
R , 28 octets
Essayez-le en ligne!
la source
Rubis ,
3130 octetsEssayez-le en ligne!
la source
PHP , 53 octets
Boucle de 0 au numéro d'entrée, en utilisant la
n^2 mod base
formule pour marquer les numéros qui ont été utilisés. Il va à cette position dans un tableau, vérifiant s'il a été incrémenté et le sortant s'il ne l'a pas été. Il l'incrémente ensuite pour que les valeurs en double ne soient pas imprimées.Essayez-le en ligne!
la source
8ème ,
138131 octetsCode
Explication
[]
- Créer un tableau de sortieswap dup >r
- Enregistrer l'entrée pour une utilisation ultérieure( 2 ^ r@ n:mod a:push ) 1 rot loop
- Calculer l'extrémité carréerdrop
- R-stack propre' n:cmp a:sort
- Trier le tableau de sortie' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip
- Débarrassez-vous des doublons consécutifs du tableauSED (Stack Effect Diagram) est:
a -- a
Utilisation et exemple
la source
Perl 5 , 41 + 1 (-n) = 42 octets
Essayez-le en ligne!
la source