Archives par étiquette : Python

Installer gratuitement SubDownloader sur Windows

SubDownloader est un programme très pratique qui permet de trouver les fichiers de sous-titres qui vont avec un fichier vidéo. Le problème est que la version pour Windows est payante (il me semble à cause d’un problème de licence). Mais il n’est pas difficile de faire tourner la version libre à partir des sources.

Voici la marche à suivre pour installer gratuitement ce programme sur Windows :

  1. Télécharger et installer Python 2.6 (disponible ici).
    Les version 2.7 et 3.1 n’ont jamais marché chez moi.
  2. Télécharger et installer PyQt4 pour Windows et Python 2.6 (disponible ici).
  3. Télécharger les sources de SubDownloader 2.0.14 (disponibles ici). Et décompresser l’archive dans le dossier de votre choix (ex: C:\Program Files\subdownloader\).
  4. Créer un raccourci avec la cible suivante :
    "C:\Python26\pythonw.exe" "C:\Program Files\subdownloader\run.py"

    Démarrer dans :

    C:\Program Files\subdownloader\

    Et en plus on peut mettre l’icône qui va bien :

    C:\Program Files\subdownloader\gui\images\icon32.ico

    Et pour finir enregistrer le raccourci.

Nombres premiers

Liste des nombres premiers

Je sais pas pourquoi mais les nombres premiers m’ont toujours un peu fascinés. J’avais donc réalisé il y a un certain temps, un petit script Python qui cherche tous les nombres premiers. Ca sert à rien mais quelqu’un d’autre s’amusera peut être avec :

from math import sqrt;
def tester (aTester):
	global tab
	index = 0
	racine = sqrt( aTester )
	while tab[index] <= sqrt( aTester ):
		index += 1
		if( (aTester % tab[index]) == 0):
			return 0
	tab += [aTester]
	print aTester
	return 1
tab,mod,max = [2,3,5,7],10,1
print 2
print 3
print 5
print 7
while (mod != max):
	tester(mod + 1)
	tester(mod + 3)
	tester(mod + 7)
	tester(mod + 9)
	mod += 10

Conjecture de Goldbach

Aussi quelqu’un m’a parlé un jour de la conjecture de Goldbach. Voici ce qu’en dit l’article Wikipedia :

La conjecture de Goldbach stipule que tout nombre entier pair strictement supérieur à 2 peut être écrit comme la somme de deux nombres premiers (le même nombre premier pouvant être utilisé plusieurs fois). C’est l’un des plus vieux problèmes non résolus de la théorie des nombres et des mathématiques.

J’ai donc encore fait un script Python. Il s’arrêtera quand il ne trouvera pas de somme de deux nombre premiers pour un nombre pair.

from math import sqrt;
def MaJpremiers ():
	global tab,i;
	index,suivant = 0,tab[ len(tab) - 1 ] + 2;
	while (tab[ len(tab) - 1 ] <= i):
		while tab[index] <= sqrt( suivant ):
			index += 1;
			if( (suivant % tab[index]) == 0):
				suivant , index = suivant + 2 , 0;
		tab,suivant,index = tab + [suivant] , suivant + 2 , 0;
	return 1;
def testSomme ():
	global tab,i;
	a,b,t = 0,0,len(tab);
	for a in range(0,t):
		for b in range(t-1,a-1,-1):
			if ((tab[a]+tab[b])==i):
				print i,"=",tab[a],"+",tab[b];
				return 1;
			elif ((tab[a]+tab[b])<= max)):
	i += 2;
	MaJpremiers();

Limites

Ces scripts n’iront pas plus loin que ce que les super-calculateurs ont démontré jusque là. La simplicité du code fait que ces scripts vont être de plus en plus lent au fur et à mesure qu’ils tournent à cause des listes de premiers qui s’agrandissent. Pensez donc à faire Ctrl+C pour stopper ces scripts puisque les nombres premiers sont réputés infinis et la conjecture de Goldbach n’a toujours pas été infirmées.

Creative Commons GNU GPL

Programmes sous Creative Commons GNU GPL

Taquin

Résolveur de taquin

Je ne sais pas si quand vous vous lancez dans une énigme et que vous ne trouvez pas la solution, vous finissez par juste vouloir la réponse pour passer à autre chose. Ce fût mon cas récemment avec : l’énigme 135 du jeu Professeur Layton et l’étrange village sur Nintendo DS.

Quand je suis bloqué comme ça, j’aime pas non plus qu’on me donne la solution bêtement. Je préfère un compromis (un peu geek certe) : faire un programme qui va résoudre l’énigme à ma place.

Solution

Pour ceux qui viennent de Google et qui en ont rien à faire de mon code, la liste des étapes pour résoudre l’énigme est là :

Solution énigme 135

Pour comprendre la représentation du taquin :

Énigme 135

<->
<><>@
12^@
34v@
<><>@

Code

Pour ceux qui sont intéressés par comment j’ai fait, voici une brève explication :

  1. Il y a trois listes importantes : celle des taquins générés, celle des taquins à explorer et celle des taquin qui sont dans la position finale (juste avant la sortie).
  2. On insère la position de départ dans les listes.
  3. On explore : c’est à dire qu’on génère tous les taquins possibles à partir d’un autre.
  4. Les nouveaux taquins ne doivent pas correspondre à  un autre déjà existant. Si ce n’est pas le cas, on ajoute le nouveau à la liste des taquins trouvés et à celle à explorer.
  5. Si certains sont en position finale on les ajoute à la liste de taquins finaux.
  6. Si il y a un taquin (ou plus) dans la liste à explorer, on prend le premier et on retourne à l’étape 3.
  7. Quand il n’y a plus rien à explorer, c’est qu’on a fait le tour des possibilités de mouvements. On prend le premier des finaux et on affiches les étapes qui ont conduit à sa création.

Défauts du scripts :

  • La représentation du taquin est un tableau de caractère ce qui n’est pas très propre mais ça marche.
  • La méthode n’est pas très intelligente, c’est du brute force qui tâche mais pour une fois j’ai fait un brute en itératif et non en récursif.
  • Les solutions ne sont pas forcement les plus courtes.

Pour le dernier point, j’essairai d’y remédier si j’en ai la motivation car ça va prendre du temps (pour rien, ça on peut le dire).

Voici la source du programme, c’est du python.

enigme-135.py

Creative Commons GNU GPL

Programme sous Creative Commons GNU GPL