Sea n
la cantidad de veces que se ejecutó su programa. Si n
es una potencia de 2, imprima 2^x
dónde n = 2^x
; de lo contrario, simplemente envíe el número. Ejemplo de ejecución:
[1st time] 2^0
[2nd time] 2^1
[3rd time] 3
[4th time] 2^2
[5th time] 5
y así. Este es un concurso de popularidad, por lo que la respuesta con más votos positivos gana.
popularity-contest
Jwosty
fuente
fuente
0
en la primera ejecución?n = 2^x
? De lo contrario, la segunda vez sería la salida2^4
, la cuarta2^16
y así sucesivamente."1
es un poder de dos.2^0=1
x = 2^x
lugar den = 2^x
Respuestas:
Java - Abuso de API
Hay muchas computadoras en línea que pueden contar, así que ¿por qué almacenar el conteo yo mismo?
Abuso total de la API de pila para obtener la cuota y la cuota restante para ver cuántas veces se ha ejecutado hoy:
Obviamente, esto solo funciona con una nueva cuota diaria para su IP, y solo hasta la cuota. Si desea soporte para los números más altos, publicar [en funciones solicitud] para elevar
quota_max
aMAX_INT
.fuente
JavaScript
alert((n=Math.log((l=localStorage).m=~~l.m+1)/Math.log(2))==(n|0)?"2^"+n:l.m)
Las alertas sucesivas son las siguientes:
fuente
C - escribir en el ejecutable
Este código C actualiza la cadena
data
en el ejecutable, por lo que esencialmente este es un código auto modificable. Si lo ejecutas más de 9,999,999 veces, obtienes cosas interesantes.fuente
gcc test.c
,./a.out
2^0 Segmentation fault (core dumped)
Java
El siguiente código modifica su propio archivo de clase para almacenar el nuevo recuento de ejecución. Esto fue especialmente divertido cuando no tenías idea de cómo se ve el código de bytes, pero después de innumerables horas de Google y Pruebas finalmente funciona. :)
Demostración (utilizando 7 como valor inicial para fines de demostración):
Código:
fuente
dg
¡Aquí te presento un código portátil! ¡En cada carrera
#
se agrega un al final, haciendo una barra de progreso! Además, puede mover el código a otra máquina y reanudar desde donde estaba.Después de 18 veces:
fuente
Ejemplo de Ruby basado en Sinatra
Esta solución basada en servidor almacena un contador personal para cada usuario en una cookie.
Pruébelo en http://every-2-to-the-n-times.herokuapp.com/
fuente
perl
Aquí hay un poco de perl para hacerlo. ¿Dónde deben almacenarse los datos? ¿Por qué en el archivo del programa en sí, por supuesto! =)
Originalmente había usado el identificador mágico del archivo DATA de esa manera, pero siento que lo anterior es "más puro":
fuente
tell DATA
antes de leer, luego buscar de nuevo en ese lugar.Golpetazo
Script de shell de autoedición simple.
fuente
Golpetazo
Me gusta la solución Bash de dfernig , pero también me gustaría publicar la mía:
Creo que la solución puede considerarse diferente, porque
La "memoria" es el tamaño del script (inicialmente 171 bytes), que se incrementa en 1 con la adición de una nueva línea en cada ejecución.
Las potencias de 2 se reconocen al convertir el tamaño del programa (menos 170, por supuesto) a binario, y luego contar las unidades: si hay exactamente una, entonces n es una potencia de 2. El exponente es el número de ceros en binario .
fuente
Solución Java
Uing la API de preferencias de Java para almacenar la cantidad de ejecución; y precalculó los poderes de 2 para comparar un hashmap
fuente
Javascript
Elegí no usar la
log2
solución obvia , pero trabajar con operadores bit a bit para encontrar la posición de un solo bit en la representación binaria de la potencia de 2 números.fuente
for
bucle de 1 a 130, con la representación ...: /Rubí
Muy bien, creo que intentaré esto ahora. Busca por sí mismo la definición de
n
.(probado en Ruby 1.9.3)
fuente
Fortran 77
Código:
Resultado:
fuente
C
Una de las formas "adecuadas" de hacerlo (sin usar archivos, es decir).
Puede darle
reset
en la línea de comando para volver a ponerlo a cero. También puede mover o copiar el ejecutable. Al mover el ejecutable, se restablece y varias copias del ejecutable son independientes.fuente
Brillante, 423 caracteres (otro código auto modificable). Guárdelo como
count.spn
luego ejecutarspn count.spn
:fuente
Aquí hay una solución rápida de Python 3, que utiliza un archivo de datos para almacenar
n
yx
entre ejecuciones:La salida de ejecutarlo 16 veces:
fuente
Python 2
fuente
C#
Sin embargo, esto requiere que defina una propiedad de configuración en su proyecto de Visual Studio:
fuente
C / POSIX
Este programa usa la cantidad de enlaces duros a su propio ejecutable como contador de la frecuencia con la que se llamó. Crea los nuevos enlaces duros en el directorio desde el que se inició (porque de esa manera se garantiza que estará en el mismo sistema de archivos), por lo que necesita permiso de escritura. He omitido el manejo de errores.
Es mejor que se asegure de no tener un archivo importante con el mismo nombre que uno de los enlaces duros creados en ese directorio, o se sobrescribirá. Si, por ejemplo, se nombra el ejecutable, se nombrarán
counter
los enlaces duroscounter_1
,counter_2
etc.Ejemplo de ejecución (la primera línea restablece el contador, en caso de que el ejecutable ya se haya ejecutado):
fuente
Fortran 95
Un archivo llamado "a" (sin extensión) realiza un seguimiento de la ejecución del programa.
fuente