EDIT: J'accepterai une réponse le lundi 15/02/2016. Que les octets soient toujours en votre faveur!
Dans son défi "Imprimer la séquence N-Bonacci" , @DJMcGoathem décrit les séquences N-bonacci, dans lesquelles les nombres N précédents sont additionnés, au lieu des 2 traditionnels de la séquence Fibonacci (qui serait la " séquence duo nacci"). Il a ensuite demandé de prendre deux entrées, X et N, puis de sortir le X e N -nacci.
Je propose le contraire.
Étant donné une séquence, affichez la séquence N -nacci dont elle est un sous-ensemble. Je dis "sous-ensemble de" parce que:
- A) ces séquences sont infinies
- B) si donné le début de la séquence, vous pouvez simplement compter le nombre de 1 en tête
Dans le cas où il pourrait appartenir à plusieurs séquences N- nacci, choisissez la plus basse.
Dans le cas où il n'appartient à aucune séquence N-nacci , votre programme peut faire autre chose que d'imprimer quelque chose qui pourrait être confondu avec la sortie. Ces comportements incluent (mais ne sont pas limités à): boucle infinie, erreur, crash, se supprimer (* toux toux * vigil * toux toux *), ou créer un trou noir (tant que ce trou noir ne produit rien qui pourrait être confondu avec une sortie valide).
Pour relever ce défi, ces séquences commencent par 1. Cela signifie que toute séquence N- nacci commence par N unités . De plus, N doit être un entier positif. Donc pas de -1 -acci, etc.
Cas de test:
1,1,1 -> 1
49, 97 -> 7
55, 89, 144 -> 2
1 -> 1
6765 -> 2
12, 23, 45, 89 -> 12
100, 199 -> 100
create a black hole (as long as this black hole does not produce anything that could be mistaken for valid output).
Les spirales du trou noir convergent vers le nombre d'or! Ce doit être une sortie valide pour une séquence duoacci!Réponses:
Rubis, 94
Je suis assez surpris de voir jusqu'où j'ai pu jouer au golf avec le même algorithme! J'ai commencé avec plus de 200!
Non golfé:
la source
x=[1]*(s+z=a.size)
marche exactement?n == 1
, alors nous n'augmenterons jamais, nous avons donc besoin d'un tableau de 1 aussi long que soit l'entrée. Sin > 1
, alors nous avons besoin d'au moinsn
1 pour la séquence. Donc,s+a.size
couvren == 1
pour n'importe quelle longueura
, et il couvre le début de toute autre séquence afin que nous puissions simplement commencer à ajouter dess
chiffres sur le batt. Cela a-t-il du sens?[1]*number
donne un tableau de 1 de longueurnumber
.x=[1]*(s+z=a.size)
Affecte donca.size
àz
, puis attribue àx
un tableau de 1 longueurs+z
.Python 2, 176 octets
Notez que cela nécessite une entrée dans ce format:
plutôt que
Solution assez simple, juste pour faire avancer les choses. Je travaillerai davantage sur le golf une fois que quelqu'un d'autre aura répondu. Cela utilise une version légèrement modifiée du générateur N-Bonnaci de la réponse de @ Data , donc accessoires pour lui. Ensuite, pour chaque N-Bonnaci dans la plage de l'entrée, vérifie si l'entrée en est une sous-séquence.
la source
f.append
pourf+=
;
nécessaire?Lua,
324323 octetsQuand je vois une autre soumission, j'ai l'impression qu'il y a quelque chose qui ne va pas avec mon code ... Mais alors, je me souviens que c'est Lua, et il n'y a pas toutes ces fonctionnalités fantaisistes: '(
C'était très amusant, ça m'a pris du temps en fait.
Edit: 1 octet enregistré avec une astuce simple: en utilisant un
::label::
+ à lagoto label
place d'une boucle infinie effectuée avecwhile''
.Non golfé et explications
Lua n'a aucun moyen de définir un ensemble, un sous-ensemble ou même de vérifier si un tableau / table contient une valeur sans utiliser son index / clé. C'est pourquoi j'ai décidé de supprimer des éléments du tableau que je prends comme paramètre. c'est ainsi que je garde la trace des éléments qui ont déjà été calculés et s'ils correspondent.
Vous pouvez essayer Lua en ligne et vous pouvez copier / coller l'exemple de code suivant pour exécuter des tests. Comme cette fonction se termine lorsqu'elle trouve la réponse (boucle infinie sinon), vous devrez changer l'index
test[]
utilisé (n'oubliez pas que lua est 1-indexé :)).la source