elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: 1 2 3 [4] 5 6 7 8 9 10
31  Foros Generales / Noticias / La obsolescencia programada se acaba de quedar... obsoleta en: 12 Junio 2015, 17:39 pm


En Txchnologist, Reducing E-Waste: No Longer Mission Impossible?,

Citar
Un grupo de investigadores de la Universidad de Illinois han desarrollado electrónica autodestruible utilizando circuitos de magnesio sobre una lámina de polímero. El circuito se reviste de cera —como la utilizada para fabricar velas— que contiene partículas microscópicas de ácido metanosulfónico. Cuando la temperatura se eleva hasta los 55°, más o menos, la cera se funde liberando el ácido sobre los circuitos, corroyéndolos. Los componentes se destruyen totalmente en cuestión de minutos.
La secuencia de destrucción se puede controlar ajustando y variando por zonas el grosor de la capa de cera. Y por si no fuera suficiente el proceso de autodestrucción se puede activar remotamente incorporando un mecanismo que se activa con una señal de radio o de móvil, un sensor de movimiento o recurriendo a cualquier otro detonante, que al iniciarse calienta un hilo metálico que recorre el interior de la capa de cera, comenzando el proceso de destrucción.

La secuencia de destrucción se puede controlar ajustando y variando por zonas el grosor de la capa de cera. Y por si no fuera suficiente el proceso de autodestrucción se puede activar remotamente incorporando un mecanismo que se activa con una señal de radio o de móvil, un sensor de movimiento o recurriendo a cualquier otro detonante, que al iniciarse calienta un hilo metálico que recorre el interior de la capa de cera, comenzando el proceso de destrucción.


leer más

Fuente: Microsiervos
32  Foros Generales / Foro Libre / Sobre idiomas en españa en: 3 Junio 2015, 01:35 am
Viendo una discusión veo algo... en españa se hablan unos cuantos idiomas, yo vengo de un mundo "monolingual" donde raramente se escucha algo diferente a español (latino)

entonces divagando me pregunto, cuales son los idiomas en españa? a que se parecen? den un ejemplo... cuantos lo hablan nativamente?... alguno aprendió español mucho despues de su idioma natal?

espero que no produzcan lios politicos, porque allá parecen estar de la mano el idioma y la politica... solo es curiosidad, saludos!
33  Foros Generales / Foro Libre / Para comprender un poco más el contexto de Venezuela y su situación en: 22 Marzo 2015, 06:15 am
Dejo y claramente recomiendo ver esta pelicula...


relata los hechos del 27 de febrero de 1989, llamado "el Caracazo", uno de los sucesos más violentos de los ultimos 50 años de historia, que por lo general lo extranjeros no conocen y los venezolanos parecen olvidar... aquí se ve en general todo, y en el articulo de wiki se ve en detalle el suceso... hacia esta dirección va ahorita el país condenado por su falta de memoria



por cosas de contexto, explico varios detalles...

Policia metropolitana son los de azul, exctualmente desaparecida, en ese momento dirigida por Ledezma (si, el alcalde mayor que ahorita está preso)

Los de negro PTJ policía técnica judicial, es la mezcla entre la inteligencia policial, los equipos de operaciones especiales y la policía politica, actualmente CICPC

los militares son el ejercito nacional (no la guardia nacional) es la infantería de combate armado

la universidad es la UCV (Universidad Central de Venezuela), ahí está (y siempre ha estado) prohibida la entradas de las fuerzas de la ley, policía y milicia al igual que en el resto de las universidades autonomas del país, es mantenida economicamente por el país, pero el estado no tiene poder sobre ella, no puede levantar sentencia, investigarla o cerrarla

El presidente Carlos Andres Pérez en su segundo mandato, justo en los días de las reformas económicas, partido político Acción Democrática, el único partido opositor en ese momento COPEI entre los cuales se intercalaban los gobiernos

esto fue únicamente en la zona de caracas hasta donde se extienden la ciudad que la rodea... el 23 de enero es una zona popular de recursos bajos con grandes edificios llamados "Bloques" y "el barrio" son las zonas pobres y marginales del país (el 23 es parte de una)

