Soit n
le nombre d'exécutions de votre programme. Si n
est une puissance de 2, imprimez 2^x
où n = 2^x
; sinon, affichez simplement le nombre. Exemple d'exécution:
[1st time] 2^0
[2nd time] 2^1
[3rd time] 3
[4th time] 2^2
[5th time] 5
etc. Il s'agit d'un concours de popularité, donc la réponse avec le plus de votes positifs l'emporte.
popularity-contest
Jwosty
la source
la source
0
lors de la première exécution?n = 2^x
? Sinon, la deuxième fois que la sortie serait2^4
, la quatrième fois2^16
et ainsi de suite.1
est une puissance de deux.2^0=1
x = 2^x
plutôt quen = 2^x
Réponses:
Java - Abus d'API
Il existe de nombreux ordinateurs en ligne qui peuvent compter, alors pourquoi enregistrer le compte moi-même?
Abus total de l'API Stack pour obtenir le quota et le quota restant pour voir combien de fois il a été exécuté aujourd'hui:
Évidemment, cela ne fonctionne qu'avec un nouveau quota quotidien pour votre adresse IP, et uniquement jusqu'au quota. Si vous souhaitez un soutien pour un plus grand nombre, afficher une [fonction de demande] pour élever
quota_max
àMAX_INT
.la source
Javascript
alert((n=Math.log((l=localStorage).m=~~l.m+1)/Math.log(2))==(n|0)?"2^"+n:l.m)
Les alertes successives sont les suivantes:
la source
C - écrire dans l'exécutable
Ce code C met à jour la chaîne
data
dans l'exécutable, il s'agit donc essentiellement d'un code auto-modifiable. Si vous l'exécutez plus de 9 999 999 fois, vous obtenez des trucs intéressants.la source
gcc test.c
,./a.out
2^0 Segmentation fault (core dumped)
Java
Le code suivant modifie son propre fichier de classe pour stocker le nouveau nombre d'exécutions. C'était particulièrement amusant lorsque vous n'aviez aucune idée de l'apparence du code d'octet, mais après d'innombrables heures de recherche et de test sur Google, cela fonctionne enfin! :)
Démo (en utilisant 7 comme valeur de départ à des fins de démonstration):
Code:
la source
dg
Ici, je vous présente un code portable! À chaque course, un
#
est ajouté à la fin, ce qui crée une barre de progression! Vous pouvez également déplacer le code sur une autre machine et reprendre là où vous étiez.Après 18 fois:
la source
Exemple de Ruby basé sur Sinatra
Cette solution basée sur serveur stocke un compteur personnel pour chaque utilisateur dans un cookie.
Essayez-le sur http://every-2-to-the-n-times.herokuapp.com/
la source
perl
Voici un petit peu de perl pour le faire. Où les données doivent-elles être stockées? Pourquoi dans le fichier programme lui-même, bien sûr! =)
À l'origine, j'avais utilisé la poignée magique du fichier DATA comme ça, mais je pense que ce qui précède est "plus pur":
la source
tell DATA
avant de lire, puis revenir à cet endroit.Frapper
Script shell auto-éditable simple.
la source
Frapper
Je aime dfernig de » solution Bash , mais je voudrais moi aussi poster:
Je pense que la solution peut être considérée comme différente, car
La "mémoire" est la taille du script (initialement 171 octets), qui est augmentée de 1 avec l'ajout d'une nouvelle ligne à chaque exécution.
Les puissances de 2 sont reconnues en convertissant la taille du programme (moins 170, bien sûr) en binaire, puis en comptant celles-ci: s'il y en a exactement une, alors n est une puissance de 2. L'exposant est le nombre de zéros en binaire .
la source
Solution Java
Uing l'API des préférences java pour stocker le montant d'exécution; et précalculé les puissances de 2 pour une table de hachage pour comparer
la source
Javascript
J'ai choisi de ne pas utiliser la
log2
solution évidente mais de travailler avec des opérateurs au niveau du bit pour trouver la position du bit unique dans la représentation binaire de la puissance de 2 nombres.la source
for
boucle de 1 à 130, avec le rendu ...: /Rubis
D'accord, je pense que je vais essayer ça maintenant. Il recherche lui-même la définition de
n
.(testé dans Ruby 1.9.3)
la source
Fortran 77
Code:
Résultat:
la source
C
Une des façons "appropriées" de le faire (sans utiliser de fichiers, c'est-à-dire).
Vous pouvez le donner
reset
sur la ligne de commande pour le remettre à zéro. Vous pouvez également déplacer ou copier l'exécutable. Le déplacement de l'exécutable le réinitialise et plusieurs copies de l'exécutable sont indépendantes.la source
Pétillant, 423 caractères (encore un autre code auto-modifiable). Enregistrez-le sous
count.spn
puis exécutezspn count.spn
:la source
Voici une solution Python 3 rapide, qui utilise un fichier de données pour stocker
n
etx
entre les exécutions:La sortie de l'exécuter 16 fois:
la source
Python 2
la source
C #
Cela nécessite cependant que vous définissiez une propriété de paramètres dans votre projet Visual Studio:
la source
C / POSIX
Ce programme utilise le nombre de liens durs vers son propre exécutable comme compteur de la fréquence à laquelle il a été appelé. Il crée les nouveaux liens durs dans le répertoire à partir duquel il a été démarré (car de cette façon, il est garanti d'être sur le même système de fichiers), ce qui nécessite donc une autorisation d'écriture. J'ai omis la gestion des erreurs.
Vous feriez mieux de vous assurer que vous n'avez pas de fichier important avec le même nom que l'un des liens durs créés dans ce répertoire, sinon il sera écrasé. Si par exemple l'exécutable est nommé
counter
, les liens durs seront nomméscounter_1
,counter_2
etc.Exemple d'exécution (la première ligne réinitialise le compteur, au cas où l'exécutable a déjà été exécuté):
la source
Fortran 95
Un fichier nommé "a" (sans extension) assure le suivi de l'exécution du programme.
la source