Définition
- a (1) = 1
- a (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) pour n> 2 où n est un entier
Tâche
Étant donné un entier positif n
, générez a(n)
.
Cas de test
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Référence
- Obligatoire OEIS A005185
code-golf
sequence
arithmetic
Leaky Nun
la source
la source
Réponses:
Rétine ,
84837974 octetsLe nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne! (La première ligne active une suite de tests séparés par un saut de ligne.)
Je devrai jouer au golf un peu plus tard.
la source
Haskell,
3533 octetsDéfinit une fonction
a
.la source
(b.b)1+(b.b)2
plus court que la somme?Julia, 29 octets
Essayez-le en ligne!
Comment ça marche
Nous redéfinissons l'opérateur unaire
!
pour nos besoins.Si n est 1 ou 2 ,
n<3
renvoie vrai et ceci est notre valeur de retour.Si n est supérieur à 2 ,
n<3
renvoie false et le || la branche est exécutée. Il s'agit d'une implémentation simple de la définition, où les~-n
rendements n - 1 et les~-~-n
rendements n - 2 .la source
Sesos, 54 octets
Essayez-le en ligne
Démonté
Ou en notation Brainfuck:
la source
C,
4342 octets1 octet enregistré grâce à @Dennis
Chaque réponse est la même, je dois faire quelque chose de différent!
Essayez-le en ligne!
Explication: c'est fondamentalement
a(n-a(n-2))+a(n-a(n-1))
mais avec un comportement indéfini fanfaron (fonctionne sur mon téléphone (gcc) et ideone).la source
1
entre?
et:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 octets
Le nombre d'octets suppose que le codage ISO 8859-1 et Mathematica sont
$CharacterEncoding
définis surWindowsANSI
(la valeur par défaut sous Windows; d'autres paramètres peuvent également fonctionner, mais certainsUTF-8
ne le sont certainement pas).Définit
±
comme un opérateur unaire.J'ai essayé de me débarrasser de la duplication, mais j'ai fini avec le même nombre d'octets:
la source
Gelée ,
1514 octetsEssayez-le en ligne! ou vérifiez tous les cas de test (prend quelques secondes).
Comment ça marche
la source
Gelée ,
141211 octetsIl s'agit d'une approche itérative.
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça marche
la source
Python,
4540 octetsInterprétation simple et naïve du défi.
5 octets enregistrés grâce à @LeakyNun!
la source
Haskell,
3937 octetsexactement comme décrit dans le défi, en utilisant des gardes
la source
n<3
pourh 2
être1
.R, 50 octets
Usage:
la source
CJam,
1918 octetsEssayez-le en ligne!
Utilise l'approche itérative.
la source
C #,
5144 octetsje me demande si cela peut être raccourci en le rendant anonymemerci pinkfloydx33!la source
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
dans le premier jeu de parens devrait être-1
JavaScript (ES6),
45 octets34 octetsUne solution récursive dans ES6. Tous les conseils de golf sont très appréciés.
Merci à / u / ismillo d' avoir raccourci encore plus.
la source
Golfscript, 29 octets
Essayez-le en ligne!
la source
05AB1E, 29 octets
Une solution itérative.
Essayez-le en ligne
la source
APL, 20 octets
Explication:
la source
VBA Excel 87 octets
Non récursif, puisque je veux que cela fonctionne pour n = 100000, dites:
... et appuyez sur
return
(octet # 87) à la fin de la ligne pour obtenir laEnd Function
déclaration "gratuitement". Notez que les valeurs B sont décalées de -1 pour éviter l'initialisation pour n = 1 et 2.Invoquer dans une feuille de calcul comme d'habitude, par exemple
=A(100000)
pour obtenir48157
La version récursive, 61 octets ,
commence à devenir excessivement lent pour n> 30, et on ne peut pas dire qu'il fonctionne du tout pour n> 40.
la source
Rubis, 36 octets
Une mise en œuvre directe. Toutes les suggestions de golf sont les bienvenues.
la source
a[n-1]
et tel, la fonction doit être nommée.Java 7,
686151 octets17 sauvés grâce à Leaky Nun.
la source
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
:, mais malheureusement, elle utilise la même quantité d'octets que la réponse que vous avez déjà .. Je préciserais également que votre réponse est en Java 7, car la réponse Java 8 serait plus courte:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 octets ) .Oasis ,
975 octets (non concurrent)Non compétitif , car la langue est postérieure au défi. Merci à Kenny Lau d' avoir économisé 4 octets. Code:
Forme développée (
V
est l'abréviation de11
):Code:
Essayez-le en ligne! . Calcule n = 1000 en 0,1 seconde.
la source
PowerShell v2 +,
857969 octetsPrend l'entrée
$n
, définit$b
comme un tableau de@(1, 1)
, puis entre dans une boucle à partir de2 .. $n
. À chaque itération, nous abordons$b
le dernier calcul de la séquence avec un simple+=
et la définition de la séquence. Nous sortons ensuite le nombre approprié à partir de$b
(avec un-1
car les tableaux dans PowerShell sont indexés zéro). Cela fonctionne si$n
est1
ou2
parce que ces deux valeurs sont pré-remplies dans les indices inférieurs de$b
dès le début, donc même si la boucle claque sur les fichiers indésirables, elle est de toute façon ignorée.Solution récursive
7876 octetsLa première fois, j'ai utilisé l'équivalent d'un lambda comme réponse, car généralement une solution itérative est plus courte (comme vous pouvez le voir dans toutes les parenthèses imbriquées).
Mais, dans ce cas, les parens imbriqués sont presque dupliqués dans la solution itérative avec les appels de tableau imbriqués, de sorte que la solution récursive est plus courte.Non, la solution itérative est en effet plus courte (voir ci-dessus).Appelez-le via l'opérateur d'exécution, comme
&$a 20
. Juste un appel récursif direct.la source
JavaScript (ES6), 66 octets
Version non récursive pour la vitesse; la version récursive est probablement plus courte mais je laisse le soin à quelqu'un d'autre d'écrire. J'aime toujours quand j'arrive à utiliser
reduce
. Remarque: 1 octet enregistré en retournanttrue
(qui est converti en1
cas d'utilisation dans un contexte entier) pour dea(1)
eta(2)
.la source
Pyth, 16 octets
Définit une fonction
y
.Essayez-le en ligne (ajouté
yMS20
pour imprimer les 20 premières valeurs)la source
Forth, 76 octets
Je l'ai finalement fait fonctionner!
Essayez-le en ligne
Explication:
Essayez-le en ligne (légèrement non golfé par le haut)
Malheureusement, la récurrence mutuelle est un peu trop verbeuse à utiliser pour le golf.
la source
Érable,
4341 octetsUsage:
Ce problème est certainement un bon candidat pour la mémorisation. Grâce au cache d'options , les temps d'exécution sont considérablement réduits:
Cela peut être vu en utilisant:
la source
J,
2928 octetsUtilise la définition récursive.
Usage
Des commandes supplémentaires sont utilisées pour formater plusieurs entrées / sorties.
Explication
la source
dc, 62 octets
Cette solution utilise des tableaux et la récursivité.
la source
dc
, faites le moi savoir!Erlang, 46 octets
la source
Lua, 59 octets
la source