al respecto solo digo... anhelo aquellos tiempos que si saqueabas un abasto o un supermercado tenian leche acaparada... ahorita simplemente no hay
34  Foros Generales / Foro Libre / japon no es un país ni cerca de maravilloso que les hacen creer en: 3 Marzo 2015, 02:13 am
Escribo esto simplemente para decir eso... busquen en youtube videos sobre gente viviendo allá, no otakus viviendo el sueño, no importa que les den una bofetada, será perfecta!...

aquí un ejemplo

una semana en la vida de un asalariado promedio... vean abajo las horas trabajadas y de sueño
35  Programación / Programación General / Java vs C comparable en tiempo? en: 25 Enero 2015, 05:47 am
hola! siempre había pensado que Java sería mucho más lento que C... pero estuve haciendo pruebas y rebate mi teoría a un punto despreciable... no se si es error mio o que, pero compilo el código que pondré a continuación en Java y en C y el tiempo es MUY similar (diferencia menos de 10%)

antes que nada quisiera dejar claro que no se Java... hice la conversión como pude...

quisiera que uds opinaran, me dijeran si mi método de evaluación está mal o si solo eran mis creencias...

los pongo a competir en algo donde pueden pelear con características tan similares como sea posible... calculando n números primos... y haciendo ambos códigos tan idénticos como es posible... dejo a continuación mis pruebas

a 1.000.000 de primos generados y almacenados en el array, C tarda en promedio 23 segundos y Java 25...

El codigo en C
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int es_primo(long numero);
  6.  
  7. int main(int argc, char** argv) {
  8.    clock_t startTime = clock();
  9.    int cantidad = 1000000;
  10.    int encontrados = 0;
  11.    long numero = 1;
  12.    long primos[cantidad];
  13.    while(encontrados < cantidad){
  14.        numero++;
  15.        if(es_primo(numero)){
  16.            primos[encontrados++] = numero;
  17.        }
  18.    }
  19.    clock_t endTime = clock();
  20.    /*
  21.     int i;
  22.     for(i=0;i<cantidad; i++){
  23.         printf("%d-",primos[i]);
  24.     }
  25.     */
  26.    printf("pasaron %d millisegundos",(endTime-startTime)/1000);
  27.  
  28.  
  29.    return (EXIT_SUCCESS);
  30. }
  31. int es_primo(long numero){
  32.    long control_for = 0;
  33.    if(numero <= 3) return 1;
  34.    if(numero % 2 == 0 ||numero % 3 == 0) return 0;
  35.    for(control_for = 5; numero > control_for * control_for; control_for+=6){
  36.        if(numero % control_for == 0 || numero % (control_for + 2)==0) return 0;
  37.    }
  38.    return 1;
  39.    }

el codigo en java
Código
  1. package numerosprimos;
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. public class NumerosPrimos {
  8.  
  9.    public static void main (String[] args){
  10.  
  11.        long startTime = System.currentTimeMillis();
  12.        int cantidad = 1000000;
  13.        int encontrados = 0;
  14.        long numero = 1;
  15.        long[] primos = new long[cantidad];
  16.        while(encontrados < cantidad){
  17.            numero++;
  18.            if(es_primo(numero)){
  19.                primos[encontrados++] = numero;
  20.            }
  21.  
  22.        }
  23.        long endTime = System.currentTimeMillis();
  24.        //System.out.println(Arrays.toString(primos));
  25.        System.out.println("pasaron: " + (endTime - startTime) + " millisegundos");
  26.  
  27.    }
  28.    public static boolean es_primo(long numero){
  29.        long control_for = 0;
  30.        if(numero <= 3) return true;
  31.        if(numero % 2 == 0 ||numero % 3 == 0) return false;
  32.        for(control_for = 5; numero > control_for * control_for; control_for+=6){
  33.            if(numero % control_for == 0 || numero % (control_for + 2)==0) return false;
  34.        }
  35.        return true;
  36.    }
  37.  
  38. }
36  Programación / Scripting / [Python] Espiral de Ulam en: 19 Enero 2015, 07:15 am
Los que me conocen por aquí saben que e gusta jugar con las mates... esta vez le toco el turno a la espiral de Ulam (articulo de la wiki)

me dio curiosidad su representación y quería jugar un poco con gráficos en Python... entonces esto quedó...

primero lo intenté con kivy... a 200 capas consumió 4gb de ram y congeló el pc... entonces decidí probar pygame, mucho más rápido y eficiente para esto...

