Le but est de calculer tous les carrés jusqu'à l' x
addition et la soustraction.
Règles:
- Le code doit être une fonction qui prend le nombre total de carrés à générer et renvoie un tableau contenant tous ces carrés.
- Vous ne pouvez pas utiliser de chaînes, de structures, de multiplication, de division ou de fonctions intégrées pour calculer des carrés.
- Vous ne pouvez utiliser que des tableaux, des entiers (nombres entiers), l'addition, la soustraction. Aucun autre opérateur autorisé!
C'est une question de code-golf , donc le code le plus court en octets gagne!
Réponses:
APL - 10
Exemple d'utilisation:
démo ngn APL
la source
+\1+⍳+⍳
C,
5552 octetsrésume simplement les nombres impairs
n
: nombre de carrés à calculerr
: tableau de sortie pour stocker les résultatsj
: prend les valeurs successives 1, 3, 5, 7, ...i
: est incrémenté dej
à chaque itérationÉditer
4 caractères peuvent être enregistrés à l'aide de la déclaration implicite int (> C99), mais cela coûte 1 caractère car les
for
initialiseurs ne peuvent pas contenir de déclaration dans> C99. Ensuite, le code devientUsage
Production
la source
GolfScript, 17 caractères
Utilisation (voir aussi des exemples en ligne ):
Remarque:
*
est une boucle et non l'opérateur de multiplication.la source
,
prend l'entrée et la convertit en tableau[0 1 ... n-1]
.*
Injecte ensuite le bloc de code donné dans le tableau. Ce bloc double d'abord l'élément actuel (.+
) soustrait un ((
) puis ajoute le résultat précédent1$+
(en d'autres termes, ajouter2j-1
au numéro de carré précédent).[]
renferme tout afin de retourner un nouveau tableau.Windows Batch, 115 octets
Celui-ci doit être placé dans un fichier de commandes au lieu d'être exécuté à partir de cmd, et il génère la liste sur la console. Il faut le nombre de carrés à créer à partir du premier argument de ligne de commande. Pour la plupart, il utilise
&
au lieu de sauts de ligne, un est cependant nécessaire et il compte pour deux octets.Il a besoin d'une extension variable retardée activée, cela peut être fait avec
cmd /v:on
. En supposant que ce n'est pas le cas, un supplémentsetlocal enabledelayedexpansion&
était nécessaire au début (sans lui, le script fait 83 octets).la source
Haskell - 30
Cela utilise le fait que
(n+1)^2=n^2+2n+1
la source
Perl, 27 octets
Math:
Script pour appeler la fonction pour imprimer 10 carrés:
Résultat:
Modifications:
pop
au lieu deshift
(−2 octets, merci skibiranski )la source
JavaScript - 32 caractères
Suppose qu'une variable
x
existe et crée un tableaua
de carrés pour les valeurs1..x
.ECMAScript 6 - 27 caractères
L'appel
f(x)
remplira le tableaub
avec les carrés pour les valeurs0..x
.la source
i+++i
la fin ...?k+=i+++i
est le même que celuik += i + (++i)
qui estk+=i+i+1
suivi pari=i+1
b=[f=i=>b[i]=i&&i+--i+f(i)]
).Julia - 33
Tout nombre carré peut être écrit par une somme de nombres impairs:
la source
C ++
9981788078mon premier essai en code-golf
ce code est basé sur
a = 2 xn - 1
où n est le nombre de termes et a est le n ème terme des séries suivantes
1, 3, 5, 9, 11, 13, .....
somme des 2 premiers termes = 2 au carré
somme des 3 premiers termes = 3 au carré
et ainsi de suite ...
la source
{}
après lafor
boucle, car il n'y a qu'une seule déclaration. Cela peut réduire votre nombre de caractères de 2addition, subtraction
, je n'utilise que ceuxAssemblage DCPU-16 (90 octets)
J'ai écrit cela en assembleur pour un processeur fictif, car pourquoi pas?
Le nombre devrait être dans le registre X, et les autres registres devraient être 0. Les résultats sont poussés vers la pile, il se cassera une fois qu'il atteindra 65535 en raison de l'architecture 16 bits. Vous voudrez peut-être ajouter un
SUB PC, 1
à la fin pour le tester. Compilé, le programme devrait être de 20 octets (10 mots).la source
Haskell
Cela invente essentiellement la multiplication, l'utilise elle-même et la mappe sur tous les nombres.
f 10
=[0,1,4,9,16,25,36,49,64,81]
. Aussif 91
=[0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681,1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100]
.la source
Haskell, 34/23
ou, si les importations sont acceptables:
Production:
la source
Javascript 47
function f(n,a){return a[n]=n?f(n-1,a)+n+n-1:0}
r=[];f(12,r);console.log(r)
Retour :[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]
la source
f=(n,a)=>a[n]=n?f(n-1,a)+n+n-1:0
.Smalltalk, 52
Renvoie un nouveau tableau (c'est-à-dire qu'il ne remplit pas ou n'en ajoute pas un existant).
appel:
valeur f: 10
-> # (1 4 9 16 25 36 49 64 81 100)
la source
python - 39
Remplacez
5
par n'importe quelle valeur. Aucune suggestion?la source
Bash -
928562615957Résultat:
Edit: j'ai remplacé la boucle interne par l'algorithme de la solution Haskell de @ mniip.
la source
Même méthode que ci-dessus, en APL et J:
APL:
F←{+\1+V+V←¯1+⍳⍵}
(17 caractères) fonctionne avec la plupart des variantes APL (essayez-le ici )et encore moins (seulement 14 caractères) avec NGN APL:
F←{+\1+V+V←⍳⍵}
(voir ici )J:
f=:+/\@(>:@+:@:i.)
(18 caractères)Éditer: meilleure solution en APL:
F←{+\¯1+V+V←⍳⍵}
(15 caractères)la source
C # (82)
la source
C # - 93
Lorsqu'il est appelé à partir d'une autre méthode de la même classe, retourne le tableau -
[1,4,9,16,25,36...]
, jusqu'aul
th élément.la source
int[]
etsq
? Je ne connais pas C #, mais je pense que cela devrait fonctionner.int[]sq
place deint[] sq
etint[]res
au lieu deint[] res
. Cela vous aide à enregistrer deux caractères, et je n'ai eu aucune erreur de compilation avec cela. Vous devez également utiliser des identificateurs à caractère unique poursq
etres
comme vous l'avez suggéré.Fortran II | IV | 66 | 77,
134122109105Edit: suppression de la boucle interne et utilisation de l'algorithme Haskell de @ mniip à la place.
Edit: vérifié que le sous-programme et le pilote sont valides Fortran II et IV
Chauffeur:
Résultat:
la source
Python - 51
Ici, je définis une fonction comme demandé par les règles.
Utilisation
sum
de nombres impairs:Cela n'utilise que
sum
(une fonction intégrée qui effectue l'addition) etrange
(une fonction intégrée qui crée des tableaux en utilisant l'addition). Si vous vous y opposezsum
, nous pouvons le faire avecreduce
:la source
PHP, 92 octets
Cela doit avoir l'option "balises courtes" activée, bien sûr (pour raser 3 octets au début).
Production:
la source
Quatrième - 48 octets
Usage:
Production:
la source