Liste donnée d'entiers {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Pour ceux qui sont intéressés, ces chiffres sont utilisés dans le calcul en semaine.
Jour de la semaine = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, où m[n]
- expression que je recherche, d
- jour du mois, y
- year - (month <= 2)
.
Construisez une expression composée d'opérateurs arithmétiques, logiques et au niveau du bit, qui sortiront pour un entier n
positif de m
façon à ce qu'il m % 7
soit le nième nombre dans la liste.
Les branches, les opérateurs ternaires, les recherches de table et les pointeurs ne sont pas autorisés.
Note:
1 - pour les | & ^ ~ >> <<
opérateurs
1.1 - pour les + - < > <= >= == != ! && ||
opérateurs
1.2 - pour l' *
opérateur
1.4 - pour les / %
opérateurs
Répondez avec le score le plus bas.
Personnellement, j'ai trouvé:
(41*n)>>4+((n+61)>>4)<<2
avec un score de 6,4. Je pensais que ce serait difficile à trouver, à condition de disposer de sa propre expression pour commencer.
la source
table lookups
Réponses:
2
2,2J'adore l'arithmétique de précision arbitraire.
Ou, si vous n'aimez pas l'hexagone,
Tester:
la source
4*n
place et économiser 0,2 point en l'écrivant commen<<2
?7
. Mon meilleur candidat pour la division des étages entiersconst/n
est en contradiction avecn=4
etn=8
.const%n
qui pourrait tout satisfaire sauf n = 1,2 et 3.2.0
ou (note 2,2):
Tous trouvés avec force brute :-)
la source
for
boucle, testant toutes les valeurs p, q pour la formule(p >> i) ^ q
, puis je suis allé prendre un café, et 10 mn après je suis venu lire les résultats.35,3
Je soupçonne que cela peut être la méthode la moins efficace pour créer la liste:
Je viens de calculer la régression polynomiale. Je suis tenté de voir quelle autre méthode terrible pourrait être tentée.
Notamment, je pourrais gagner 3,3 points si le résultat était arrondi. À ce stade, je ne pense pas que cela compte.
la source
3.2
Solution basée sur zéro:
Une solution unique:
J'ai d'abord pensé que l'
%7
opération serait également prise en compte et%
étant une opération coûteuse ici, j'ai essayé de la résoudre sans elle.Je suis arrivé à un résultat de 3,2 comme ceci:
Je serais intéressé par des optimisations utilisant cette approche (sans
%
). Merci.la source
(0426415305230 >> (i*3)) & 7
? Vous pouvez voir les chiffres de sortie dans l'ordre inverse.Python (3)
Comme il y a beaucoup de ces questions ces jours-ci, j'ai décidé de créer un programme pour les résoudre automatiquement en 3 (ou 2) jetons. Voici le résultat de ce défi:
Preuve que cela fonctionne:
la source
&
.