mas habib

  • Home
  • About
  • Sitemap
  • Privacy Policy
  • Contact
  • Dropdown Menu ▼
    • Submenu 1
    • Submenu 2
    • Submenu 3
  • Useful Link
Home » Tanpa Label » "La Generala" en Python

"La Generala" en Python

Posted by GEDABUZ
» Wednesday, 28 December 2016

Estoy suscrito a Google Alert y me llegan las cosas de Python y hoy me puse a revisar y vi este interesante programa que le mandaron a hacer a un estudiante... consejo si usted estudia programación y tiene pereza de hacer un programa tan simple de verdad déjeme decirle que se equivoco de carrera...

Es dura la vida del programador y te tiene que gustar pasar horas intentando solucionar tus problemas de código o el de otros programadores... Si te gusta aprender e investigar y ademas intentas correr tus programas bienvenido al Club... no hay nada malo en equivocarse yo por ejemplo estudie Ing. Química y ahora soy programador, me gusta lo que hago y pagan bien :D

Manos a la obra, el enunciado dice así:

El juego "Generala" consiste en tirar cinco dados y establecer el puntaje de la jugada. De las posibles, la escalera se da cuando suceden algunas de las tres progresiones: 1-2-3-4-5, 2-3-4-5-6 y 3-4-5-6-1. Realice un programa que tire los 5 dados al azar y determine si se produjo una escalera.

Es un poco sencillo si conoces las estructuras de python, quizá se pueda hacer mejor que lo que hice pero esto lo hice en 10 minutos aproximadamente junto con el otro código :D

Primer código resolviendo la tarea :S


# -*- coding: utf-8 -*- import random ### El juego "Generala" consiste en tirar cinco dados y establecer el puntaje de la ### jugada. De las posibles, la escalera se da cuando suceden algunas de las tres progresiones: 1-2-3-4- ### 5, 2-3-4-5-6 y 3-4-5-6-1. Realice un programa que tire los 5 dados al azar y determine si se produjo ### una escalera. Iteraciones = 0 Ganaste = 0 while Ganaste != 1000: Lista_dados=[] dado_1= random.randrange(1,7) Lista_dados.append(dado_1) dado_2= random.randrange(1,7) Lista_dados.append(dado_2) dado_3= random.randrange(1,7) Lista_dados.append(dado_3) dado_4= random.randrange(1,7) Lista_dados.append(dado_4) dado_5= random.randrange(1,7) Lista_dados.append(dado_5) Lista_dados.sort() if ( Lista_dados == [1, 2, 3, 4, 5] ) or ( Lista_dados == [ 2, 3, 4, 5,6] ) or ( Lista_dados == [1, 3, 4, 5, 6] ): Iteraciones +=1 print "Ganaste en: ", Iteraciones, "Lanzadas" print Lista_dados Ganaste += 1000 else: Iteraciones +=1 print "Sigue intentando solo son: ", Iteraciones, "Lanzadas"

Prueba el código y veras la salida, explico este brevemente el otro no :S

Importamos Random para agregar azar al código :D, creamos un bucle while que se ejecutara hasta que Ganaste sea diferente  a 1 o haya 1 ganador, lanzamos los dados desde 1 a 6, recuerda que range no toma el ultimo numero, al final de los dados los sorteamos por defecto de menor a mayor, y creamos 1 if, si los dados aparecen como en alguna de las listas ganadoras, agregamos a ganaste y se rompe el bucle, ademas agregamos 1 a iteraciones y escribimos ganaste en X iteraciones e imprimimos la lista ganadora, esto se hace hasta que Ganaste sea 1 o haya 1 ganador si no se agrega 1 a iteraciones, se muestra un mensaje de consolación y se reanuda el Bucle.. fácil verdad

Ahora como soy ocioso y me gusta pensar y tratar de plasmar mis ideas en código, quería saber cual es la mas alta probabilidad de ganar es decir si lanzo los dados x veces cuantas veces ganare en X lanzadas, pero como mi pensamiento estaba algo no explicito cree una lista con las 10 iteraciones mas comunes en ganar este es el resultado:


# -*- coding: utf-8 -*- from collections import Counter, OrderedDict from prettytable import PrettyTable import random Lista_ganadas=[] iteraciones_total = 5000 for lanzada in range(1,iteraciones_total): Ganaste = 0 Iteraciones = 0 while Ganaste != 1: Lista_dados=[] dado_1= random.randrange(1,7) Lista_dados.append(dado_1) dado_2= random.randrange(1,7) Lista_dados.append(dado_2) dado_3= random.randrange(1,7) Lista_dados.append(dado_3) dado_4= random.randrange(1,7) Lista_dados.append(dado_4) dado_5= random.randrange(1,7) Lista_dados.append(dado_5) Lista_dados.sort() if ( Lista_dados == [1, 2, 3, 4, 5] ) or ( Lista_dados == [ 2, 3, 4, 5,6] ) or ( Lista_dados == [1, 3, 4, 5, 6] ): print "Ganaste en: ", lanzada, "Lanzadas" print Lista_dados Ganaste += 1 Iteraciones += 1 Lista_ganadas.append(Iteraciones) else: print "Sigue intentando solo son: ", lanzada, "Lanzadas" Iteraciones += 1 c = Counter(Lista_ganadas) mas_comunes= c.most_common()[:10] print "mas_comunes",mas_comunes primer = mas_comunes[0][1] numero_de_repeticiones = len(mas_comunes) porcentajes = [] iteracion_ganada = [] for repeticion in range(0,numero_de_repeticiones): x = mas_comunes[repeticion][1] porentaje_de_iteraciones_total = float(x * 100.0000/ iteraciones_total) porcentajes.append(porentaje_de_iteraciones_total) iteracion_win = mas_comunes[repeticion][0] iteracion_ganada.append(iteracion_win) table = PrettyTable(["iteracion_ganada", "porcentaje"]) i = 0 for repeticion in iteracion_ganada: table.add_row([iteracion_ganada[i], porcentajes[i]] ) i += 1 print table

El resultado es algo como esto :D


+------------------+-------------+ | iteracion_ganada | porcentajes | +------------------+-------------+ | 1 | 4.88 | | 2 | 4.54 | | 4 | 4.1 | | 3 | 3.98 | | 7 | 3.74 | | 5 | 3.72 | | 9 | 3.56 | | 6 | 3.26 | | 11 | 2.96 | | 10 | 2.88 | +------------------+-------------+

Dios les Bendiga y recuerden si nos gusta lo que trabajamos no podemos llamarle trabajo :D

http://ift.tt/2hvRMRT http://ift.tt/2idqsoo

ADS HERE !!!

Newer Post
Older Post
Home
Subscribe to: Post Comments (Atom)

coinmedia

ads

visitor

Copyright © mas habib. All rights reserved. Designed by CB Blogger & RT Media

↑