a 100 capas es rápido... sobre eso vayan con cuidado... tiene una cantidad de segundos marcados para detener el calculo (cuando estaba probando con kivy era eso o mi pc)

lo punedo hacer sin problemas a 500 capas (el tamaño es limitante), pero le calculo es bastante rapido...

el algoritmo de recorrido lo basé en

suponiendo direcciones del 1 al 4 como en el codigo, sigue un patron
Código:
1,1,2,2,3,3,3,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,0,0,0,0,0...
cada 2 direccionas crece la repetición... "control" maneja esa cantidad de repeticiones, menor maneja que sean 2 direcciones por repeticion, mayor maneja la cantidad de capas en general

ya despues de mucho decir, aquí el código
Código
  1. import sys
  2. import pygame
  3. import pygame.gfxdraw
  4. import time
  5. pygame.init()
  6.  
  7. #globales
  8. tamano = 0 #tamano del punto, 0 = 1px, 1=3px... etc
  9. separacion = 1 #el desplazamiento entre punto y punto, 1px
  10. niveles = 100 #cuantas capas tendra la espiral
  11. tiempo_maximo = 10 #si no termina de dibujar en este tiempo detiene el trabajo... switch de seguridad si tienen un pc poco potente
  12. PRIMO = (255,255,255) #color si es primo
  13. NO_PRIMO = (64,64,64) #color si no es primo
  14. pantalla = {"w":niveles*2+100,"h":niveles*2+100} #tamano de la pantalla... suficiente para puntos de 1px + 100px de margen
  15.  
  16. window = pygame.display.set_mode((pantalla["w"], pantalla["h"]))
  17.  
  18.  
  19.  
  20.  
  21. def dibujar():
  22. posicion = {"x":pantalla["w"]/2, "y":pantalla["h"]/2} #cursor en centro de pantalla
  23. direccion = 1 #0 derecha, 1 arriba, 2 izquierda, 3 abajo
  24. control = 2 #variable de control
  25. cantidad = 1 #cantidad de puntos dibujados
  26. dibCir(posicion, PRIMO) #punto central... direccion va por "referencia"
  27.  
  28. inicio = time.clock() + tiempo_maximo #calcular tiempo para finalizar
  29. for i in range(2):#dibuja los primeros 2 puntos
  30. mover_dibujar(direccion, posicion, separacion, PRIMO)
  31. direccion += 1
  32. cantidad += 1
  33. puntos_totales = (niveles*2 + 1)**2 - 1 #cantidad de puntos a dibujar
  34.  
  35. detener = False
  36.  
  37. for mayor in range(niveles*2):
  38. for menor in range(2):
  39. for punto in range(control):
  40. if esPrimo(cantidad): #color a dibujar
  41. mover_dibujar(direccion, posicion, separacion, PRIMO)
  42. else:
  43. mover_dibujar(direccion, posicion, separacion)
  44.  
  45. if time.clock() > inicio: detener=True #si se pasa del tiempo
  46. if (cantidad == puntos_totales): detener=True #si se dibujaron los puntos necesarios
  47. cantidad +=1
  48. if(detener): break
  49. direccion = (direccion+1)%4 #cambia la direccion del recorrido
  50. if(detener): break
  51. control += 1
  52. if(detener): break
  53. pygame.display.flip() #dibuja la capa calculada
  54. print cantidad #imprime los puntos dibujados en la consola
  55. return 0
  56.  
  57.  
  58. def mover_dibujar(direccion, posicion, separacion, color=NO_PRIMO): #dirije el recorrido y dibuja
  59. if direccion == 0: posicion["x"] -= separacion
  60. if direccion == 1: posicion["y"] += separacion
  61. if direccion == 2: posicion["x"] += separacion
  62. if direccion == 3: posicion["y"] -= separacion
  63. dibCir(posicion, color)
  64.  
  65. def dibCir(posicion, color ,r=tamano):
  66. pygame.gfxdraw.filled_circle(window, posicion["x"],posicion["y"], r, color) #dibuja el circulo
  67. #pygame.gfxdraw.aacircle(window, posicion["x"],posicion["y"], r, color) #lo suaviza mas
  68.  
  69.  
  70. def esPrimo(n): #calcula si es primo
  71.   if n <= 3:
  72.       return n >= 2
  73.   if n % 2 == 0 or n % 3 == 0:       return False
  74.   for i in range(5, int(n ** 0.5) + 1, 6):
  75.       if n % i == 0 or n % (i + 2) == 0:
  76.           return False
  77.   return True
  78.  
  79.  
  80.  
  81. dibujar() #ejecuta todo
  82.  
  83.  
  84. #input handling (somewhat boilerplate code):
  85.  
  86. while True:  #copypaste para mentener abierta la ventana
  87.   time.sleep( 1 ) #sin esto se consume todos los recursos
  88.   for event in pygame.event.get():
  89.      if event.type == pygame.QUIT:
  90.          sys.exit(0)
  91.      #else:
  92.      #   print event
  93.  
  94.  
