Hace tiempo que me surge la duda de si el sistema de puntuación actual del fútbol en el que el que si ganas recibes 3 puntos, si empatas 1 y si pierdes 0 es el más adecuado.

Hace tiempo que me surge la duda de si el sistema de puntuación actual del fútbol en el que el que si ganas recibes 3 puntos, si empatas 1 y si pierdes 0 es el más adecuado.

Para comprobar como podría afectar un cambio en el sistema de puntuación sobre una liga ya jugada me he puesto manos a la obra y he realizado una pequeña aplicación en python.

Vamos a comparar 5 sistemas de puntuación para ver cómo afectarían a la clasificación final.

Primer sistema (actual): 3 puntos al ganador, 0 puntos al perdedor, en caso de empate 1 para cada uno

Segundo sistema (nuevo): 3 puntos al ganador si gana por más de 1 gol de diferencia, 2 puntos al ganador si solo gana por 1 gol de diferencia, 0 puntos al perdedor, en caso de empate 1 para cada uno

Tercer sistema (antiguo): 2 puntos al ganador, 0 puntos al perdedor, en caso de empate 1 para cada uno

Cuarto sistema (experimental): 4 puntos al ganador si gana por más de 2 goles de diferencia, 3 puntos al ganador si gana por 2 goles de diferencia, 2 puntos al ganador si solo gana por 1 gol de diferencia, 0 puntos al perdedor, en caso de empate 1 para cada uno

Quinto sistema (revolucionario): 2 puntos al ganador, -1 punto al perdedor, en caso de empate 1 para cada uno

Para realizar la tarea, lo primero que necesitamos son los datos en algún formato procesable mediante programación. Después de buscar en internet, he dado con una web que permite la descarga de los resultados en formato json para diferentes temporadas e incluso ligas. Todos ellos respetando el mismo formato, de modo que podemos utilizar la misma aplicación para otras temporadas y ligas. Después he desarrollado la aplicación que además de presentar los resultados en pantalla, genera un fichero csv con ellos para tratar los datos de forma más cómoda.

import json
import operator
import csv

data = {}
modos = ['actual', 'nuevo', 'antiguo', 'experimental', 'revolucionario']

with open('2016_2017.json') as json_file:
    try:
        futbolBD = json.load(json_file)
        jornadas = futbolBD['rounds']
        for jornada in jornadas:
            partidos = jornada['matches']
            for partido in partidos:
                equipo1 = partido['team1']['key']
                equipo2 = partido['team2']['key']
                goles1 = partido['score1']
                goles2 = partido['score2']
                puntos1, puntos2 = 0, 0

                for modo in modos:
                    dif = goles1 - goles2
                    if modo == "actual":
                        if dif > 0:
                            puntos1 = 3
                            puntos2 = 0
                        if dif < 0:
                            puntos1 = 0
                            puntos2 = 3
                        if dif == 0:
                            puntos1 = 1
                            puntos2 = 1
                    elif modo == "nuevo":
                        if dif == 1:
                            puntos1 = 2
                            puntos2 = 0
                        if dif == -1:
                            puntos1 = 0
                            puntos2 = 2
                        if dif >= 2:
                            puntos1 = 3
                            puntos2 = 0
                        if dif <= -2:
                            puntos1 = 0
                            puntos2 = 3
                        if dif == 0:
                            puntos1 = 1
                            puntos2 = 1
                    elif modo == "antiguo":
                        if dif > 0:
                            puntos1 = 2
                            puntos2 = 0
                        if dif < 0:
                            puntos1 = 0
                            puntos2 = 2
                        if dif == 0:
                            puntos1 = 1
                            puntos2 = 1
                    elif modo == "experimental":
                        if dif == 1:
                            puntos1 = 2
                            puntos2 = 0
                        if dif == -1:
                            puntos1 = 0
                            puntos2 = 2
                        if dif == 2:
                            puntos1 = 3
                            puntos2 = 0
                        if dif == -2:
                            puntos1 = 0
                            puntos2 = 3
                        if dif > 2:
                            puntos1 = 4
                            puntos2 = 0
                        if dif < -2:
                            puntos1 = 0
                            puntos2 = 4
                        if dif == 0:
                            puntos1 = 1
                            puntos2 = 1
                    elif modo == "revolucionario":
                        if dif > 0:
                            puntos1 = 2
                            puntos2 = -1
                        if dif < 0:
                            puntos1 = -1
                            puntos2 = 2
                        if dif == 0:
                            puntos1 = 1
                            puntos2 = 1
                    else:
                        print("modo no valido")

                    existeEquipo1 = data.get(equipo1, None)
                    if existeEquipo1 is None:
                        data[equipo1] = {}

                    if modo in data[equipo1].keys():
                        anterior = data[equipo1][modo]
                        data[equipo1][modo] = anterior + puntos1
                    else:
                        data[equipo1][modo] = puntos1

                    existeEquipo2 = data.get(equipo2, None)
                    if existeEquipo2 is None:
                        data[equipo2] = {}

                    if modo in data[equipo2].keys():
                        anterior = data[equipo2][modo]
                        data[equipo2][modo] = anterior + puntos2
                    else:
                        data[equipo2][modo] = puntos2

    except ValueError:
        print("error")

