martes, 10 de noviembre de 2015

Juego de memorizar palabras

"""Intenta manipular un archivo de datos
Creado en Python 2.7 el 13 de septiembre de 2014

Modificado el 10 de noviembre de 2015, para agregarle un promedio general
que se despliega al final.

Derivado de Diccio3.py. Se evita usar la funcion encoge y las palabras se
agregan sin espacios en blanco al final, algo que se hace al momento del
despliegue. Esto ultimo sigue dando problemas de algoritmo. Las tildes y enies
cuentan por dos caracteres, de ahi sale el mal calculo de espacios.

La idea es tener un archivo de sustantivos y otras palabras (Diccio.txt), sacarle algunas
palabras de modo aleatorio y desplegarlas.

Lo que busco es hacer un ejercicio cognitivo que despliegue listas de palabras
para que uno intente recordarlas.

Esto era parte de un software de entrenamiento cognitivo, pero lo descontinuaron.
El programa era interesante, asi que lo implemento por mi cuenta.

Es mi primer juego. Siempre quise desarrollar algo asi. Desde 1998 hasta ahora
lo unico que desarrolle fue el factorizador, que parece que sirvio para
desoxidarme. Ahora va este programita. Algo mas?
"""

from random import random
from math import trunc
from time import time
import sys

def aleatorio(archivo):
   
    tamanio=len(archivo)
   
    while True:
        temp = random()*10**len(str(tamanio))
       
        if temp<=len(archivo): break
       
    return trunc(temp)

def clear():
    sys.stdout.write('\033[2J')
    sys.stdout.write('\033[H')
    sys.stdout.flush()

def trim(palabra):
         
    contador=0
    contador2=len(palabra)-1
    vacio=True
   
    for i in range(contador2+1):
        if palabra[i] <> " ": vacio=False
   
    if vacio: return ""
   
    palab2 =""
   
    while palabra[contador]==" ":
        contador+=1
   
    while palabra[contador2]==" ": contador2-=1
       
    for i in range(contador,contador2+1):
        palab2+=palabra[i]
  
    return palab2

def encoge(archivo):
    """Elimina las palabras repetidas de la matriz
    """
   
    listita=[]
   
    for palabra in archivo:

        if palabra not in listita and trim(palabra)<> "": listita.append(palabra)
   
    return listita

def chekea(file,cuanto):
    """Para revisar si hay palabras repetidas en un arreglo o desplegarlo
    poniendo cuanto a cero.
    """
   
    file2= file
   
    for palabra in file2:
        conteo=0
       
        for palabra2 in file:
            if palabra2== palabra: conteo+=1
       
        if conteo>cuanto: print palabra

def despliega(inicio,final): #Funcion de despliegue
   
    segundos = 18
   
    for i in range(inicio,final,2):
        print lista[i]+" "*(20-len(lista[i]))+lista[i+1]
    timi = time()
   
    #respuesta=(raw_input("apriete boton"))

    while True:
        if time()-timi>=segundos:break
   
    clear()

f=open('/home/cesardiaz/proyectos/python/Diccio.txt')

#Variables section
evaluables = 30.0
temp    =0

todos     = []
lista     = []
descarte  = []
listacheck= []

cadena    = ""
line      = ""

limite    = 0

conteo    = 0
descarte  = []

cuentaf   = 0
promediof = 0

for line in f.readlines(): #Copiar el archivo a una matriz en memoria
     
    cadena=""
   
    for n in range(len(line)-1):
        cadena+=line[n]
     
    if cadena not in todos and trim(cadena)<>"": todos.append(cadena)  

f.close

while True:
    cuentaf+=1
     
    clear()
    lista     = []
    listacheck= []

  
    while True: #Generar la lista de palabras
       
        temp=aleatorio(todos)
       
        if todos[temp] not in lista:
            lista.append(todos[temp])
           
        if len(lista)==48: break

    #tamanio=len(lista)

    if random()>0.5:
        limite=15
    else:
        limite=19

    while len(listacheck)<limite: #Cargamos lista de comprobacion con datos ya desplegados
       
        temp=aleatorio(lista)
       
        if lista[temp] not in listacheck: listacheck.append(lista[temp])

    while len(listacheck)<evaluables: #Ahora se agregan otros no desplegados
       
        temp=aleatorio(todos)
            
        if todos[temp] not in lista and todos[temp] not in listacheck:
            listacheck.append(todos[temp])

    #Desplegar listas de palabras para memorizar
    despliega(0,15)
    despliega(16,31)
    despliega(32,47)

    conteo=0
    descarte = []

    while len(descarte)<evaluables:
        temp=aleatorio(listacheck)
       
        if temp not in descarte:
            descarte.append(temp)
    
            while True:
                respuesta=""
               
                respuesta=(raw_input("Estaba "+(listacheck[temp])+" en la lista?"))
           
                if respuesta in "SsnN" and respuesta<> "": break
               
                print "Vuelva a intentar"
           
            if respuesta in "Ss" and listacheck[temp] in lista: conteo+=1
           
            if respuesta in "Nn" and listacheck[temp] not in lista: conteo+=1
           
    print "***************************************************"
    print "Numero de aciertos: ",conteo
    print "Precision.........: ",str(round((conteo/evaluables*100),2))+"%"
   
    while True:
        respuesta=""
       
        respuesta=(raw_input("Otra jugada?"))
   
        if respuesta in "SsnN" and respuesta<> "": break
       
        print "Vuelva a intentar"
   
    promediof=promediof+conteo/evaluables
   
    if respuesta in "Nn":
        print "promedio general:",str(round((promediof/cuentaf*100),2))+"%"
        break
   
   
   

#"""

domingo, 4 de enero de 2015

Hintelecto

Era un perrito algo flaco, bastante pequeño. Le faltaban dientes y los que le quedaban estaban chuecos.

Cuando lo vi me hizo gracia, pero noté que la gente se hacia a un lado al pasar.

Imcluso evitaban verlo.

Había una especie de reverencia ante el animalito.

Le pregunté a una señora cuál era el misterio con el animalejo.

Respingó, arrugó la cara, hizo una seña fea y me dijo: Shh, cállese y no pregunte!

Me senté por ahí como distraído, pero buscando averiguar qué magia hacía el canejo.

El.perrito se meneaba de un lado para otro, pero no se alejaba mucho.

Gruñía. Unas veces ladraba, otras saltaba a una tarima para oletear los traseros de las doñas.

Después de un par de horas llegó un tipo algo gordo, vestido con ropa de hacer ejercicio, anillos de oro en seis dedos, dos cadenas doradas en el pescuezo, lentes oscuros y varios celulares a la cintura.

Hizo a atar el perrillo con una cadena. El animal gruñó un poco y quiso resistir.

El hombre se molestó y le dio una patada no muy fuerte.

Cayó acostado, chilló un poco y se quedó quieto.

Lo agarró del pelo con una mano y lo tiró a la paila de un carrote de esos de ocho cilindros.