37  Foros Generales / Noticias / La ciudad donde está prohibido el uso de los móviles y el wi-fi en: 9 Enero 2015, 20:35 pm
A pesar de que Green Bank está a unas cuatro horas en coche desde Washington DC para hablar por teléfono allí tienes que ir hasta una cabina que hay cerca de la carretera.

La zona se denomina National Radio Quiet Zone y es en términos electromagnéticos el lugar más silencioso de la Tierra». El motivo son unas sofisticadas instalaciones de radiostelescopios.

En algunos lugares de esa zona ni tan siquiera se permite la circulación con coches de gasolina que usan bujías y que por tanto emiten radiación electromagnética. Sólo vehículos diésel.

Precisamente ese vacío electromagnético ha convertido a Green Bank un atractivo para la gente que cree sufrir hipersensibilidad electromagnética, es decir, personas que consideran que estar cerca de aparatos eléctricos les pone enfermos y les causa síntomas tales como dolores de cabeza, nauseas o picores, a pesar de que no hay pruebas médicas concluyentes al respecto.

Fuente: http://www.microsiervos.com/archivo/mundoreal/ciudad-prohibido-uso-moviles-y-wi-fi.html
38  Programación / Scripting / algortimo RSA en phyton en: 6 Enero 2015, 00:41 am
Ya que se estaba discutiendo el asunto de algoritmos asimetricos decidí esta vez hacer un codigo y epxlicarlo un poco

Para los que no sepan RSA es un algoritmo de cifrado asimetrico (el que usa http para compartir las contraseñas) el cual se basa en la creacion de 2 claves, una privada y otra publica, la llave publica cifra, la privada descifra...

esto es creado por una serie de problemas:
1. la dificultad de manejar multiples contraseñas para comunicarse con mutiples sujetos
2. la complicacion de compartir contraseñas sobre internet sin que un hombre en el medio se entere

con este metodo uno comparte su llave publica para que se comuniquen con uno

la llave publica solo cifra, para descifrar se necesita la llave privada

si quieren más detalles todo está en wikipedia

para hacer el proceso se necesitan 2 factores "p" y "q" ambos numeros primos diferentes y de una cantidad de bites similar por seguridad (actualmente se usan numeros de unas 150 cifras de largo)

de aquí sacamos 2 factores más
"n" que es la multiplicacion de "p" y "q"
"phi" que será el resultado de la multiplicacion de la funcion phi de "p" y "q", que en resumen al ser ambos primos serán (p-1) y (q-1)

de todo esto necesitamos calcular el factor "e" es un factor tal que 1 < e < phi

con "e" procedemos a calcular "d" siendo este un factor que satisfaga la ecuacion
Código:
(d*e)%phi == 1

"e" es el factor que armará la clave publica y "d" la clave privada


el cifrado se hace bajo la siguiente formula


y el descifrado con la siguiente


esto funciona porque (para quien sepa matematica)


bueno, sin dar más vueltas aquí el codigo con verificaciones

