De AZSPCS :
Supposons que vous ayez un deck contenant n cartes. Chaque carte contient un numéro de 1 à n, et chaque numéro apparaît sur exactement une carte. Vous regardez le nombre sur la carte du haut - disons que c'est k - puis inversez l'ordre des k premières cartes. Vous continuez cette procédure - en lisant le premier numéro puis en inversant le nombre de cartes correspondant - jusqu'à ce que la première carte soit 1.
Écrivez le programme le plus rapide pour calculer le nombre de retournements pour un jeu donné. Notez que si vous participez au concours, vous n'êtes pas autorisé à publier votre code (et donc je ne publierai pas encore mon code).
code-challenge
fastest-code
Alexandru
la source
la source
Réponses:
Javascript
Vous passez le pont, comme ça:
la source
Scala: (Ce n'est pas un golf - n'est-ce pas?)
Application complète avec testcase et chronomètre, y compris le brassage du Deck:
nombre: 1000 taille: 100 durée: 1614 ms machine: Pentium M 2Ghz simple
la source
Python, 84 caractères
Golf quand même ... J'utilise les chiffres de 0 à n-1. En supposant que le tableau est stocké dans une variable x, cela me prend 84 caractères de Python.
Cependant, les performances sont assez mauvaises en raison d'un abus de mémoire.
la source
C
deck
est un pointeur sur un tableau entier représentant les ponts.n
est le nombre de cartes. Évidemment, la sécurité de la mémoire est la tâche de l'appelant.Il s'approche probablement de l'algorithme le plus rapide sur les ordinateurs récents et sur un langage de haut niveau. Ce n'est qu'avec des tours de niveau asm que cela pourrait être fait plus rapidement, mais pas lourdement, même avec eux.
la source
Perl 5 , 58 + 2 (-ap) = 60 octets
Essayez-le en ligne!
la source