Archive

Author Archive

Un poco de programación Geek

February 9th, 2010 2 comments
Todo empezó un día que estaba menos ocupado que hoy… de la nada me clavé pensando en el juego del Gato, también llamado tres en raya o en inglés Tic Tac Toe…. y se me ocurrió hacer un programa que me diera las posibles jugadas para cualquier situación y así tal vez saber los mejores comienzos que me dieran mas posibilidades de ganar…

Hace días que quería postear algo a este blog olvidado por Dios, pero no fue hasta ayer mientras volvía a copiar a mi disco duro mi información respaldada (causa) fue cuando vi el script del gato y entonces decidí publicarlo aquí antes de que terminara oxidado dentro de un disco duro viejo…

El código del script nombrado:

#!/usr/bin/php
<?php
	mysql_connect("localhost","root","");
	mysql_select_db("tictactoe");
	set_time_limit(60000);
	// 1 - O wins
	// 2 - X wins
	// 3 - Tie
	$start = time();
	function search_winner($game) {
		$winner = array(array(1,4,7),array(2,5,8),array(3,6,9),array(1,2,3),array(4,5,6),array(7,8,9),array(1,5,9),array(3,5,7));
		foreach($winner as $comb) {
			if(strpos($game,"o".$comb[0]) !== false && strpos($game,"o".$comb[1]) !== false && strpos($game,"o".$comb[2]) !== false) { return "1"; }
			if(strpos($game,"x".$comb[0]) !== false && strpos($game,"x".$comb[1]) !== false && strpos($game,"x".$comb[2]) !== false) { return "2"; }
		}
		return false;
	}
	function play($player,$game,$free) {
		$free2 = $free;
		$num = count($free);
		if(count($free)<1) { echo "$game\n"; mysql_query("insert into gato values(NULL,'$game',3)"); }
		$winner = search_winner($game);
		if($winner) { echo "$game Winner: $winner.\n"; $num = 0; mysql_query("insert into gato values(NULL,'$game',$winner)"); }
		for($i=0;$i<$num;$i++) {
			$temp = array_pop($free2);
			$libres = array();
			foreach($free as $libre) {
				if($libre != $temp) $libres[] = $libre; 
			}
			if($player == "o") $playern = "x";
			else $playern = "o";
			play($playern,$game.$player.$temp,$libres);
		}
	}
	play("o","",array(1,2,3,4,5,6,7,8,9));
	$end = time();
	$duration = $end - $start;
	echo "\n\nTardo: $duration segundos.\n\n";
?>

El programa necesita una tabla MySQL:

CREATE TABLE IF NOT EXISTS `gato` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `game` VARCHAR(100) NOT NULL,
  `winner` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
)

Al correrlo y ver resultados, se ven interesantes puntos:

mysql> select winner,count(*) from gato group by winner;
+--------+----------+
| winner | count(*) |
+--------+----------+
|      1 |   131184 |
|      2 |    77904 |
|      3 |   127872 |
+--------+----------+
3 rows in set (0.20 sec)

Hay que denotar que en realidad los numeros deberian ser en realidad una cuarta parte de lo que son, ya que en el programa, si se toma en cuenta la posicion vertical hacia arriba, sin embargo volteando el gato serían los mismos movimientos 3 veces diferentes…

La observación obvia al ver los resultados es que el circulo O tiene gran ventaja, ya que tiene 1.68 veces de posibles victorias con respecto a la equis X debido a que la primera empieza con el primer movimiento.

Para la próxima dejemos el algoritmo que elimina las jugadas repetidas debido a la rotacion del cuadrado… y ya con eso podremos analizar mas facilmente cuales son las jugadas clave a la hora de jugar al gato…. por ahora creo que la moraleja es, escoje el circulo para tener mas posibilidades jejeej :).

Si alguien se anima a darle seguimiento comente los resultados.

Mi laptop dell M1530 se tarda 175 segundos en procesar el script, cuanto tarda la tuya? Comenta!.

Servicio de Traducción Online

January 28th, 2010 No comments
Esta vez me toca dar review a un servicio de Traducción que presume dar solución a esta necesidad de ser multilenguaje que cada vez es más común debido a la globalización obtenida fácilmente para cualquier empresa que tenga presencia en internet.
El esquema de este servicio de traducción se basa en un sistema parecido a una subasta, en el que aquel que desea o necesita traducir algo, hace su propuesta publicando el texto y la cantidad que está dispuesto a pagar por la traducción. En el sitio se registran gran cantidad de traductores de diferentes lenguajes los cuales constantemente son notificados de las propuestas.
Una vez que el primer traductor acepte la propuesta, es asignada la relación y se procede a realizar el proceso de traducción y el pago al entregar el texto ya traducido.
Como nota curiosa sobre el servicio, cuando me encontraba revisando su página, me encontré con un error en el texto de la página de inicio, supongo que una mala traducción o tal vez un typo, pero al fin y al cabo un error…

En resumen en mi opinión creo que el servicio de subastas siempre da un buen equilibrio entre un precio justo tanto para el comprador como para el vendedor, y creo que da resultados eficientes en productos asi como en servicios. Sumandole la plataforma web creo que es un servicio exitoso, y lo que si hay que hacer es establecer una marca predominante, que aunque la competencia es saludable, siempre es bueno que haya una solución fuerte y robusta por lo que recomendaría utilizar este servicio para lograr que este servicio madure.
El único pero que le pondría hasta ahora, es que se fijaran mas en el texto de su página inicial al menos.

Sitio: http://www.translia.com/es

Tags:

Recopilación de cosas para minutos muertos

October 14th, 2009 No comments
Muy buena recopilación de actividades en que puedes aprovechar minutos “muertos” y hacerlos muy vivos… hay veces cuando sientes que perdiste el tiempo, pues al menos usa ese tiempo productivamente -> http://bit.ly/ELvYs
Tags:

Cancion del Año

October 14th, 2009 No comments
Hoy me pasó @poringo este link -> http://www.getonmyhorse.com.

getonmyhorse

Me parece muy divertido, pero es muy pegajoso y me gusta la musica :D. Creo que puedo oirla cientos de veces… esas veces donde el repeat si vale la pena jejeje.

Aqui la letra:

Look at my horse,
My horse is amazing,
Give it a lick,
ooo, it tastes just like raisins,

Have a stroke of its mane,
It turns into a plane,
And then it turns back again,
When you tug on its winkie.

ooo thats dirty!!
Do you think so?
Well I better not show you where
the lemonade is made

Sweet lemonade,
Sweet lemonade,
Sweet lemonade,
Sweet lemonade.

(bopping ensues)

Get on my horse,
I’ll take you around the universe,
and all the other places too!

I think you’ll find that the universe pretty much
covers everything,

Shuttup woman! Get on my horse!

Nota: Sale un pene de caballo en la animación, asi que cuidado donde o con quien lo vean jeje. ¿qué?, ¿que muy tarde?… ups…

Tags: , ,

Nuevo Firmware para IPhone 3.1.2

October 14th, 2009 No comments
Hoy iTunes dio la opción de actualizar el firmware del IPhone a la version 3.1.2. Como sabemos, la ultima versión que aporto en si funcionalidad nueva fue la 3.0, ya que la 3.1 casi solo fue para corregir bugs (exceptuando lo de administrar las posiciones de las aplicaciones en la pantalla del IPhone)… y sigue igual ya que este nuevo firmware no añade funcionalidad nueva, y solo se concentra en corregir algunos bugs.