Código
  1. def bidimArray(a,b): #crear array bidimensional
  2. return [[0 for x in range(b)] for x in range(a)]
  3.  
  4. def esPrimo(n): #calcula si es primo
  5.    if n <= 3:
  6.        return n >= 2
  7.    if n % 2 == 0 or n % 3 == 0:
  8.        return False
  9.    for i in range(5, int(n ** 0.5) + 1, 6):
  10.        if n % i == 0 or n % (i + 2) == 0:
  11.            return False
  12.    return True
  13.  
  14. def nvoPrimo(n): # conseguir el n-avo primo
  15. total = 0
  16. contador = 1
  17. while total < n:
  18. contador+=1
  19. if esPrimo(contador):
  20. total+=1
  21. return contador
  22.  
  23. global_factores = [] #buffer de factores
  24.  
  25. def obtenerFactores(numero): #obtiene los factores de un numero dado
  26. for i in global_factores: #si esta en buffer los saca de ahi
  27. if i[0] == numero:
  28. return i[1]
  29. factores = []
  30. buff = 1
  31. while buff/2 < numero:
  32. buff+=1
  33. if numero % buff == 0:
  34. factores.append(buff)
  35. #print global_factores #debug
  36. global_factores.append([numero,factores]) #los mete en el buffer
  37. return factores
  38.  
  39. def esCoprimo(a,b): #son coprimos?
  40. f_a = obtenerFactores(a)
  41. f_b = obtenerFactores(b)
  42. comunes = len(frozenset(f_a).intersection(f_b)) #intercepta
  43. #print comunes #debug
  44. if comunes > 0: return False #si hay coincidencia, no son coprimos
  45. return True
  46.  
  47. def calcular_e(phi,n, inicio):
  48. buff = 0 + inicio
  49. e = 0
  50. if buff < 1: buff = 1
  51. while buff < phi:
  52. buff+=1
  53. #print "{} y {}".format(buff, n) #debug
  54. if esCoprimo(buff, n) and esCoprimo(buff, phi) :
  55. e = buff
  56. break
  57. return e
  58.  
  59.  
  60. def calcular_d(e,phi,n):
  61. d = 0
  62. buff = 0
  63. for contador in range(n):
  64. buff = (contador * e)%phi
  65. #print "({} * {})%{} -> {}".format(contador,e,phi,buff) #debug
  66. if buff == 1:
  67. d = contador
  68. break
  69. return d
  70.  
  71. def cifrado(m,e,n):
  72. return pow(m,e,n) # m^e%n
  73.  
  74. def descifrado(c,d,n):
  75. return pow(c,d,n) # c^d%n
  76.  
  77. def aplicarRSA(p,q,m):
  78. if not esPrimo(p):
  79. print "p debe ser primo"
  80. exit()
  81.  
  82. if not esPrimo(q):
  83. print "q debe ser primo"
  84. exit()
  85.  
  86.  
  87. n = p * q
  88. if m >= n:
  89. print "mensaje muy grande, p y q deben ser mayores"
  90. print "maximo mensaje permitido {}".format(n-1)
  91. exit()
  92. phi = (p-1)*(q-1)
  93. e = calcular_e(phi,n,0)
  94. d = calcular_d(e,phi,n)
  95. c = 0
  96. print "p = {} y q = {}".format(p,q)
  97. print "n = {} y phi(n) = {}".format(n,phi)
  98. print "Llave publica es ({},{})".format(e,n)
  99. print "Llave privada es ({},{})".format(d,n)
  100. c = cifrado(m,e,n)
  101. print "cifrado de {} resulta {}".format(m,c)
  102. m = descifrado(c,d,n)
  103. print "descifrado de {} resulta {}".format(c,m)
  104.  
  105. aplicarRSA(nvoPrimo(20),nvoPrimo(32),100)

explico un poco las funciones

Código
  1. bidimArray(a,b)
simplemente genera un array bidimensional de el largo indicado

Código
  1. esPrimo(n)
confirma que un numero pasado sea primo bajo un metodo rapido

Código
  1. nvoPrimo(n)
genera numeros primos, genera el primo de la n-ava posicion

Código
  1. obtenerFactores(numero)
saca los multiplos de un numero

Código
  1. esCoprimo(a,b)
confirma que los numeros sean coprimos (que no tengan factores en común)

las otras son autoexplicativas

al final
Código
  1. aplicarRSA(nvoPrimo(20),nvoPrimo(32),100)
aplica RSA con el 20-avo primo, y 32-avo primo como p y q, y el mensaje es 100... pueden colocar lo que quieran y usar primos directamente...

si... el codigo solo lo hace con calculos numericos y puede tardar algunos segundos en finalizar si los nvo primos están sobre 1000, el mensaje debe ser menor a "n"

si cualquier duda o correción pueden publicarla aquí
39  Media / Juegos y Consolas / Ester egg en un juego... a algunos se les va de las manos... en: 29 Diciembre 2014, 00:08 am
este easter egg en este juego un poco loco y complejo... pero bueh... ahi tienen

