Aveces no sabemos la suerte que tenemos ¿no crees?
Ese tipo de musica es la que uno se pone cuando está bajuno y necesita hechar un polvo salvaje para quitarse las penas de encima, Rando, ¿estás triste? .
Lo peor de todo es que la música es contagiosa, y ahora me han entrado ganas de hechar un kiki, pero no hay hembras, así que será mejor que vaya corriendo a ponerme algo de heavy para contrarestar el efecto.
el tema es que para salir del lio de la limitacion 32/64 bit, usas aritmetica de precision arbitraria
agrego:
el asunto de pi es que no puedes ir simplemente calculando digito por digito, sino que es un acumulativo, eso lo hace dificil porque tienes que reprocesar todo lo que tienes para sacar los decimales, con el segundo metodo que investigué saca 8 decimales por ciclo y hubo uno que me ganó que daba 15 decimales por ciclo
Simplemente genial ese aporte, lo que dices que consigue, y la forma en la que lo consigue, se nota la diferencia entre alguien que tiene mucha (o la suficiente) experiencia con la aritmética, y alguien que no xD, me pierdo con las fórmulas.
Yo hice de informador más que nada sobre distintos aspectos que se deben tener en cuenta al llevar a cabo este tipo de tareas/operaciones a tales magnitudes, ya que como supuse desde un principio debía existir una solución simplificada que obviamente no debiera necesitar la escritura de archivos de texto y la ralentización que eso supone, solo había que hallar la metodología apropiada para llevar a cabo la tarea y así evitar esos límites de 32/64 Bits (como consiguió @Engel Lex), pero como ya dije antes, las matemáticas no son lo mio, ¡lo siento!.
De todas formas no te preocupes por eso, todavía no he escuchado el caso en que se banee a un usuario por publicar un tema en el foro equivocado siendo éste un usuario nuevo, ese tipo de fallo se perdona la primera vez, siempre que no se incumpla otras normas realmente graves en el contenido del post...
En windows 7 puedes hacerlo, solo tienes que situar el ratón encima del acceso directo, click derecho, propiedades y método abreviado...
Debo aclarar, para quien esté interesado, que esa característica que comentas solo funciona para ejecutar accesos directos, y estos se deben encontrar visibles en el escritorio.
Para administrar y configurar hotkeys globales permanentes, hay cientos de aplicaciones de todo tipo, free, paid, con UI para tontos, con UI profesional y opciones avanzadas...
El que yo utilizo es HotkeyControl ( http://www.hotkeycontrol.com ) ya que cumple mis necesidades, aunque es de pago, pero se puede encontrar facilmente con... medicina incorporada
Antes de llegar a utilizar esa aplicación, probé decenas de software gratis, de los cuales ya no recuerdo el nombre, pero tampoco pienso hacer mucho esfuerzo en recordar, ya que, como dije anteriormente, una búsqueda en Google para resolver dudas típicas no vendria nada mal...
En python, yo podría calcular esos millones de dígitos y guardarlos (cuando mi RAM esté llena). Entonces podría almacenarlos en algún otro sitio y así poder vaciar la RAM para que comience de nuevo. ¿Hasta aquí voy bien?
Sí, aunque debes dejar un margen preventivo para no comerte TODA la memoria disponible, ya que esto repercutiría en el rendimiento y comportamiento del resto de aplicaciones y del SO en general.
Además, si llegas al límite de RAM, por seguridad cualquier lenguaje lanzará una excepción de desbordamiento de memoria, excepción que deberás controlar en tu aplicación para no detenr imprevisiblemente su ejecución.
La cosa es que cuando comience de nuevo, obligatoriamente lo tendrá que hacer por el 3,14159... no por el último dígito en el que se quedó (la vez anterior, cuando llenamos la RAM por primera vez). ¿Me explico?
Con lo cual, ¿existe alguna forma de que yo pudiera seguir con el bucle y que fuese almacenando los dígitos a partir del dígito por el que se quedó la última vez?
Supongo que te refieres a que la variable numérica deberá seguir por el número donde lo dejó, ya, ese es el problema y no se me ocurre como bypassear esa limitación (por eso no comenté nada al respecto), quizás no sea posible ya que, usando Python, sería un límite impuesto en las capacidades del propio Hardware, no creo que haya nada que hacer contra eso, ni tampoco que exista ningún Hack que puedas utilizar en "X" lenguaje para bypassear ese tipo de limitación en la capacidad de una variable, aunque esto último podría ser probable, no bypasseando el límite impuesto en el lenguaje, sino recurriendo a otro tipo de metodologías para llevar a cabo el mismo cálculo con menos información de la necesaria, no se, siempre hay Hacks sorprendentes para ciertos casos, y lo mio no son las matemáticas, todo hay que decirlo, jeje.
PD2: no lo hago por descubrir nada, solo quiero encontrar una forma de ir recorriendo Pi hasta que... llene 4 TB con solo dígitos
Esto te lo digo sin cachondeo, ¿eres consciente de que en un equipo "normal", el tiempo de ejecución de ese procedimiento/algoritmo llegaría a tardar semanas o meses en finalizar?.
Si realmente estás dispuesto, ya puedes hacerte a la idea de que si lo pretendes hacer más o menos decente entonces debes desarrollar una buena GUI o CLI que permita la posibilidad de detener y reanudar el proceso en cualquier momento... ya que el PC necesitará apagarse para descansar por las noches, y además deberás perfeccionar el rendimiento de la aplicación generando múltiples archivos de texto pequeños que en nigun caso superen los 100 mb, no sin olvidarnos de añadirle soporte multi-threading a la aplicación, IMPORTANTISIMO, y soporte multi-core, para que los distintos threads no compartan un único core y así sacarle el máximo provecho. Si lo haces de esa manera entonces tardarás menos tiempo en desarrollar la aplicación, que en llenar esos 4 TB de información.
Ese video lo vi ayer en Yonkis.com xD, es una pasada la broma, y la persona inválida sin ningún pudor... ¡todo un crack!
El mamón del video, el Vitaly, es o era actor porno (si, me corroe la envidia), y tiene un video muy bueno y muy conocido, de hecho el tirón de reputación que ha cogido ha sido por su mítico video de las típicas zorrasGold-Diggers, aunque el video no es de bromas de Halloween, pero merece la pena verlo y reirse un rato de estas Bitches, o "urracas", como las denomino yo...
Este otro video es posterior al mítico y primer video, tampoco tiene desperdicio:
1) El tamaño del cálculo aritmético va a estar siempre sujeto a la limitación de las capacidades de computación del lenguaje que utilices. Probablemente vaya a estar limitado a un número no mayor de 64 o 32 Bits de almacenamiento.
2) La longitud de un String (útil ejemplo de espacio donde insinuas que quieres almacenar digito por dígito por la razón que sea), también está limitada, y puede que en la mayoría de los casos el límite sea un número muy pequeño que no supere los 65534, es decir, la capacidad máxima de un número de 16 Bits, unsigned. En otros lenguajes, llega a ser incluso menor.
3) La limitación de la capacidad de almacenamiento de un String es fácil de evitar, ya que podrías enviar y escribir los datos a un archivo de texto, y entonces podrías resetear la variable a Null para no sobrepasar el máximo límite de longitud permitido, pero esto sería una locura, ya que el tiempo necesario de lectura y escritura en el disco cuando llevases una gigantesca cantidad de digitos acumulados en el interior del archivo de texto... sería algo terrorífico e inaguantable, no lo recomiendo.
4) En Python (por ejemplo) seria muy distinto, ya que la capacidad máxima es equivalente a la memoria RAM de la que dispongas para realizar la operación, es decir, cientos de miles (sino millones) de dígitos, y de caracteres.
Por lo tanto... poder, quizás se pueda llegar a un número gigantesco del valor de PI si elijes un lenguaje que te permita realizar las operaciones necesarias.
De todas formas si esto te lo has propuesto por curiosidad o como reto personal pues me parece bien, pero si lo haces para intentar calcular el número más grande entonces me parece una pérdida de tiempo, ya que hay webs y ftps que recopilan millones de digitos del PI, no es necesario desarrollar un Script si ya hay alguien que lo hizo. por ejemplo, en esta página muestran los 10.000 primeros dígitos del PI: http://www.ilikepi.com/10-000-digits-of-pi/
EDITO: Perdón, escribí los ejemplos de abajo pensando mientra escribia que este post estaba publicado en la sección de programación general xD, no tiene que ver con el Scripting, pero te podría servir de todas maneras.
EDITO2: Muevo el tema a Programación General, ya que la duda no está sujeta a ningún lenguaje específico.
5) Te muestro otra forma de iterar los dígitos de un valor numérico (el PI común de 16 dígitos), esto lo he escrito en VB.NET, pro lo puedes tomar como ejemplo y/o pseudo-código para otro(s) lenguajes(s), la idea básica es simplificar la utilización de un búcle de tipo While/Until y la creación de variables innecesarias de contadores (o acumuladores como tú lo denominas) siempre que el lenguaje te lo permita (como es en este caso, y en C# sería practicamente igual):
Código
ForEach c As Char In Convert.ToString(Math.PI)'.Replace(","c, String.Empty)
Console.Write(c)
Next c
6) La forma en la que tú has planteado el desarrollo del ejercicio, traducido a VB.Net podría llevarse a cabo de la siguiente manera, la cual te la muestro por si te sirve como idea, todo depende de cuantos digitos quieras sacar del PI...:
Código
' Estas instrucciones sirven para especificar la lozalización del formato de un String,
' para posteriormente reemplazar/eliminar el separador de decimales del número PI de la manera correcta,
' es decir, compatible con cualquier representación del separador de decimales de cualquier idioma.
Dim formatProvider As NumberFormatInfo = DirectCast(CultureInfo.CurrentCulture.NumberFormat.Clone, NumberFormatInfo)
1) No se reviven temas antiguos, de hace CUATRO años.
2) El tema ya quedó solucionado (y además, con la solución más correcta), ¿a que viene revivir el tema para esto?, podrías leer las respuestas de los demás antes de responder.
3) Los códigos deben ir en su respectiva etiqueta GeShi.