# CSV FILE
csv_file = "futbol.csv"
csv_columns = ['Nombre','Puntos ACT','Puntos NUE','Puntos ANT','Puntos EXP','Puntos REV']
try:
    with open(csv_file, 'w') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
        writer.writeheader()
        for item in data.keys():
            row = {'Nombre': item, 'Puntos ACT': data[item]['actual'], 'Puntos NUE': data[item]['nuevo'],
                   'Puntos ANT': data[item]['antiguo'], 'Puntos EXP': data[item]['experimental'],
                   'Puntos REV': data[item]['revolucionario']}
            writer.writerow(row)
except IOError:
    print("I/O error")

# CLASIFICACION
dataActual, dataNuevo, dataAntiguo, dataExperimental, dataRevolucionario = {}, {}, {}, {}, {}

for item in data:
    equipo = data[item]
    dataActual[item] = equipo['actual']
    dataNuevo[item] = equipo['nuevo']
    dataAntiguo[item] = equipo['antiguo']
    dataExperimental[item] = equipo['experimental']
    dataRevolucionario[item] = equipo['revolucionario']

print("Modo ACT " + str(sorted(dataActual.items(), key=operator.itemgetter(1), reverse=True)))
print("Modo NUE " + str(sorted(dataNuevo.items(), key=operator.itemgetter(1), reverse=True)))
print("Modo ANT " + str(sorted(dataAntiguo.items(), key=operator.itemgetter(1), reverse=True)))
print("Modo EXP " + str(sorted(dataExperimental.items(), key=operator.itemgetter(1), reverse=True)))
print("Modo REV " + str(sorted(dataRevolucionario.items(), key=operator.itemgetter(1), reverse=True)))

Los resultados son curiosos, básicamente, da casi igual el sistema de puntuación utilizado, la clasificación varía muy poco, aunque evidentemente, si los equipos son conscientes del tipo de puntuación utilizado, también cambian sus estrategias para obtener el mayor número de puntos.

Solo el Barcelona estaría interesado en el sistema de puntuación "Experimental" donde se recompensa el marcar muchos goles por partido.

Hace tiempo hubo una campaña en Televisión donde nos decían que creáramos un contacto con el nombre A.A y el número de teléfono del contacto al que llamar en caso de accidente, pero ¿y si el móvil está bloqueado por aquello de la privacidad?

Otro caso es que perdamos el móvil y que alguien nos lo quiera devolver, ¿como sabrían a donde llamar para su devolución?

Aquí viene la utilidad de la pantalla de bloqueo y la información del propietario. Debemos hacer que se muestre la información del propietario en la pantalla de bloqueo, pero no con nuestro número de teléfono, sino con el número de teléfono a donde queremos que llamen en caso de que se produzca alguna de las circunstancias anteriores.

A.A. 6xxxxxxxx

Por ejemplo el teléfono de tu mujer o marido sería lo adecuado.

En un Samsung Android estos son los pasos:

Compártelo con tus amistades, les podría venir bien en un futuro.

 

Ahora ownmdm, ha pasado a ser completamente open source. Os recuerdo que está dividido en un apartado web y una App para Android y que tiene muchísimas funciones.

 

Mäs datos del proyecto en esta entrada.

 

Ahora en el dominio http://ownmdm.pacosal.com tenéis acceso a toda la información y también al código fuente.

 

Ya no hay excusa para utilizarlo en vuestros dispositivos y estar asegurados contra robos.

En otro de nuestros análisis breves, en esta ocasión le toca al nuevo Sony Smartwatch 2. El haber tenido los 2 modelos anteriores, es un gran punto de referencia para ver la evolución de Sony con los dispositivos wearables como ahora se les llama. El primer modelo era el LiveView, un primer concepto que no terminó de funcionar debido a muchas desconexiones bluetooth y a la poca compatibilidad con móviles que no fueran de Sony. El segundo modelo era el SmartWatch original con grandes mejoras sobre el anterior pero con grandes pegas a la hora de su utilización. El primer fallo de éste (al igual que el anterior) era que no se veía a la luz del Sol, de modo que tenías un reloj que no funcionaba como tal. Otro fallo grande era que no funcionaba si no estaba vinculado con un móvil, incluso para dar la hora. Uno que desquiciaba era su cargador propietario basado en una especie de pinza que funcionaba muy mal y que si viajabas sin el cable te quedabas sin reloj. La batería tampoco duraba más de 1 día. La versión 2 del Smartwatch ha solventado todos los problemas anteriores. La batería dura perfectamente 2 días. Se ve a la luz del sol gracias a su pantalla transflectiva. El cable de carga es micro-usb. Por defecto el reloj funciona solo y dispone de 3 aplicaciones adicionales que son un Timer, una Alarma por vibración y una linterna. Ahora puedes llevar este reloj en la mano y presumir de él, ya que la estética ha mejorado mucho. Estas son las características técnicas: - Bluetooth 3.0 - Pantalla transflectiva de 220 x 176 pixels - Botones atrás, home y menú - NFC para emparejarlo Está construido en aluminia y requiere Android 4.0 + Viene bien con correa de silicona o de metal, variando el precio según ella. La medida de la correa es estandar, de modo que le podéis poner la que queráis.

En otro de nuestros análisis breves, en esta ocasión le toca al nuevo Sony Smartwatch 2.

 

El haber tenido los 2 modelos anteriores, es un gran punto de referencia para ver la evolución de Sony con los dispositivos wearables como ahora se les llama.

 

LiveView

El primer modelo era el LiveView, un primer concepto que no terminó de funcionar debido a muchas desconexiones bluetooth y a la poca compatibilidad con móviles que no fueran de Sony.

 

SmartWatch

El segundo modelo era el SmartWatch original con grandes mejoras sobre el anterior pero con grandes pegas a la hora de su utilización.

El primer fallo de éste (al igual que el anterior) era que no se veía a la luz del Sol, de modo que tenías un reloj que no funcionaba como tal.

Otro fallo grande era que no funcionaba si no estaba vinculado con un móvil, incluso para dar la hora.

Uno que desquiciaba era su cargador propietario basado en una especie de pinza que funcionaba muy mal y que si viajabas sin el cable te quedabas sin reloj.

La batería tampoco duraba más de 1 día.

 

SmartWatch 2

La versión 2 del Smartwatch ha solventado todos los problemas anteriores.

La batería dura perfectamente 2 días.

Se ve a la luz del sol gracias a su pantalla transflectiva.

El cable de carga es micro-usb.

Por defecto el reloj funciona solo y dispone de 3 aplicaciones adicionales que son un Timer, una Alarma por vibración y una linterna.

 

Ahora puedes llevar este reloj en la mano y presumir de él, ya que la estética ha mejorado mucho.

 

Estas son las características técnicas:

- Bluetooth 3.0

- Pantalla transflectiva de 220 x 176 pixels

- Botones atrás, home y menú

- NFC para emparejarlo

 

Está construido en aluminio y requiere Android 4.0 +

Viene bien con correa de silicona o de metal, variando el precio según ella. La medida de la correa es estandar, de modo que le podéis poner la que queráis.

Por supuesto, lo mejor es llenarlo de Apps desde el Android Market. Esta es una imprescindible para recibir las notificaciones en tu reloj, incluyendo el contenido.

 

Precio desde 156€ en mobilefun.es.

 

Ha pasado por nuestras manos la joya de Wiko, que no es otra que su Wiko StairWay. Un teléfono con las siguientes características hardware: - Pantalla IPS de 5 pulgadas - Resolución de 1.280 x 720 - Protección de pantalla Gorilla Glass - CPU de 4 nucleos a 1,2 GHz. - 1 GB de Ram - Cámara trasera de 13 Mpx - Cámara frontal de 5 Mpx - Capacidad para manejar 2 tarjetas sim de tamaño normal - Capacidad para tarjetas de memoria micro-sd - Batería de 2000 mAh - 16 GB de almacenamiento interno - Bluetooth 4.0 Además viene con Android 4.2.1 instalado y poco personalizado. En cuanto a su uso, sufre de cierto lag en diferentes ocasiones, especialmente utilizando la cámara, que, por otra parte, dispone de buena calidad. Destacar también que tiene una gran pantalla, pero con solo 2000 mAh, va a ser duro llegar al final del día con una sola carga. Tampoco destaca especialmente por su cantidad de Ram de 1 GB cuando los más modernos móviles estan comenzando a aparecer ya con 3 GB. Por otra parte, es un móvil grande y muy completo que puede satisfacer a numerosos usuarios, especialmente por su precio desde 269€.

Ha pasado por nuestras manos la joya de Wiko, que no es otra que su Wiko StairWay. Un teléfono con las siguientes características hardware:

- Pantalla IPS de 5 pulgadas

- Resolución de 1.280 x 720

- Protección de pantalla Gorilla Glass

- CPU de 4 nucleos a 1,2 GHz.

- 1 GB de Ram

- Cámara trasera de 13 Mpx

- Cámara frontal de 5 Mpx

- Capacidad para manejar 2 tarjetas sim de tamaño normal

- Capacidad para tarjetas de memoria micro-sd

- Batería de 2000 mAh

- 16 GB de almacenamiento interno

- Bluetooth 4.0

 

Además viene con Android 4.2.1 instalado y poco personalizado.

 

En cuanto a su uso, sufre de cierto lag en diferentes ocasiones, especialmente utilizando la cámara, que, por otra parte, dispone de buena calidad.

Destacar también que tiene una gran pantalla, pero con solo 2000 mAh, va a ser duro llegar al final del día con una sola carga.

Tampoco destaca especialmente por su cantidad de Ram de 1 GB cuando los más modernos móviles estan comenzando a aparecer ya con 3 GB.

 

Por otra parte, es un móvil grande y muy completo que puede satisfacer a numerosos usuarios, especialmente por su precio desde 269€.

 

Unas fotos a continuación:

...continúa leyendo "Análisis breve Wiko StairWay"