40  Programación / Scripting / Problema de Monthy Hall en: 25 Diciembre 2014, 08:35 am
Este es un famoso problema estadístico que la gente ha discutido mucho debido a lo pico lógico que parece, así que echaré mano al asunto para demostrar su punto y veracidad haciendo uso de python

El problema va así



En un programa de televisión te hacen escoger entre 3 puertas, en una hay un carro deportivo y en 2 hay cabras, escoges una puerta, el presentador abre otra puerta mostrandote una de las cabras, el te pregunta "deseas cambiar tu puerta?".... aquí viene el problema...

Mucha gente dice "nah da igual cambiar puerta, el chance en este punto es 50/50", sin embargo la estadística dice algo diferente... dice que "originalmente tenias 1/3 de probabilidad de ganar, y ahora sigues solo  con 1/3 , si cambias la puerta tienes 2/3 debido que la probabilidad de victoria colapsó en la otra puerta"...

aquí entra la lógica y dice "eso no tiene sentido... son 2 puertas así que debe ser 50/50...

Ahora quien está en lo correcto? Por su puesto que la estadística., si cambias tienes el doble de chance de ganar

Por qué? Imaginemos 3 universos donde escoges cada puerta diferente... en todos seguimos el mismo procedimiento, te muestran la cabra, decides no cambiar.... entonces en dos pierdes (los que no escogiste el carro) y uno ganas.... pero si decidimos cambiar, en dos ganas(los que no escogiste el carro) y uno pierdes...

Si schrodinger hubiera conocido esto seguro lo hubiera  escogido, en lugar de un gato hipotético... cuando la realidad colapsa, al igual que la física cuántica, quedas en uno de 3 universos probables...

Muchos aún dirán...  "si ya pasamos el hecho de la puerta abierta y nos fijamos en el ahora, sigue siendo 50/50", pero el problema es que era una ecuación donde se agregó informacion, así que el pasado es importante...

Si aun no me creen y consideran que es ilógico y sin sentido, me remito al ejemplo.... hice un programa de python que 'juega' a esto sin hacer trampa y muestra como la realidad se define más allá de lo simplemente lógico  :)

Código
  1. from random import randint #yeap vamos a generar int random
  2.  
  3. def colocarPremio():
  4.  puertas = [0,0,0] #establecemos 3 puertas
  5.  puertas[randint(0,2)] = 1 #colocamos premio en una
  6.  return puertas
  7.  
  8. def seleccionJugador():
  9.  return randint(0,2) #el jugador escoge una puerta
  10.  
  11. def mostrarPuerta(jugador, puertas):
  12.  presentador = 0 #el presentador entra y saluda a todos
  13.  for i in range(3):
  14.    if puertas[i] == 0 and not i == jugador: #el presentador escoge una puerta que no sea la del jugador y no tenga premio
  15.      presentador = i #y se queda con esa puerta
  16.      break #porque no tiene que seguir buscando
  17.  return presentador
  18.  
  19. def cambiarPuerta(presentador, jugador):
  20.  for i in range(3):
  21.    if not i == presentador and not i == jugador: #el jugador escoge la otra puerta cerrada
  22.      jugador = i #y se queda con esa
  23.      break #porque no tiene que seguir buscando
  24.  return jugador
  25.  
  26. def juego(cambiar):
  27.  puertas = colocarPremio() #ponemos las puertas y el premio
  28.  jugador = seleccionJugador() #el jugador escoge
  29.  presentador = mostrarPuerta(jugador, puertas) #el presentador muestra
  30.  if cambiar: jugador = cambiarPuerta(presentador, jugador) #debo cambiar?
  31.  return puertas[jugador] #tendra premio?
  32.  
  33.  
  34. jugadas = 100 #cuantas veces te lo tengo que repetir para convencerte?
  35. cambio = True #cambiar o no cambiar, he alli el dilema
  36.  
  37. contador = 0 #contador victorias
  38. for i in range(jugadas): contador += juego(cambio) #el momento de la verdad... juguemos
  39.  
  40. if not cambio: cambio = 'no ' #formateo cadena bonita
  41. else:  cambio = '' #y por si...
  42.  
  43. print 'en {} jugadas hubo {} victorias si el jugador {}cambiaba de puerta'.format(jugadas,contador,cambio) #resultado

Para aquellos curiosos sin python instalado, pueden ejecutar online en paginas como esta
Páginas: 1 2 3 [4] 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines