Christophe HENRY

Ce site ne comporte aucune information d’intérêt, sauf pour celui qui la cherche — Ĉi-retejo ne enhavas informon interesan, krom por iu kiu ĝin serĉas — This website doesn’t have any information of interest, except for who looks for it

Cryptanalyse de l'algorithme CENAv03

22/04/2012 - 3 commentaires

J'ai cassé l'algorithme CENA en m'aidant de l'implémentation de référence. Le langage de programmation utilisé est Php. le code source en licence libre GPLv3+ est téléchargeable ici.

Je me suis contenté d'attaquer assez souvent un seul caractère. La technique est donc basique ici.

Dans la suite, il ne sera jamais question d'octet, mais toujours de caractère. Et pour conserver une relative simplicité, il sera fait mention de lettres clair et de lettres chiffrées. On ne considère que les lettres de l'alphabet. L'implémentation n'utilise jamais de dispositif aléatoire, mais simplement pseudo-aléatoire, mais cela n'a pas de conséquence pour la suite.

Descriptif de l'algorithme de chiffrement

descriptif
Chaque caractère est chiffré isolément en fonction d'une clé. La variante de chiffrement de chaque caractère est entièrement déterminé par sa position dans le clair. Chaque caractère clair aboutit à 17 caractères (de '0' à '9') chiffrés. Voici la succession de traitement que subit une lettre :

Vigenère fixé


Le caractère subit d'abord l'algorithme de Vigenère utilisant une clé fixée une fois pour toute. Le caractère de rang 0 (première position) n'est pas modifié, le deuxième est décalé de 1, le troisième de deux, etc.

Expansion


À chaque caractère, on associe un nombre de 6 chiffres pris dans un intervalle déterminé dans la clé. Tous les nombres de l'intervalle ramènent au même clair. Par exemple, A est transformé en un nombre entre 305126 et 308475. L'intervalle est fonction de la clé, et reste fixe pendant le chiffrement.
Le chiffré est passé de 1 caractères à 6 caractères.

Brouillage


Les 6 chiffres précédents sont mélangés dans 11 chiffres aléatoires. L'implémentation utilise une phase ajoutant 10 chiffres et une phase ajoutant 1 chiffre. Cela donne l'illusion que ça ajoute de la complexité parce que la clé est plus difficile à générer et à utiliser, mais en fait c'est tout à fait inutile. Le chiffré est passé maintenant de 6 caractères à 17 caractères.

Analyse de l'algorithme

énigma
Il est a clé de taille fixe, déterminer la longueur de la clé est donc utile. En fait, il suffirait de tester les longueurs de clé de 32 à 64 caractères, ce qui donne 33 possibilités. En fait, on peut faire plus simple !

L'algorithme chiffre caractère par caractère, on peut donc ne se focaliser que sur le premier caractère. Cette approche permet de s'affranchir du Vigenère fixé, car le Vigenère au rang zéro (première position) retourne exactement le caractère en entrée. Donc le Vigenère peut être ignoré.

L'expansion est le point faible de l'algorithme. Par construction, pour une position donnée (mais nous restons toujours au premier caractère) l'ensemble des valeurs attribuables à un caractère commence toujours par les mêmes deux premiers chiffres, le troisième variant assez peu. En reprenant l'exemple de la lettre 'A', les nombres qui lui sont associés vont de 305126 à 308475. Les trois premiers chiffres sont donc 305, 306, 307 et 308.

Le brouillage ajoute 7 chiffres aléatoires. C'est la partie la plus utile de l'algorithme et noye l'information dans un brouillard aléatoire.

Cryptanalyse

descriptif

Sans connaître l'algorithme, on analyse les rapports clairs/chiffrés. On constate que la taille des chiffrés est toujours égale à 17 fois celle du clair. En ne chiffrant qu'un seul caractère de façon répétitive, on s'aperçoit vite que 2 des dix-sept caractères ne varient pas, certains variant un peu plus et d'autres sont quasiment aléatoires. En chiffrant deux caractères identiques, on s'aperçoit que les chiffres non-aléatoires restent les mêmes mais que leur position à changé. À cette étape, on sait déjà que (à une clé donnée) la substitution ne dépend que du caractère et que la transposition ne dépend que de la position du caractère. La cryptanalyse ici consiste à retrouver une clé en soumettant à volonté des clairs. En fait, la vraie clé n'est retrouvée mais seulement une clé inverse. En poussant plus loin l'analyse, il serait possible de créer une clé et de chiffrer des messages.

Rangs utiles


Première étape, on détermine les rangs utiles. À une position donnée correspond une répartition donnée des caractères expansés. Par exemple, les rangs 11, 16 et 1 portent de l'information pour le première caractère chiffré. Les rangs 7, 1 et 13 correspondent au deuxième caractère chiffré. Je demande de très nombreuses fois le chiffrement de certains caractères, un à la fois. Cela fournit le spectre associé à la position : pour chaque rang (de 0 à 16) on détermine la probabilité d'occurrence des chiffres. Dans la pratique, on ne conserve que les 3 meilleurs rangs. Dans un caractère chiffré, on est donc capable de connaître les bons caractères parmis les 17.

Dictionnaire


Deuxième étape, on demande un grand nombre de fois le chiffrement de tous les caractères, toujours un à la fois. Les 17 chiffres sont filtrés grâce aux rangs utiles collectés à la première étape, dans la pratique, 3. Grâce au grand nombre d'essais, j'en arrive à déterminer toutes les combinaisons possibles de 3 chiffres. Concrètement, cela revient à déterminer les trois premiers chiffres correspondant à chaque lettre. Par exemple l'expansion de la lettre 'A' est l'ensemble des nombres entre 305126 et 308475 inclus. Le "3" et le "0" apparaissent toujours à la même position dans les chiffrés tandis qu'une position ne contient que "5,"6","7" ou "8". Ce faisant, on récolte pour chaque lettre en clair ces trois nombres caractérisant son expansion. En fait, il existe des cas où il y a ambiguïté. Ces cas ouvrent la voie à l'analyse fréquentielle pour les éliminer, mais qui ne sera pas traitée ici.

Clé inverse


Troisième étape, calcul de la clé inverse. Elle porte toujours sur un seul et premier caractère, ce qui élimine le vigenère du début. En combinant les deux étapes précédentes, on détermine quels 3 chiffres on doit lire parmi les 17 et quelle est la (parfois les) lettre en clair liée à ces 3 chiffres.

Le déchiffrement au moyen de la clé inverse se déroule comme suit :
  • On ne conserve que les trois chiffres utiles.
  • On regarde à quel caractère correspond ces trois chiffres utiles.

Comment améliorer la cryptanalyse ?


Elle ne porte que sur un caractère, ce qui oblige à faire des milliers de requêtes de chiffrement de un caractère. On peut chiffrer un seul gros fichier contenant toutes les lettres par paquets de quelques milliers. Le débrouillage est réalisé en testant les 33 hypothèses de longueur de la clé. Avec la bonne longueur du clé, la prééminence des 3 chiffres apparaît.

L'analyse fréquentielle peut, sous réserve d'avoir un clair et un chiffré de longueur suffisante, lever les dernières ambiguïtés et permettre de reconstituer la clé d'origine.

Et la longueur de la clé ?


La phase de cryptanalyse n'a pas vraiment besoin de la longueur de la clé. En fait, il faut la déterminer seulement s'il faudra déchiffrer des messages de longueur supérieure et pour généraliser le déchiffrement. La longueur de la clé est tout de même calculée pendant la cryptanalyse. Pendant le débrouillage, on reboucle sur la clé lorsqu'on retrouve les mêmes positions caractéristiques.

Comment améliorer l'algorithme ?

descriptif
Injection de l'intru : la phase d'injection de l'intru est inutile car elle est équivalente à rajouter un caractère de brouillage. À supprimer.

Brouillage : le brouillage lui-même peut être contourné par une analyse fréquentielle. En effet, le brouillage est aléatoire, contrairement aux informations entrées en clair.

Expansion : elle a grandement permis de casser l'algorithme. En fait, on peut l'améliorer comme suit. L'algorithme partitionne un intervalle de nombres en associant à chaque intervalle une lettre. Par exemple, si on sait que 305126 et 308475 désigne la lettre 'A', alors on sait que tous les nombres entre les deux désignent aussi 'A'.
Pour faire mieux, on pourrait associer à chaque nombre de l'intervalle une lettre de sorte à ce que chaque lettre soit associée à la même quantité de nombre, mais qu'il n'est pas possible de prévoir à quelle lettre est associée un nombre. Par contre, il faudra utiliser une clé de 899999 caractères pour l'expansion... Cela éviterait de pouvoir extraire les 3 chiffres caractéristiques d'une lettre.

Comment faire mieux que l'algorithme ?


Utiliser un vigenère a clé fixée n'est d'aucune utilité et n'a pas freiné la cryptanalyse, autant l'abandonner. Le brouillage ralentit la cryptanalyse, mais n'est pas efficace, donc autant l'abandonner aussi. L'expansion est une fausse bonne idée, et il serait plus efficace de faire un simple vigenère. Par exemple, on pourrait générer une clé infinie au moyen d'un tirage aléatoire provenant d'une suite déterminée par la clé. Par exemple, fixer le sel de la clé (srand() en Php) permet de faire autant de tirages pseudo-aléatoires que voulu... Évidemment, mais si c'est plus efficace, cela reste faible.

En gros, il serait plus efficace de faire du Vigenère au moyen d'une clé pseudo-aléatoire. Mais même comme ça, ce n'est pas gagné contre les techniques d'aujourd'hui.

Merci à Dimitri MESTDAGH, le développeur de l'implémentation de référence et à Philippe LHEUREUX, le concepteur de l'algorithme.

Références



Le code source est disponible ici.

Tags de l'article :

Plena Ilustrita Vortaro de Esperanto, serĉilo

10/04/2012 - Commentaires fermés

Jen teksto de la retejo:

la reta versio de unu el la plej famaj E-verkoj de lastaj jardekoj "Plena Ilustrita Vortaro de Esperanto" (PIV). Jam multajn jarojn PIV estas la plej ampleksa difin-vortaro en Esperanto, kiu unuan fojon aperis en la jaro 1970. Al la enhavo de la vortaro kontribuis multaj personoj. La liston de tiuj personoj vi povas trovi ĉe tiu ĉi paĝo.
Ekde aprilo 2012 PIV estas uzebla ankaŭ en la reto.

http://vortaro.net/

Pro faciligi la serĉadon, mi faris serĉilon por Firefox, vortaro.net.xml

Tags de l'article :

Scolnet: éducation à la délation nationale

18/03/2012 - Commentaires fermés

Faits

Chaque site web possède son modèle économique, qui se résume à combien je gagne d'argent par rapport à ce que je dépense pour le site. Par exemple, mon site est 100% déficitaire sur ce point. Mais il me sert à publier des articles et partager des fichiers, un service que je paye. Scolnet ne renseigne pas sur son modèle économique, mais insiste sur la gratuité. Gratuit, mais pas sans contrepartie. Facebook à ses débuts était similaire, avant de vendre la vie privée de ses "clients". Lorsque vous ne payez pas pour un service, c'est que vous n'êtes pas le client, mais le produit.

Les espace numériques sont cloisonnées école par école. Elles sont toutes connues du site, qui les propose à la création d'un espace. Le chef d'établissement doit se déclarer comme tel. Ensuite suivent les enseignants, les parents d'élèves, les parents, les élèves. Toute la hiérarchie est connue de Scolnet. Les messages échangés entre chacun compléteront les renseignements offerts au site. Scolnet exige que chacun contribue sous son prénom et nom, chacun validera donc implicitement l'identité des autres.

Avis

Ce site veut suivre le même chemin que Facebook, mais en forçant une clientèle captive piégée, involontairement ou non, par les chefs d'établissement. De proche en proche, chacun dénoncera ses voisins (identités, relations, enfants, etc.) jusqu'à ce que le site

Si vous l'utilisez de votre propre chef, vos échanges contribueront à dénoncer indirectement ceux qui ne souhaitent pas y figurer. Des informations concernant les objecteurs (et leurs familles) pourront être déduites de vos échanges. Facebook en est déjà à ce stade.
Lisez toutes les informations concernant Facebook et la vie privée : elles sont ou seront valables pour Scolnet.

Voici l'avis rendu par la circonscription de La Flèche :
Votre école a peut-être reçu un courriel publicitaire sur l'ouverture du site scolnet, premier réseau social scolaire qui permet à l'équipe enseignante de communiquer et de partager du contenu numérique avec parents et élèves....
Le caractère publicitaire de ce produit, n'a fait l'objet d'aucune validation académique.
Il est précisé, de plus, qu'en l'absence de garantie sur la destination et les conditions d'hébergement des données, pour certaines sensibles, qui y seront traitées, l'utilisation d'un tel produit est fortement déconseillée.

Technique

En France

Le nom de domaine scolnet.fr ainsi que le serveur sont tous les deux hébergés en France, à Roubaix. L'hébergeur est OVH, un hébergeur grand public français.

Une recherche whois indique que le domaine est géré par OVH, un grand hébergeur français. L'hébergement est un Kimsufi (www.kimsufi.com). Une requête sur le nom de domaine scolnet.fr (centralops.net/co/NsLookup.aspx) indique que l'hébergement est aussi assuré par OVH. L'adresse IP est 87.98.156.150. Une requête inverse sur l'adresse IP du serveur confirme que l'hébergement est chez OVH. Un traceroute, vers le domaine, confirme OVH comme hébergeur. La connexion réseau reste en France.

Google & Facebook

Le site partage ses statistiques de fréquentation avec Google. Il est également connecté au réseau social Facebook en ce qui concerne la gestion des comptes utilisateurs.

Les pages comportent le traceur de Google. Le site permet de se connecter avec Facebook mais aucune interaction avec Facebook ne se trouve côté client. L'intégration est faite côté serveur, silencieusement.

Identité réelle

Dans son règlement, le site exige de ses utilisateurs (n'importe qui peut s'inscrire) qu'il fournisse ses vrais noms et prénoms.

Il faut :
  • donner sa vraie identité,
  • il faut envoyer un courriel pour supprimer un compte,
  • accepter la modification du règlement à tout moment, sans avertissement.

Par contre, les directeurs d'écoles sont des utilisateurs particuliers puisque le site a recensé les écoles de France et qu'il faut s'affilier à une école. Le site fait la différence entre chef d'établissement, enseignant, parent d'élève, parent, élève.

Sans contrôle

Le site se présente comme indépendant. Scolnet.fr est un site indépendant créé en 2011, peut-on lire dans la page À propos.

Donc sans liaison ni contrôle par le Ministère de l'Éducation Nationale.

Règlement précaire

Le réseau social Scolnet se réserve le droit de changer à tout moment, sans préavis, les conditions d'utilisation. Il faut envoyer un courriel pour supprimer un compte. La suppression des données n'est pas immédiate. Le site affirme être déclaré à la CNIL, mais ne délivre pas de numéro d'agrément. Il se réservent le droit de diffuser des données agrégées. Aucune possibilité d'exporter ses données.

Confidentialité :
  • pas de numéro de déclaration à la CNIL
  • ils diffusent des données agrégées (pour de la pub ciblée ?)
  • pas de précision sur la propriété des données postées

Aucune précision n'est apportée sur la propriété des données...

Piège du stockage

Le site n'offre que 50Mo de stockage, probablement un piège pour proposer ensuite des forfaits payants.

Il est classique de fournir un service qui semble convenable au début, et gratuitement, pour imposer ensuite ses conditions à qui se rendrait compte qu'au début ce n'était pas assez. On peut imaginer que ce serait assez dramatique pour une école et tous ceux qui gravitent autour.

Pas de HTTPS

Les pages utilisent HTTP et pas HTTPS et la confidentialité qu'il apporte.

Les identifiants et mots de passe circulent en clair entre le navigateur et le site web.

En résumé...

Scolnet est un réseau social avec les mêmes motivations que Facebook. Il ne dispose d'aucun financement (par ses utilisateurs) pour ses activités, il va donc vivre de la publicité et de vos données personnelles. Par ailleurs, mais je ne suis pas juriste, si l'éducation nationale pourrait être poursuivie au civil si l'un de ses agents entrait dans la délation, les directeurs d'établissement seraient personnellement et pénalement responsables puisque ce réseau social repose sur leur participation active.

Tags de l'article :

Permutation sans variable intermédiaire

09/10/2011 - Commentaires fermés

Dans de nombreux environnements, on ne dispose pas toujours de variables intermédiaires. Il est donc nécessaire de recourir à des subterfuges.

Avec une variable intermédiaire

Soient deux variables a et b qu'il faut permuter. L'opération est classique si on dispose d'une variable intermédiaire X :

X = a
a = b
b = X

En déroulant l'exécution à la main, cela donne :

actionabX
initialisation47
X = a474
a = b774
b = X744

Ce qui requiert 3 étapes.

Sans variable intermédiaire

Il y a un problème avec

a = b
b = a

qui ne marche pas car la valeur de b est simplement copiée dans a.
Alors, peut faire ceci :

a = a + b
b = a - b
a = a - b

Ça marche, mais il y a deux formules différentes : a + b et a - b.
On peut faire plus simple :

a = - a - b
b = - a - b
a = - a - b

Ce qui donne l'exécution suivante :

actionab
initialisation47
a = - a - b-117
a = - a - b-114
a = - a - b74

Il y a le même nombre d'opérations que précédemment, mais l'action est identique pour tous.

Généralisation

Aux entiers

La permutation circulaire se généralise avec un nombre arbitraire de variables. Soit x1, x2, ..., xn les variables sur lesquelles on veut effectuer une permutation circulaire. Pour mettre la valeur de x1 and x2, x2 dans x3, ..., xn dans x1, on applique l'algorithme suivant :

Pour i de 1 à n Faire: xi = - ∑(Xj | j de 1 à n)
x1 = - ∑(Xj;j;1;n)

L'algorithme exploite le fait que le calcul se répète à l'identique pour tous.

Aux booléens

Le symbole ⊻ (XOR) a la même principe que le ∑ car l'opérateur ⊻ possède les propriétés d'associativité et de commutativité.

Pour i de 1 à n Faire: xi = ⊻(Xj | j de 1 à n)
x1 = - ⊻(Xj;j;1;n)

Le fait qu'en informatique les booléens sont utilisés pour stocker les données permet de généraliser la permutation à n'importe quel type de données.

Tags de l'article :

Primes, 26 letters inequality

08/10/2011 - Commentaires fermés

This inequality with 26 letters generates all the primes! But there's a trap. First, not all n-uples of the 26 variables return a prime. Second, there's no way to guess what subset of variable values returns primes.

(k + 2)*(1 − (w*z + h + j − q)^2 − ((g*k + 2*g + k + 1)*(h + j) + h − z)^2 − (16*(k + 1)^3*(k + 2)*(n + 1)^2 + 1 − f^2)^2 − (2*n + p + q + z − e)^2 − (e^3*(e + 2)*(a + 1)^2 + 1 − o^2)^2 − ((a^2 − 1)*y^2 + 1 − x^2)^2 − (16*r^2*y^4*(a^2 − 1) + 1 − u^2)^2 − (n + l + v − y)^2 − ((a^2 − 1)*l^2 + 1 − m^2)^2 − (a*i + k + 1 − l − i)^2 − (((a + u^2*(u^2 − a))^2 − 1)*(n + 4*d*y)^2 + 1 − (x + c*u)^2)^2 − (p + l*(a − n − 1) + b*(2*a*n + 2*a − n^2 − 2*n − 2) − m)^2 − (q + y*(a − p − 1) + s*(2*a*p + 2*a − p^2 − 2*p − 2) − x)^2 − (z + p*l(a − p) + t(2*a*p − p^2 − 1) − p*m)^2) > 0

Indeed, k + 2 is prime if and only if this equation has a solution in the natural numbers (cf Wikipedia). Yes, it's a detail, but all the variables must be natural numbers ;-)

The question is: did anyone tried to develop this expression?

Yes, using giac :

expand((k + 2)*(1 − (w*z + h + j − q)^2 − ((g*k + 2*g + k + 1)*(h + j) + h − z)^2 − (16*(k + 1)^3*(k + 2)*(n + 1)^2 + 1 − f^2)^2 − (2*n + p + q + z − e)^2 − (e^3*(e + 2)*(a + 1)^2 + 1 − o^2)^2 − ((a^2 − 1)*y^2 + 1 − x^2)^2 − (16*r^2*y^4*(a^2 − 1) + 1 − u^2)^2 − (n + l + v − y)^2 − ((a^2 − 1)*l^2 + 1 − m^2)^2 − (a*i + k + 1 − l − i)^2 − (((a + u^2*(u^2 − a))^2 − 1)*(n + 4*d*y)^2 + 1 − (x + c*u)^2)^2 − (p + l*(a − n − 1) + b*(2*a*n + 2*a − n^2 − 2*n − 2) − m)^2 − (q + y*(a − p − 1) + s*(2*a*p + 2*a − p^2 − 2*p − 2) − x)^2 − (z + p*l(a − p) + t(2*a*p − p^2 − 1) − p*m)^2))

32*c*d*k*n*u*x*y*(-2*u^2)^2+16*c^2*d*k*n*u^2*y*(-2*u^2)^2+64*c*d^2*k*u*x*y^2*(-2
*u^2)^2+64*c*d*n*u*x*y*(-2*u^2)^2+32*c*d*k*n*u^9*x*y-128*c*d*k*n*u^7*x*y+128*c*d
*k*n*u^5*x*y-256*c*d*k*n*u^3*x*y+96*c*d*k*n*u*x*y-512*d^3*k*n*u^8*y^3*(-2*u^2)^2
+2048*d^3*k*n*u^6*y^3*(-2*u^2)^2-2048*d^3*k*n*u^4*y^3*(-2*u^2)^2+4096*d^3*k*n*u^
2*y^3*(-2*u^2)^2-192*d^2*k*n^2*u^8*y^2*(-2*u^2)^2+768*d^2*k*n^2*u^6*y^2*(-2*u^2)
^2-768*d^2*k*n^2*u^4*y^2*(-2*u^2)^2+1536*d^2*k*n^2*u^2*y^2*(-2*u^2)^2+32*c^2*d^2
*k*u^2*y^2*(-2*u^2)^2+32*c^2*d*n*u^2*y*(-2*u^2)^2+16*c^2*d*k*n*u^10*y-64*c^2*d*k
*n*u^8*y+64*c^2*d*k*n*u^6*y-128*c^2*d*k*n*u^4*y+48*c^2*d*k*n*u^2*y-32*d*k*n^3*u^
8*y*(-2*u^2)^2+128*d*k*n^3*u^6*y*(-2*u^2)^2-128*d*k*n^3*u^4*y*(-2*u^2)^2+256*d*k
*n^3*u^2*y*(-2*u^2)^2+16*d*k*n*x^2*y*(-2*u^2)^2+16*d*k*n*u^8*x^2*y-64*d*k*n*u^6*
x^2*y+64*d*k*n*u^4*x^2*y-128*d*k*n*u^2*x^2*y+128*c*d^2*u*x*y^2*(-2*u^2)^2+64*c*d
^2*k*u^9*x*y^2-256*c*d^2*k*u^7*x*y^2+256*c*d^2*k*u^5*x*y^2-512*c*d^2*k*u^3*x*y^2
+192*c*d^2*k*u*x*y^2+4*c*k*n^2*u*x*(-2*u^2)^2+64*c*d*n*u^9*x*y-256*c*d*n*u^7*x*y
+256*c*d*n*u^5*x*y-512*c*d*n*u^3*x*y+192*c*d*n*u*x*y-512*d^4*k*u^8*y^4*(-2*u^2)^
2+2048*d^4*k*u^6*y^4*(-2*u^2)^2-2048*d^4*k*u^4*y^4*(-2*u^2)^2+4096*d^4*k*u^2*y^4
*(-2*u^2)^2-1024*d^3*n*u^8*y^3*(-2*u^2)^2+4096*d^3*n*u^6*y^3*(-2*u^2)^2-4096*d^3
*n*u^4*y^3*(-2*u^2)^2+8192*d^3*n*u^2*y^3*(-2*u^2)^2-256*d^3*k*n*y^3*(-2*u^2)^4-
1536*d^3*k*n*y^3*(-2*u^2)^2-256*d^3*k*n*u^16*y^3+2048*d^3*k*n*u^14*y^3-6144*d^3*
k*n*u^12*y^3+12288*d^3*k*n*u^10*y^3-22016*d^3*k*n*u^8*y^3+22528*d^3*k*n*u^6*y^3-
22528*d^3*k*n*u^4*y^3+12288*d^3*k*n*u^2*y^3-384*d^2*n^2*u^8*y^2*(-2*u^2)^2+1536*
d^2*n^2*u^6*y^2*(-2*u^2)^2-1536*d^2*n^2*u^4*y^2*(-2*u^2)^2+3072*d^2*n^2*u^2*y^2*
(-2*u^2)^2+32*d^2*k*x^2*y^2*(-2*u^2)^2+32*d^2*k*u^8*x^2*y^2-128*d^2*k*u^6*x^2*y^
2+128*d^2*k*u^4*x^2*y^2-256*d^2*k*u^2*x^2*y^2-96*d^2*k*n^2*y^2*(-2*u^2)^4-576*d^
2*k*n^2*y^2*(-2*u^2)^2-96*d^2*k*n^2*u^16*y^2+768*d^2*k*n^2*u^14*y^2-1280*d^2*k*n
^2*u^12*y^2+4608*d^2*k*n^2*u^10*y^2-8256*d^2*k*n^2*u^8*y^2+8448*d^2*k*n^2*u^6*y^
2-4352*d^2*k*n^2*u^4*y^2+4608*d^2*k*n^2*u^2*y^2+64*c^2*d^2*u^2*y^2*(-2*u^2)^2+32
*c^2*d^2*k*u^10*y^2-128*c^2*d^2*k*u^8*y^2+128*c^2*d^2*k*u^6*y^2-256*c^2*d^2*k*u^
4*y^2+96*c^2*d^2*k*u^2*y^2+2*c^2*k*n^2*u^2*(-2*u^2)^2+32*c^2*d*n*u^10*y-128*c^2*
d*n*u^8*y+128*c^2*d*n*u^6*y-256*c^2*d*n*u^4*y+96*c^2*d*n*u^2*y-64*d*n^3*u^8*y*(-
2*u^2)^2+256*d*n^3*u^6*y*(-2*u^2)^2-256*d*n^3*u^4*y*(-2*u^2)^2+512*d*n^3*u^2*y*(
-2*u^2)^2+32*d*n*x^2*y*(-2*u^2)^2+32*d*n*u^8*x^2*y-128*d*n*u^6*x^2*y+128*d*n*u^4
*x^2*y-256*d*n*u^2*x^2*y-16*d*k*n^3*u^16*y+128*d*k*n^3*u^14*y-384*d*k*n^3*u^12*y
+768*d*k*n^3*u^10*y-1376*d*k*n^3*u^8*y+1408*d*k*n^3*u^6*y-1408*d*k*n^3*u^4*y+768
*d*k*n^3*u^2*y-16*d*k*n^3*y*(-2*u^2)^4-96*d*k*n^3*y*(-2*u^2)^2+48*d*k*n*x^2*y-16
*d*k*n*u^8*y+64*d*k*n*u^6*y-64*d*k*n*u^4*y+128*d*k*n*u^2*y-16*d*k*n*y*(-2*u^2)^2
+8*c*n^2*u*x*(-2*u^2)^2+128*c*d^2*u^9*x*y^2-512*c*d^2*u^7*x*y^2+512*c*d^2*u^5*x*
y^2-1024*c*d^2*u^3*x*y^2+384*c*d^2*u*x*y^2+4*c*k*n^2*u^9*x-16*c*k*n^2*u^7*x+16*c
*k*n^2*u^5*x-32*c*k*n^2*u^3*x+12*c*k*n^2*u*x-2*g^2*h*j*k^3-12*g^2*h*j*k^2-24*g^2
*h*j*k-1024*d^4*u^8*y^4*(-2*u^2)^2+4096*d^4*u^6*y^4*(-2*u^2)^2-4096*d^4*u^4*y^4*
(-2*u^2)^2+8192*d^4*u^2*y^4*(-2*u^2)^2-256*d^4*k*y^4*(-2*u^2)^4-1536*d^4*k*y^4*(
-2*u^2)^2-256*d^4*k*u^16*y^4+2048*d^4*k*u^14*y^4-2048*d^4*k*u^12*y^4+12288*d^4*k
*u^10*y^4-22016*d^4*k*u^8*y^4+22528*d^4*k*u^6*y^4-6144*d^4*k*u^4*y^4+12288*d^4*k
*u^2*y^4-512*d^3*n*y^3*(-2*u^2)^4-3072*d^3*n*y^3*(-2*u^2)^2-512*d^3*n*u^16*y^3+
4096*d^3*n*u^14*y^3-12288*d^3*n*u^12*y^3+24576*d^3*n*u^10*y^3-44032*d^3*n*u^8*y^
3+45056*d^3*n*u^6*y^3-45056*d^3*n*u^4*y^3+24576*d^3*n*u^2*y^3-2304*d^3*k*n*y^3+
64*d^2*x^2*y^2*(-2*u^2)^2+64*d^2*u^8*x^2*y^2-256*d^2*u^6*x^2*y^2+256*d^2*u^4*x^2
*y^2-512*d^2*u^2*x^2*y^2-192*d^2*n^2*y^2*(-2*u^2)^4-1152*d^2*n^2*y^2*(-2*u^2)^2-
192*d^2*n^2*u^16*y^2+1536*d^2*n^2*u^14*y^2-2560*d^2*n^2*u^12*y^2+9216*d^2*n^2*u^
10*y^2-16512*d^2*n^2*u^8*y^2+16896*d^2*n^2*u^6*y^2-8704*d^2*n^2*u^4*y^2+9216*d^2
*n^2*u^2*y^2-32*d^2*k*y^2*(-2*u^2)^2+96*d^2*k*x^2*y^2-32*d^2*k*u^8*y^2+128*d^2*k
*u^6*y^2-128*d^2*k*u^4*y^2+256*d^2*k*u^2*y^2-864*d^2*k*n^2*y^2-4*c^3*k*u^3*x+4*c
^2*n^2*u^2*(-2*u^2)^2+64*c^2*d^2*u^10*y^2-256*c^2*d^2*u^8*y^2+256*c^2*d^2*u^6*y^
2-512*c^2*d^2*u^4*y^2+192*c^2*d^2*u^2*y^2-2*c^2*k*u^2*x^2+2*c^2*k*n^2*u^10-8*c^2
*k*n^2*u^8+8*c^2*k*n^2*u^6-16*c^2*k*n^2*u^4+6*c^2*k*n^2*u^2+96*k*r^2*u^2*y^4-2*k
*p^3*s*y+6*k*p^2*s*y-2*k*p^2*s*x+2*k*p^2*q*s+18*k*o^2*exp(1)*exp(3)-2*k*n^4*u^8*
(-2*u^2)^2+8*k*n^4*u^6*(-2*u^2)^2-8*k*n^4*u^4*(-2*u^2)^2+16*k*n^4*u^2*(-2*u^2)^2
+2*k*n^2*x^2*(-2*u^2)^2+2*k*n^2*u^8*x^2-8*k*n^2*u^6*x^2+8*k*n^2*u^4*x^2-16*k*n^2
*u^2*x^2+2*k*q*w*z-2*k*p*l(-p+2)*t(-p^2+4*p-1)-2*k*p*z*l(-p+2)-2*k*p*x*y+4*k*p*s
*x+2*k*p*q*y-4*k*p*q*s+2*k*m*p^2*l(-p+2)+2*k*m*p*t(-p^2+4*p-1)+2*k*m*p*z+2*k*l*n
*p-2*k*l*m*n-2*j*k*w*z-2*h*k*w*z+2*g*j*k^2*z+8*g*j*k*z+2*g*h*k^2*z+8*g*h*k*z-4*g
*h*j*k^3-22*g*h*j*k^2-40*g*h*j*k-32*d*n^3*u^16*y+256*d*n^3*u^14*y-768*d*n^3*u^12
*y+1536*d*n^3*u^10*y-2752*d*n^3*u^8*y+2816*d*n^3*u^6*y-2816*d*n^3*u^4*y+1536*d*n
^3*u^2*y-32*d*n^3*y*(-2*u^2)^4-192*d*n^3*y*(-2*u^2)^2+96*d*n*x^2*y-32*d*n*u^8*y+
128*d*n*u^6*y-128*d*n*u^4*y+256*d*n*u^2*y-32*d*n*y*(-2*u^2)^2-144*d*k*n^3*y-48*d
*k*n*y+8*c*n^2*u^9*x-32*c*n^2*u^7*x+32*c*n^2*u^5*x-64*c*n^2*u^3*x+24*c*n^2*u*x-4
*c*k*u*x^3+4*c*k*u*x+2*b*k*n^2*p-4*b*k*n*p-2*b*k*m*n^2+4*b*k*m*n-2*b*k*l*n^3+6*b
*k*l*n^2-(-c^2)^2*k*u^4+192*r^2*u^2*y^4-4*p^3*s*y+12*p^2*s*y-4*p^2*s*x+4*p^2*q*s
+36*o^2*exp(1)*exp(3)-4*n^4*u^8*(-2*u^2)^2+16*n^4*u^6*(-2*u^2)^2-16*n^4*u^4*(-2*
u^2)^2+32*n^4*u^2*(-2*u^2)^2+4*n^2*x^2*(-2*u^2)^2+4*n^2*u^8*x^2-16*n^2*u^6*x^2+
16*n^2*u^4*x^2-32*n^2*u^2*x^2-g^2*j^2*k^3-6*g^2*j^2*k^2-12*g^2*j^2*k-g^2*h^2*k^3
-6*g^2*h^2*k^2-12*g^2*h^2*k-16*g^2*h*j+32*f^2*k^5*n^2+64*f^2*k^5*n+224*f^2*k^4*n
^2+448*f^2*k^4*n+608*f^2*k^3*n^2+1216*f^2*k^3*n+800*f^2*k^2*n^2+1600*f^2*k^2*n+
512*f^2*k*n^2+1024*f^2*k*n-512*d^4*y^4*(-2*u^2)^4-3072*d^4*y^4*(-2*u^2)^2-512*d^
4*u^16*y^4+4096*d^4*u^14*y^4-4096*d^4*u^12*y^4+24576*d^4*u^10*y^4-44032*d^4*u^8*
y^4+45056*d^4*u^6*y^4-12288*d^4*u^4*y^4+24576*d^4*u^2*y^4-2304*d^4*k*y^4-4608*d^
3*n*y^3-64*d^2*y^2*(-2*u^2)^2+192*d^2*x^2*y^2-64*d^2*u^8*y^2+256*d^2*u^6*y^2-256
*d^2*u^4*y^2+512*d^2*u^2*y^2-1728*d^2*n^2*y^2-96*d^2*k*y^2-8*c^3*u^3*x-4*c^2*u^2
*x^2+4*c^2*n^2*u^10-16*c^2*n^2*u^8+16*c^2*n^2*u^6-32*c^2*n^2*u^4+12*c^2*n^2*u^2+
2*c^2*k*u^2-b^2*k*(-n^2)^2+4*b^2*k*n^3-8*b^2*k*n+4*q*w*z-4*p*l(-p+2)*t(-p^2+4*p-
1)-4*p*z*l(-p+2)-4*p*x*y+8*p*s*x+4*p*q*y-8*p*q*s+4*m*p^2*l(-p+2)+4*m*p*t(-p^2+4*
p-1)+4*m*p*z+4*l*n*p-4*l*m*n-18*k*exp(1)*exp(3)-324*k*exp(1)*exp(3)^2-81*k*exp(1
)^2*exp(3)^2+k*z^2*(-w^2-1-1)+k*y^2*(-(-p)^2-6-1)+6*k*x^2*y^2+k*s^2*(-(-p^2)^2-4
)-2304*k*r^4*y^8-96*k*r^2*y^4+4*k*p^3*s^2+k*p^2*(-(-m)^2-1-1)-k*p^2*(l(-p+2))^2+
36*k*o^2*exp(3)-k*n^4*(-2*u^2)^4-6*k*n^4*(-2*u^2)^2-k*n^4*u^16+8*k*n^4*u^14-8*k*
n^4*u^12+48*k*n^4*u^10-86*k*n^4*u^8+88*k*n^4*u^6-24*k*n^4*u^4+48*k*n^4*u^2-2*k*n
^2*(-2*u^2)^2+6*k*n^2*x^2-2*k*n^2*u^8+8*k*n^2*u^6-8*k*n^2*u^4+16*k*n^2*u^2-k*l^2
*(-n)^2+6*k*l^2*m^2+2*k*l^2*n-2*k*z*t(-p^2+4*p-1)+2*k*z*exp(1)+2*k*x*y+2*k*v*y-4
*k*s*y+4*k*s*x+2*k*q*exp(1)-2*k*q*z-2*k*q*y+2*k*q*x-4*k*q*s+2*k*p*exp(1)+2*k*p*y
^2-8*k*p*s^2-2*k*p*z-2*k*p*q+4*k*n*exp(1)-4*k*n*z+2*k*n*y-2*k*n*v-4*k*n*q-4*k*n*
p+2*k*m*p+2*k*l*y-2*k*l*v-2*k*l*p-2*k*l*n+2*k*l*m+2*j*k^2*z-4*j*w*z+6*j*k*z+2*j*
k*q+2*h*k^2*z-4*h*w*z+8*h*k*z+2*h*k*q-2*h*j*k^3-10*h*j*k^2-18*h*j*k-2*g*j^2*k^3-
10*g*j^2*k^2-16*g*j^2*k-2*g*h^2*k^3-12*g*h^2*k^2-24*g*h^2*k+8*g*j*z+8*g*h*z-24*g
*h*j-288*d*n^3*y-96*d*n*y-8*c*u*x^3+8*c*u*x+4*b*n^2*p-8*b*n*p-4*b*m*n^2+8*b*m*n-
4*b*l*n^3+12*b*l*n^2-4*b*k*p+4*b*k*m-4*b*k*l-36*exp(1)*exp(3)-648*exp(1)*exp(3)^
2-162*exp(1)^2*exp(3)^2+(-(-f^2)^2)*k-2*(-c^2)^2*u^4+2*z^2*(-w^2-1-1)+2*y^2*(-(-
p)^2-6-1)+12*x^2*y^2+2*s^2*(-(-p^2)^2-4)-4608*r^4*y^8-192*r^2*y^4+8*p^3*s^2+2*p^
2*(-(-m)^2-1-1)-2*p^2*(l(-p+2))^2+72*o^2*exp(3)-2*n^4*(-2*u^2)^4-12*n^4*(-2*u^2)
^2-2*n^4*u^16+16*n^4*u^14-16*n^4*u^12+96*n^4*u^10-172*n^4*u^8+176*n^4*u^6-48*n^4
*u^4+96*n^4*u^2-4*n^2*(-2*u^2)^2+12*n^2*x^2-4*n^2*u^8+16*n^2*u^6-16*n^2*u^4+32*n
^2*u^2-2*l^2*(-n)^2+12*l^2*m^2+4*l^2*n-256*k^9*n^4-1024*k^9*n^3-1536*k^9*n^2-
1024*k^9*n-3072*k^8*n^4-12288*k^8*n^3-18432*k^8*n^2-12288*k^8*n-16128*k^7*n^4-
64512*k^7*n^3-96768*k^7*n^2-64512*k^7*n-48640*k^6*n^4-194560*k^6*n^3-291840*k^6*
n^2-194560*k^6*n-92928*k^5*n^4-371712*k^5*n^3-557600*k^5*n^2-371776*k^5*n-116736
*k^4*n^4-466944*k^4*n^3-700640*k^4*n^2-467392*k^4*n+k^3*(-j^2-h^2-22048-1)-96512
*k^3*n^4-386048*k^3*n^3-579680*k^3*n^2-387264*k^3*n+2*k^2*(-j^2-h^2-22048-1)-
50688*k^2*n^4-202752*k^2*n^3-304928*k^2*n^2-204352*k^2*n+2*k^2*l-2*j^2*k^2-6*j^2
*k-4*h^2*k^2-13*h^2*k-8*g^2*j^2-8*g^2*h^2+128*f^2*n^2+32*f^2*k^5+224*f^2*k^4+608
*f^2*k^3+800*f^2*k^2+256*f^2*n+514*f^2*k-4608*d^4*y^4-192*d^2*y^2+4*c^2*u^2-2*b^
2*(-n^2)^2+8*b^2*n^3-16*b^2*n-4*b^2*k-4*z*t(-p^2+4*p-1)+4*z*exp(1)+4*x*y+4*v*y-8
*s*y+8*s*x+4*q*exp(1)-4*q*z-4*q*y+4*q*x-8*q*s+4*p*exp(1)+4*p*y^2-16*p*s^2-4*p*z-
4*p*q+8*n*exp(1)-8*n*z+4*n*y-4*n*v-8*n*q-8*n*p+4*m*p+4*l*y-4*l*v-4*l*p-4*l*n+4*l
*m-36*k*exp(3)+(-k)*(t(-p^2+4*p-1))^2-324*k*exp(3)^2+(-k)*(-64*d*n*u^2*y)^2+(-k)
*(-32*d*n*u^6*y)^2+(-k)*(-128*d^2*u^2*y^2)^2+(-k)*(-64*d^2*u^6*y^2)^2+(-k)*(-2*c
*u*x)^2+(-k)*(-8*n^2*u^2)^2+(-k)*(-4*n^2*u^6)^2+(-k)*(-exp(1))^2-2*k*(-x^2)^2+(-
k)*(-u^2)^2+(-k)*(-o^2)^2+(-k)*(-m^2)^2+(-k)*(-z)^2+(-k)*(-y)^2+(-k)*(-x)^2+(-k)
*(-q)^2+(-k)*(-m)^2+(-k)*(-l)^2-9*k*y^4+4*k*x^2+(-k)*v^2+2*k*u^2-2*k*q^2+2*k*o^2
-15369*k*n^4-61440*k*n^3-92683*k*n^2+2*k*m^2-9*k*l^4-8*k*l^2-62464*k*n+(6+2*i)*k
*l+4*j*z+4*j*q+8*h*z+4*h*q-12*h*j-8*g*j^2-16*g*h^2-8*b*p+8*b*m-8*b*l-72*exp(3)-2
*(t(-p^2+4*p-1))^2-648*exp(3)^2-2*(-64*d*n*u^2*y)^2-2*(-32*d*n*u^6*y)^2-2*(-128*
d^2*u^2*y^2)^2-2*(-64*d^2*u^6*y^2)^2-2*(-2*c*u*x)^2-2*(-8*n^2*u^2)^2-2*(-4*n^2*u
^6)^2-2*(-exp(1))^2-4*(-x^2)^2-2*(-u^2)^2-2*(-o^2)^2-2*(-m^2)^2-2*(-f^2)^2-2*(-z
)^2-2*(-y)^2-2*(-x)^2-2*(-q)^2-2*(-m)^2-2*(-l)^2-18*y^4+8*x^2-2*v^2+4*u^2-4*q^2+
4*o^2-2066*n^4-8192*n^3-12438*n^2+4*m^2-18*l^4-16*l^2-256*k^9-3072*k^8-16128*k^7
-48640*k^6-92960*k^5-116960*k^4-75072*k^3+(-7394-2*i)*k^2-4*j^2-10*h^2+132*f^2-8
*b^2-8448*n+(4+4*i)*l+(-15881-6*i)*k-2186-4*i

Tags de l'article :

Une fourmi heureuse et productive

01/10/2011 - Commentaires fermés

Il était une fois , une fourmi heureuse et productive qui tous les jours arrivait de bonne heure à son travail. Elle passait toute sa journée à travailler dans la joie et la bonne humeur, poussant même la chansonnette. Elle était heureuse de travailler et son rendement était excellent mais, malheur !, elle n'était pas pilotée par un manager...

Le frelon, PDG de l'entreprise, considérant qu'il n'était pas possible que la situation puisse perdurer, créa un poste de manager pour lequel il recruta une coccinelle avec beaucoup d'expérience.

La première préoccupation de la Coccinelle fut d'organiser les horaires d'entrée et de sortie de la fourmi. Elle créa également un système de compte-rendu et de fiches navettes. Très vite, il fallut engager une secrétaire pour l'aider à préparer les dossiers et le reporting, si bien qu'elle recruta une araignée qui mis sur pied un système de classement et qui fut chargée de répondre au téléphone.

Pendant ce temps là, la fourmi heureuse et productive continuait de travailler, travailler, travailler. Le frelon, PDG de l'entreprise, était ravi de recevoir les rapports de la coccinelle, si bien qu'il lui demanda des études comparatives avec graphiques, indicateurs et analyse de tendance. Il fallut donc embaucher un cafard pour assister le manager et il fallut acheter un nouvel ordinateur avec une imprimante.

Assez vite, la fourmi heureuse et productive commença à baisser de rythme et à se plaindre de toute la paperasserie qui lui est dorénavant imposée. Le frelon, PDG de l'entreprise, considéra qu'il était temps de prendre des mesures. Il créa donc le poste de chef de service pour superviser la fourmi heureuse et productive.

Le poste fut pourvu par une cigale qui changea tous le mobilier de son bureau et qui demanda un nouveau fauteuil ergonomique ainsi qu'un nouvel ordinateur avec écran plat. Seulement, avec plusieurs ordinateurs, il fallut aussi installer un serveur réseau. Le nouveau chef de service ressenti rapidement le besoin de recruter un adjoint (qui était son assistant dans son ancienne entreprise) afin de préparer un plan stratégique de pilotage ainsi que le budget de son nouveau service. Pendant ce temps-là, la fourmi était de moins en moins heureuse et de moins en moins productive.

« Il va nous falloir bientôt commander une étude sur le climat social », dit la cigale.

Mais, un jour, le frelon, PDG de l'entreprise, en examinant les chiffres, se rendit compte que le service dans lequel la fourmi heureuse et productive travaille n'était plus aussi rentable qu'avant. Il eut donc recours aux services d'un prestigieux consultant, M. Hibou, afin qu'il fasse un diagnostic et qu'il apporte des solutions. Le hibou fit une mission de trois mois dans l'entreprise à l'issue de laquelle il rendit son rapport : « il y a trop de personnel dans ce service ». Le Frelon, PDG de l'entreprise, suivit ses recommandations et... licencia la fourmi !

Moralité

Ne t'avise jamais d'être une fourmi heureuse et productive. Il vaut mieux être incompétent et ne servir à rien. Les incompétents n'ont pas besoin de superviseur, à quoi cela servirait puisque tout le monde le sait ! Si malgré tout, tu es productif, ne montre pas que tu es heureux au travail, on ne te le pardonnerait pas.

Si tu t'obstines à être une fourmi heureuse et productive, monte ta propre entreprise : au moins tu n'auras pas à faire vivre les frelon, coccinelle, araignée, cigale, hibou et autre cafard.

Lamentablement, tout ceci est basé sur des études scientifiques universitaires qui démontrent que la majorité des être humains tendent à devenir des parasites...

© Auteur inconnu

Tags de l'article :

Neŭtrinoj je 300006 km/s

30/09/2011 - Commentaires fermés

Ĵurnalistoj nekredeblas! Kutime ili redaktas artikolojn pli proksimajn de feko ol miaj sidvangoj... Tamen nun, mi eĉ sentas ion, tro proksiman.

Aperis artikoloj pri eblo malveriĝo de la speciala teorio de relativeco de Ajnŝtajn. Pro tio ke kelkaj neŭtrinoj iris pli rapide ol la lumo. La teorio postulas tion, ke ne eblas iris pli rapide ol la lumo. Ĉu neŭtrinoj esceptoj? Mi ne scias nun, nek ĵurnalistoj.

Rapideco de lumo estas ekzakte 299 792 458 metroj posekunde. Ĉar ĝi estas limo por ĉiuj, oni nomas ĝin unuvorte: lumrapido. kompreneble, oftas nombro 300 000 000. Ĉiutage tio sufiĉas, eĉ al ĵurnalistoj, krom nun.

Raportoj pri tiu afero certigas ke neŭtrinoj superpaŝis lumon, je 6 km/s, serioze kaj precize. Sed, ĵurnalistoj diris tion: neŭtrinoj iris je 300 000 006 km/s ĉar luma rapideco egalas al 300 000 000 km/s.

Jen kelkaj hontigaj artikoloj per gugla serĉo: https://encrypted.google.com/search?q=neutrino+300006&ie=utf-8&oe=utf-8
Speciala teorio de relativeco: https://secure.wikimedia.org/wikipedia/eo/wiki/Speciala_teorio_de_relativeco

Tags de l'article :

For how many states, there's more than one Googolplex of turing machines?

27/09/2011 - Commentaires fermés

This is a great way to enter the world of great numbers, with a bit of theory and practical sort of innovation...

Main terms

What is a Turing Machine?

A Turing Machine is a very simple computer which was designed by Alain Turing in 1936. A Turing Machine is described by states, each states pointing to other states according to some conditions. You may read a bit more about Turing machines in order to fell all the taste of this article.

What are Googol and Googolplex ?

A Googol is a number represented by 1 followed by 100 zeroes. That is, 10^100. A Googolplex is 10 power Googol - that is, a number represented by 1 followed by a Googol of zeroes : 10^(10^100). Somewhat huge.

What is the Log function ?

The Log function approximatively gives the number of digits of a number. It's the reciprocal function of y = 10^x. So, x = Log(y). This function is important here because of one of its main properties. It turns multiplications into additions. So, the calculations will involve far less huge numbers.

So what?

A resolution

The question is: how many states do I need to be able to build one Googolplex Turing Machines? Winter's cold, brain's hot.

The Turing Machine considered here is the more simple one: two different values and two different directions. Two values and two directions make 4 possibilities. To this, let's add the number of possible jumps: k+1 if there's k states. The +1 is due to the terminal state. So, we've got 4*(k+1) possibilities for a given value. A state having two values (0 or 1), it's (4*(k+1))^2 each state. As there is k different states, we get: (4*(k+1))^(2*k).

The problem is that this expression is obviously over k^k and that the question becomes:

k | (4*(k+1))^(2*k) >= 10^(10^100)

I must admit that I didn't have any clue on how to cleanly solve this. Trying as many values of k as possible is hopeless. Here comes the Log. As a strickly growing function the order between the left part and right part is unchanged by the Log:

k | Log( (4*(k+1))^(2*k) ) >= Log ( 10^(10^100) )
So, k | 2*k * Log( 4*(k+1) ) >= 10^100
So, k | 2*k * (Log(4) + Log(k+1)) >= 10^100

Let's Log again:
k | Log(2) + Log(k) + Log(Log(4) + Log(k+1)) >= 100

Now, it's just about using Log(k) and Log(k+1) against 100. I'm sure that it's feasible, but let's do it by a program.

The program

The program, in the Python language, browse the values using an exponential scale. Once it gets over, then it turns back a try a 10th less scale. And so on until the Log of the Log of the number of possible Turing Machines reaches 100. The formatting disappears there, I replaced tabs by underscores.

# Python
# -*- coding: utf-8 -*-

# For how many states, there's more than one gogolplex of turing machines?

from math import log

def logLogNbTuring(k): return log(2.0*k,10)+log(log(4.0,10)+log(k+1.0,10),10)

# A value of 100 means that we're searching for a number of machines greater than 10^(10^100), more than a gogolplex.
nbTenPowerTen = 100

step = 1
while logLogNbTuring(step) step /= 10
print "log(step,10) set to %i" % log(step,10)

i = 1
belowValue = i
while (step>=1):
_if logLogNbTuring(i)>=nbTenPowerTen:
__i = belowValue
__step /= 10
_belowValue = i
_i+=step

# belowValue contains the last value before the limit, so add 1 to get over the limit
i = belowValue + 1
print "nbTenPowerTen=%i, solution=%i" % (nbTenPowerTen, i)
print "log(solution,10)=%f" % log(i,10)

The result

answer = 50 860 333 466 396 650 825 817 657 241 650 242 602 634 644 785 968 021 580 236 147 821 863 292 723 816 479 721 264 913 714 249 728
I think that because of rounds that this number is not strictly the exact solution. But that's not the point: Log(answer) = 97.70 means that answer almost equals 10^100, a Googol.

A Turing machine with almost one Googol states means one Googolplex possibility of Turing machines.

Tags de l'article :

No UUOC

01/11/2008 - Commentaires fermés

$ date
novembre 2008

$ echo "pousse !" > /dev/maman/tête
bash: /dev/maman/tête: Aucun fichier ou répertoire de ce type

$ echo "pousse !!" > /dev/maman/oreille
bash: /dev/maman/oreille: Permission non accordée

$ sudo echo "pousse !!!" > /dev/maman/oreille
[sudo] password for papa: S'il te plaît :-)

$ ls -l `which dd`
-r-xr-xr-x dd -> /mnt/clinique/personnel/sage-femme

$ dd if=/dev/maman/uterus of=/tmp/bebe bs=~4kg count=1
1+0 enregistrements lus
1+0 enregistrements écrits
>3kg born, 1 day, ~50cm

$ mv /tmp/bebe /tmp/fiston

$ cut -d'|' -f 1 /tmp/fiston|xargs rm
Cordon coupé !

$ mv -v /tmp/fiston /dev/papa/bras
`/tmp/fiston' -> `/dev/papa/bras' (warning: sound file)

$ cat /dev/papa/bras/fiston
OuuuuuuiiiiiIiiIiiIiiiinnnnn

Tags de l'article :

Cryptanalyse de l'algorithme CENAv03

22/04/2012 - 3 commentaires

J'ai cassé l'algorithme CENA en m'aidant de l'implémentation de référence. Le langage de programmation utilisé est Php. le code source en licence libre GPLv3+ est téléchargeable ici.

Je me suis contenté d'attaquer assez souvent un seul caractère. La technique est donc basique ici.

Dans la suite, il ne sera jamais question d'octet, mais toujours de caractère. Et pour conserver une relative simplicité, il sera fait mention de lettres clair et de lettres chiffrées. On ne considère que les lettres de l'alphabet. L'implémentation n'utilise jamais de dispositif aléatoire, mais simplement pseudo-aléatoire, mais cela n'a pas de conséquence pour la suite.

Descriptif de l'algorithme de chiffrement

descriptif
Chaque caractère est chiffré isolément en fonction d'une clé. La variante de chiffrement de chaque caractère est entièrement déterminé par sa position dans le clair. Chaque caractère clair aboutit à 17 caractères (de '0' à '9') chiffrés. Voici la succession de traitement que subit une lettre :

Vigenère fixé


Le caractère subit d'abord l'algorithme de Vigenère utilisant une clé fixée une fois pour toute. Le caractère de rang 0 (première position) n'est pas modifié, le deuxième est décalé de 1, le troisième de deux, etc.

Expansion


À chaque caractère, on associe un nombre de 6 chiffres pris dans un intervalle déterminé dans la clé. Tous les nombres de l'intervalle ramènent au même clair. Par exemple, A est transformé en un nombre entre 305126 et 308475. L'intervalle est fonction de la clé, et reste fixe pendant le chiffrement.
Le chiffré est passé de 1 caractères à 6 caractères.

Brouillage


Les 6 chiffres précédents sont mélangés dans 11 chiffres aléatoires. L'implémentation utilise une phase ajoutant 10 chiffres et une phase ajoutant 1 chiffre. Cela donne l'illusion que ça ajoute de la complexité parce que la clé est plus difficile à générer et à utiliser, mais en fait c'est tout à fait inutile. Le chiffré est passé maintenant de 6 caractères à 17 caractères.

Analyse de l'algorithme

énigma
Il est a clé de taille fixe, déterminer la longueur de la clé est donc utile. En fait, il suffirait de tester les longueurs de clé de 32 à 64 caractères, ce qui donne 33 possibilités. En fait, on peut faire plus simple !

L'algorithme chiffre caractère par caractère, on peut donc ne se focaliser que sur le premier caractère. Cette approche permet de s'affranchir du Vigenère fixé, car le Vigenère au rang zéro (première position) retourne exactement le caractère en entrée. Donc le Vigenère peut être ignoré.

L'expansion est le point faible de l'algorithme. Par construction, pour une position donnée (mais nous restons toujours au premier caractère) l'ensemble des valeurs attribuables à un caractère commence toujours par les mêmes deux premiers chiffres, le troisième variant assez peu. En reprenant l'exemple de la lettre 'A', les nombres qui lui sont associés vont de 305126 à 308475. Les trois premiers chiffres sont donc 305, 306, 307 et 308.

Le brouillage ajoute 7 chiffres aléatoires. C'est la partie la plus utile de l'algorithme et noye l'information dans un brouillard aléatoire.

Cryptanalyse

descriptif

Sans connaître l'algorithme, on analyse les rapports clairs/chiffrés. On constate que la taille des chiffrés est toujours égale à 17 fois celle du clair. En ne chiffrant qu'un seul caractère de façon répétitive, on s'aperçoit vite que 2 des dix-sept caractères ne varient pas, certains variant un peu plus et d'autres sont quasiment aléatoires. En chiffrant deux caractères identiques, on s'aperçoit que les chiffres non-aléatoires restent les mêmes mais que leur position à changé. À cette étape, on sait déjà que (à une clé donnée) la substitution ne dépend que du caractère et que la transposition ne dépend que de la position du caractère. La cryptanalyse ici consiste à retrouver une clé en soumettant à volonté des clairs. En fait, la vraie clé n'est retrouvée mais seulement une clé inverse. En poussant plus loin l'analyse, il serait possible de créer une clé et de chiffrer des messages.

Rangs utiles


Première étape, on détermine les rangs utiles. À une position donnée correspond une répartition donnée des caractères expansés. Par exemple, les rangs 11, 16 et 1 portent de l'information pour le première caractère chiffré. Les rangs 7, 1 et 13 correspondent au deuxième caractère chiffré. Je demande de très nombreuses fois le chiffrement de certains caractères, un à la fois. Cela fournit le spectre associé à la position : pour chaque rang (de 0 à 16) on détermine la probabilité d'occurrence des chiffres. Dans la pratique, on ne conserve que les 3 meilleurs rangs. Dans un caractère chiffré, on est donc capable de connaître les bons caractères parmis les 17.

Dictionnaire


Deuxième étape, on demande un grand nombre de fois le chiffrement de tous les caractères, toujours un à la fois. Les 17 chiffres sont filtrés grâce aux rangs utiles collectés à la première étape, dans la pratique, 3. Grâce au grand nombre d'essais, j'en arrive à déterminer toutes les combinaisons possibles de 3 chiffres. Concrètement, cela revient à déterminer les trois premiers chiffres correspondant à chaque lettre. Par exemple l'expansion de la lettre 'A' est l'ensemble des nombres entre 305126 et 308475 inclus. Le "3" et le "0" apparaissent toujours à la même position dans les chiffrés tandis qu'une position ne contient que "5,"6","7" ou "8". Ce faisant, on récolte pour chaque lettre en clair ces trois nombres caractérisant son expansion. En fait, il existe des cas où il y a ambiguïté. Ces cas ouvrent la voie à l'analyse fréquentielle pour les éliminer, mais qui ne sera pas traitée ici.

Clé inverse


Troisième étape, calcul de la clé inverse. Elle porte toujours sur un seul et premier caractère, ce qui élimine le vigenère du début. En combinant les deux étapes précédentes, on détermine quels 3 chiffres on doit lire parmi les 17 et quelle est la (parfois les) lettre en clair liée à ces 3 chiffres.

Le déchiffrement au moyen de la clé inverse se déroule comme suit :
  • On ne conserve que les trois chiffres utiles.
  • On regarde à quel caractère correspond ces trois chiffres utiles.

Comment améliorer la cryptanalyse ?


Elle ne porte que sur un caractère, ce qui oblige à faire des milliers de requêtes de chiffrement de un caractère. On peut chiffrer un seul gros fichier contenant toutes les lettres par paquets de quelques milliers. Le débrouillage est réalisé en testant les 33 hypothèses de longueur de la clé. Avec la bonne longueur du clé, la prééminence des 3 chiffres apparaît.

L'analyse fréquentielle peut, sous réserve d'avoir un clair et un chiffré de longueur suffisante, lever les dernières ambiguïtés et permettre de reconstituer la clé d'origine.

Et la longueur de la clé ?


La phase de cryptanalyse n'a pas vraiment besoin de la longueur de la clé. En fait, il faut la déterminer seulement s'il faudra déchiffrer des messages de longueur supérieure et pour généraliser le déchiffrement. La longueur de la clé est tout de même calculée pendant la cryptanalyse. Pendant le débrouillage, on reboucle sur la clé lorsqu'on retrouve les mêmes positions caractéristiques.

Comment améliorer l'algorithme ?

descriptif
Injection de l'intru : la phase d'injection de l'intru est inutile car elle est équivalente à rajouter un caractère de brouillage. À supprimer.

Brouillage : le brouillage lui-même peut être contourné par une analyse fréquentielle. En effet, le brouillage est aléatoire, contrairement aux informations entrées en clair.

Expansion : elle a grandement permis de casser l'algorithme. En fait, on peut l'améliorer comme suit. L'algorithme partitionne un intervalle de nombres en associant à chaque intervalle une lettre. Par exemple, si on sait que 305126 et 308475 désigne la lettre 'A', alors on sait que tous les nombres entre les deux désignent aussi 'A'.
Pour faire mieux, on pourrait associer à chaque nombre de l'intervalle une lettre de sorte à ce que chaque lettre soit associée à la même quantité de nombre, mais qu'il n'est pas possible de prévoir à quelle lettre est associée un nombre. Par contre, il faudra utiliser une clé de 899999 caractères pour l'expansion... Cela éviterait de pouvoir extraire les 3 chiffres caractéristiques d'une lettre.

Comment faire mieux que l'algorithme ?


Utiliser un vigenère a clé fixée n'est d'aucune utilité et n'a pas freiné la cryptanalyse, autant l'abandonner. Le brouillage ralentit la cryptanalyse, mais n'est pas efficace, donc autant l'abandonner aussi. L'expansion est une fausse bonne idée, et il serait plus efficace de faire un simple vigenère. Par exemple, on pourrait générer une clé infinie au moyen d'un tirage aléatoire provenant d'une suite déterminée par la clé. Par exemple, fixer le sel de la clé (srand() en Php) permet de faire autant de tirages pseudo-aléatoires que voulu... Évidemment, mais si c'est plus efficace, cela reste faible.

En gros, il serait plus efficace de faire du Vigenère au moyen d'une clé pseudo-aléatoire. Mais même comme ça, ce n'est pas gagné contre les techniques d'aujourd'hui.

Merci à Dimitri MESTDAGH, le développeur de l'implémentation de référence et à Philippe LHEUREUX, le concepteur de l'algorithme.

Références



Le code source est disponible ici.

Tags de l'article :

Plena Ilustrita Vortaro de Esperanto, serĉilo

10/04/2012 - Commentaires fermés

Jen teksto de la retejo:

la reta versio de unu el la plej famaj E-verkoj de lastaj jardekoj "Plena Ilustrita Vortaro de Esperanto" (PIV). Jam multajn jarojn PIV estas la plej ampleksa difin-vortaro en Esperanto, kiu unuan fojon aperis en la jaro 1970. Al la enhavo de la vortaro kontribuis multaj personoj. La liston de tiuj personoj vi povas trovi ĉe tiu ĉi paĝo.
Ekde aprilo 2012 PIV estas uzebla ankaŭ en la reto.

http://vortaro.net/

Pro faciligi la serĉadon, mi faris serĉilon por Firefox, vortaro.net.xml

Tags de l'article :

Scolnet: éducation à la délation nationale

18/03/2012 - Commentaires fermés

Faits

Chaque site web possède son modèle économique, qui se résume à combien je gagne d'argent par rapport à ce que je dépense pour le site. Par exemple, mon site est 100% déficitaire sur ce point. Mais il me sert à publier des articles et partager des fichiers, un service que je paye. Scolnet ne renseigne pas sur son modèle économique, mais insiste sur la gratuité. Gratuit, mais pas sans contrepartie. Facebook à ses débuts était similaire, avant de vendre la vie privée de ses "clients". Lorsque vous ne payez pas pour un service, c'est que vous n'êtes pas le client, mais le produit.

Les espace numériques sont cloisonnées école par école. Elles sont toutes connues du site, qui les propose à la création d'un espace. Le chef d'établissement doit se déclarer comme tel. Ensuite suivent les enseignants, les parents d'élèves, les parents, les élèves. Toute la hiérarchie est connue de Scolnet. Les messages échangés entre chacun compléteront les renseignements offerts au site. Scolnet exige que chacun contribue sous son prénom et nom, chacun validera donc implicitement l'identité des autres.

Avis

Ce site veut suivre le même chemin que Facebook, mais en forçant une clientèle captive piégée, involontairement ou non, par les chefs d'établissement. De proche en proche, chacun dénoncera ses voisins (identités, relations, enfants, etc.) jusqu'à ce que le site

Si vous l'utilisez de votre propre chef, vos échanges contribueront à dénoncer indirectement ceux qui ne souhaitent pas y figurer. Des informations concernant les objecteurs (et leurs familles) pourront être déduites de vos échanges. Facebook en est déjà à ce stade.
Lisez toutes les informations concernant Facebook et la vie privée : elles sont ou seront valables pour Scolnet.

Voici l'avis rendu par la circonscription de La Flèche :
Votre école a peut-être reçu un courriel publicitaire sur l'ouverture du site scolnet, premier réseau social scolaire qui permet à l'équipe enseignante de communiquer et de partager du contenu numérique avec parents et élèves....
Le caractère publicitaire de ce produit, n'a fait l'objet d'aucune validation académique.
Il est précisé, de plus, qu'en l'absence de garantie sur la destination et les conditions d'hébergement des données, pour certaines sensibles, qui y seront traitées, l'utilisation d'un tel produit est fortement déconseillée.

Technique

En France

Le nom de domaine scolnet.fr ainsi que le serveur sont tous les deux hébergés en France, à Roubaix. L'hébergeur est OVH, un hébergeur grand public français.

Une recherche whois indique que le domaine est géré par OVH, un grand hébergeur français. L'hébergement est un Kimsufi (www.kimsufi.com). Une requête sur le nom de domaine scolnet.fr (centralops.net/co/NsLookup.aspx) indique que l'hébergement est aussi assuré par OVH. L'adresse IP est 87.98.156.150. Une requête inverse sur l'adresse IP du serveur confirme que l'hébergement est chez OVH. Un traceroute, vers le domaine, confirme OVH comme hébergeur. La connexion réseau reste en France.

Google & Facebook

Le site partage ses statistiques de fréquentation avec Google. Il est également connecté au réseau social Facebook en ce qui concerne la gestion des comptes utilisateurs.

Les pages comportent le traceur de Google. Le site permet de se connecter avec Facebook mais aucune interaction avec Facebook ne se trouve côté client. L'intégration est faite côté serveur, silencieusement.

Identité réelle

Dans son règlement, le site exige de ses utilisateurs (n'importe qui peut s'inscrire) qu'il fournisse ses vrais noms et prénoms.

Il faut :
  • donner sa vraie identité,
  • il faut envoyer un courriel pour supprimer un compte,
  • accepter la modification du règlement à tout moment, sans avertissement.

Par contre, les directeurs d'écoles sont des utilisateurs particuliers puisque le site a recensé les écoles de France et qu'il faut s'affilier à une école. Le site fait la différence entre chef d'établissement, enseignant, parent d'élève, parent, élève.

Sans contrôle

Le site se présente comme indépendant. Scolnet.fr est un site indépendant créé en 2011, peut-on lire dans la page À propos.

Donc sans liaison ni contrôle par le Ministère de l'Éducation Nationale.

Règlement précaire

Le réseau social Scolnet se réserve le droit de changer à tout moment, sans préavis, les conditions d'utilisation. Il faut envoyer un courriel pour supprimer un compte. La suppression des données n'est pas immédiate. Le site affirme être déclaré à la CNIL, mais ne délivre pas de numéro d'agrément. Il se réservent le droit de diffuser des données agrégées. Aucune possibilité d'exporter ses données.

Confidentialité :
  • pas de numéro de déclaration à la CNIL
  • ils diffusent des données agrégées (pour de la pub ciblée ?)
  • pas de précision sur la propriété des données postées

Aucune précision n'est apportée sur la propriété des données...

Piège du stockage

Le site n'offre que 50Mo de stockage, probablement un piège pour proposer ensuite des forfaits payants.

Il est classique de fournir un service qui semble convenable au début, et gratuitement, pour imposer ensuite ses conditions à qui se rendrait compte qu'au début ce n'était pas assez. On peut imaginer que ce serait assez dramatique pour une école et tous ceux qui gravitent autour.

Pas de HTTPS

Les pages utilisent HTTP et pas HTTPS et la confidentialité qu'il apporte.

Les identifiants et mots de passe circulent en clair entre le navigateur et le site web.

En résumé...

Scolnet est un réseau social avec les mêmes motivations que Facebook. Il ne dispose d'aucun financement (par ses utilisateurs) pour ses activités, il va donc vivre de la publicité et de vos données personnelles. Par ailleurs, mais je ne suis pas juriste, si l'éducation nationale pourrait être poursuivie au civil si l'un de ses agents entrait dans la délation, les directeurs d'établissement seraient personnellement et pénalement responsables puisque ce réseau social repose sur leur participation active.

Tags de l'article :

Permutation sans variable intermédiaire

09/10/2011 - Commentaires fermés

Dans de nombreux environnements, on ne dispose pas toujours de variables intermédiaires. Il est donc nécessaire de recourir à des subterfuges.

Avec une variable intermédiaire

Soient deux variables a et b qu'il faut permuter. L'opération est classique si on dispose d'une variable intermédiaire X :

X = a
a = b
b = X

En déroulant l'exécution à la main, cela donne :

actionabX
initialisation47
X = a474
a = b774
b = X744

Ce qui requiert 3 étapes.

Sans variable intermédiaire

Il y a un problème avec

a = b
b = a

qui ne marche pas car la valeur de b est simplement copiée dans a.
Alors, peut faire ceci :

a = a + b
b = a - b
a = a - b

Ça marche, mais il y a deux formules différentes : a + b et a - b.
On peut faire plus simple :

a = - a - b
b = - a - b
a = - a - b

Ce qui donne l'exécution suivante :

actionab
initialisation47
a = - a - b-117
a = - a - b-114
a = - a - b74

Il y a le même nombre d'opérations que précédemment, mais l'action est identique pour tous.

Généralisation

Aux entiers

La permutation circulaire se généralise avec un nombre arbitraire de variables. Soit x1, x2, ..., xn les variables sur lesquelles on veut effectuer une permutation circulaire. Pour mettre la valeur de x1 and x2, x2 dans x3, ..., xn dans x1, on applique l'algorithme suivant :

Pour i de 1 à n Faire: xi = - ∑(Xj | j de 1 à n)
x1 = - ∑(Xj;j;1;n)

L'algorithme exploite le fait que le calcul se répète à l'identique pour tous.

Aux booléens

Le symbole ⊻ (XOR) a la même principe que le ∑ car l'opérateur ⊻ possède les propriétés d'associativité et de commutativité.

Pour i de 1 à n Faire: xi = ⊻(Xj | j de 1 à n)
x1 = - ⊻(Xj;j;1;n)

Le fait qu'en informatique les booléens sont utilisés pour stocker les données permet de généraliser la permutation à n'importe quel type de données.

Tags de l'article :

Primes, 26 letters inequality

08/10/2011 - Commentaires fermés

This inequality with 26 letters generates all the primes! But there's a trap. First, not all n-uples of the 26 variables return a prime. Second, there's no way to guess what subset of variable values returns primes.

(k + 2)*(1 − (w*z + h + j − q)^2 − ((g*k + 2*g + k + 1)*(h + j) + h − z)^2 − (16*(k + 1)^3*(k + 2)*(n + 1)^2 + 1 − f^2)^2 − (2*n + p + q + z − e)^2 − (e^3*(e + 2)*(a + 1)^2 + 1 − o^2)^2 − ((a^2 − 1)*y^2 + 1 − x^2)^2 − (16*r^2*y^4*(a^2 − 1) + 1 − u^2)^2 − (n + l + v − y)^2 − ((a^2 − 1)*l^2 + 1 − m^2)^2 − (a*i + k + 1 − l − i)^2 − (((a + u^2*(u^2 − a))^2 − 1)*(n + 4*d*y)^2 + 1 − (x + c*u)^2)^2 − (p + l*(a − n − 1) + b*(2*a*n + 2*a − n^2 − 2*n − 2) − m)^2 − (q + y*(a − p − 1) + s*(2*a*p + 2*a − p^2 − 2*p − 2) − x)^2 − (z + p*l(a − p) + t(2*a*p − p^2 − 1) − p*m)^2) > 0

Indeed, k + 2 is prime if and only if this equation has a solution in the natural numbers (cf Wikipedia). Yes, it's a detail, but all the variables must be natural numbers ;-)

The question is: did anyone tried to develop this expression?

Yes, using giac :

expand((k + 2)*(1 − (w*z + h + j − q)^2 − ((g*k + 2*g + k + 1)*(h + j) + h − z)^2 − (16*(k + 1)^3*(k + 2)*(n + 1)^2 + 1 − f^2)^2 − (2*n + p + q + z − e)^2 − (e^3*(e + 2)*(a + 1)^2 + 1 − o^2)^2 − ((a^2 − 1)*y^2 + 1 − x^2)^2 − (16*r^2*y^4*(a^2 − 1) + 1 − u^2)^2 − (n + l + v − y)^2 − ((a^2 − 1)*l^2 + 1 − m^2)^2 − (a*i + k + 1 − l − i)^2 − (((a + u^2*(u^2 − a))^2 − 1)*(n + 4*d*y)^2 + 1 − (x + c*u)^2)^2 − (p + l*(a − n − 1) + b*(2*a*n + 2*a − n^2 − 2*n − 2) − m)^2 − (q + y*(a − p − 1) + s*(2*a*p + 2*a − p^2 − 2*p − 2) − x)^2 − (z + p*l(a − p) + t(2*a*p − p^2 − 1) − p*m)^2))

32*c*d*k*n*u*x*y*(-2*u^2)^2+16*c^2*d*k*n*u^2*y*(-2*u^2)^2+64*c*d^2*k*u*x*y^2*(-2
*u^2)^2+64*c*d*n*u*x*y*(-2*u^2)^2+32*c*d*k*n*u^9*x*y-128*c*d*k*n*u^7*x*y+128*c*d
*k*n*u^5*x*y-256*c*d*k*n*u^3*x*y+96*c*d*k*n*u*x*y-512*d^3*k*n*u^8*y^3*(-2*u^2)^2
+2048*d^3*k*n*u^6*y^3*(-2*u^2)^2-2048*d^3*k*n*u^4*y^3*(-2*u^2)^2+4096*d^3*k*n*u^
2*y^3*(-2*u^2)^2-192*d^2*k*n^2*u^8*y^2*(-2*u^2)^2+768*d^2*k*n^2*u^6*y^2*(-2*u^2)
^2-768*d^2*k*n^2*u^4*y^2*(-2*u^2)^2+1536*d^2*k*n^2*u^2*y^2*(-2*u^2)^2+32*c^2*d^2
*k*u^2*y^2*(-2*u^2)^2+32*c^2*d*n*u^2*y*(-2*u^2)^2+16*c^2*d*k*n*u^10*y-64*c^2*d*k
*n*u^8*y+64*c^2*d*k*n*u^6*y-128*c^2*d*k*n*u^4*y+48*c^2*d*k*n*u^2*y-32*d*k*n^3*u^
8*y*(-2*u^2)^2+128*d*k*n^3*u^6*y*(-2*u^2)^2-128*d*k*n^3*u^4*y*(-2*u^2)^2+256*d*k
*n^3*u^2*y*(-2*u^2)^2+16*d*k*n*x^2*y*(-2*u^2)^2+16*d*k*n*u^8*x^2*y-64*d*k*n*u^6*
x^2*y+64*d*k*n*u^4*x^2*y-128*d*k*n*u^2*x^2*y+128*c*d^2*u*x*y^2*(-2*u^2)^2+64*c*d
^2*k*u^9*x*y^2-256*c*d^2*k*u^7*x*y^2+256*c*d^2*k*u^5*x*y^2-512*c*d^2*k*u^3*x*y^2
+192*c*d^2*k*u*x*y^2+4*c*k*n^2*u*x*(-2*u^2)^2+64*c*d*n*u^9*x*y-256*c*d*n*u^7*x*y
+256*c*d*n*u^5*x*y-512*c*d*n*u^3*x*y+192*c*d*n*u*x*y-512*d^4*k*u^8*y^4*(-2*u^2)^
2+2048*d^4*k*u^6*y^4*(-2*u^2)^2-2048*d^4*k*u^4*y^4*(-2*u^2)^2+4096*d^4*k*u^2*y^4
*(-2*u^2)^2-1024*d^3*n*u^8*y^3*(-2*u^2)^2+4096*d^3*n*u^6*y^3*(-2*u^2)^2-4096*d^3
*n*u^4*y^3*(-2*u^2)^2+8192*d^3*n*u^2*y^3*(-2*u^2)^2-256*d^3*k*n*y^3*(-2*u^2)^4-
1536*d^3*k*n*y^3*(-2*u^2)^2-256*d^3*k*n*u^16*y^3+2048*d^3*k*n*u^14*y^3-6144*d^3*
k*n*u^12*y^3+12288*d^3*k*n*u^10*y^3-22016*d^3*k*n*u^8*y^3+22528*d^3*k*n*u^6*y^3-
22528*d^3*k*n*u^4*y^3+12288*d^3*k*n*u^2*y^3-384*d^2*n^2*u^8*y^2*(-2*u^2)^2+1536*
d^2*n^2*u^6*y^2*(-2*u^2)^2-1536*d^2*n^2*u^4*y^2*(-2*u^2)^2+3072*d^2*n^2*u^2*y^2*
(-2*u^2)^2+32*d^2*k*x^2*y^2*(-2*u^2)^2+32*d^2*k*u^8*x^2*y^2-128*d^2*k*u^6*x^2*y^
2+128*d^2*k*u^4*x^2*y^2-256*d^2*k*u^2*x^2*y^2-96*d^2*k*n^2*y^2*(-2*u^2)^4-576*d^
2*k*n^2*y^2*(-2*u^2)^2-96*d^2*k*n^2*u^16*y^2+768*d^2*k*n^2*u^14*y^2-1280*d^2*k*n
^2*u^12*y^2+4608*d^2*k*n^2*u^10*y^2-8256*d^2*k*n^2*u^8*y^2+8448*d^2*k*n^2*u^6*y^
2-4352*d^2*k*n^2*u^4*y^2+4608*d^2*k*n^2*u^2*y^2+64*c^2*d^2*u^2*y^2*(-2*u^2)^2+32
*c^2*d^2*k*u^10*y^2-128*c^2*d^2*k*u^8*y^2+128*c^2*d^2*k*u^6*y^2-256*c^2*d^2*k*u^
4*y^2+96*c^2*d^2*k*u^2*y^2+2*c^2*k*n^2*u^2*(-2*u^2)^2+32*c^2*d*n*u^10*y-128*c^2*
d*n*u^8*y+128*c^2*d*n*u^6*y-256*c^2*d*n*u^4*y+96*c^2*d*n*u^2*y-64*d*n^3*u^8*y*(-
2*u^2)^2+256*d*n^3*u^6*y*(-2*u^2)^2-256*d*n^3*u^4*y*(-2*u^2)^2+512*d*n^3*u^2*y*(
-2*u^2)^2+32*d*n*x^2*y*(-2*u^2)^2+32*d*n*u^8*x^2*y-128*d*n*u^6*x^2*y+128*d*n*u^4
*x^2*y-256*d*n*u^2*x^2*y-16*d*k*n^3*u^16*y+128*d*k*n^3*u^14*y-384*d*k*n^3*u^12*y
+768*d*k*n^3*u^10*y-1376*d*k*n^3*u^8*y+1408*d*k*n^3*u^6*y-1408*d*k*n^3*u^4*y+768
*d*k*n^3*u^2*y-16*d*k*n^3*y*(-2*u^2)^4-96*d*k*n^3*y*(-2*u^2)^2+48*d*k*n*x^2*y-16
*d*k*n*u^8*y+64*d*k*n*u^6*y-64*d*k*n*u^4*y+128*d*k*n*u^2*y-16*d*k*n*y*(-2*u^2)^2
+8*c*n^2*u*x*(-2*u^2)^2+128*c*d^2*u^9*x*y^2-512*c*d^2*u^7*x*y^2+512*c*d^2*u^5*x*
y^2-1024*c*d^2*u^3*x*y^2+384*c*d^2*u*x*y^2+4*c*k*n^2*u^9*x-16*c*k*n^2*u^7*x+16*c
*k*n^2*u^5*x-32*c*k*n^2*u^3*x+12*c*k*n^2*u*x-2*g^2*h*j*k^3-12*g^2*h*j*k^2-24*g^2
*h*j*k-1024*d^4*u^8*y^4*(-2*u^2)^2+4096*d^4*u^6*y^4*(-2*u^2)^2-4096*d^4*u^4*y^4*
(-2*u^2)^2+8192*d^4*u^2*y^4*(-2*u^2)^2-256*d^4*k*y^4*(-2*u^2)^4-1536*d^4*k*y^4*(
-2*u^2)^2-256*d^4*k*u^16*y^4+2048*d^4*k*u^14*y^4-2048*d^4*k*u^12*y^4+12288*d^4*k
*u^10*y^4-22016*d^4*k*u^8*y^4+22528*d^4*k*u^6*y^4-6144*d^4*k*u^4*y^4+12288*d^4*k
*u^2*y^4-512*d^3*n*y^3*(-2*u^2)^4-3072*d^3*n*y^3*(-2*u^2)^2-512*d^3*n*u^16*y^3+
4096*d^3*n*u^14*y^3-12288*d^3*n*u^12*y^3+24576*d^3*n*u^10*y^3-44032*d^3*n*u^8*y^
3+45056*d^3*n*u^6*y^3-45056*d^3*n*u^4*y^3+24576*d^3*n*u^2*y^3-2304*d^3*k*n*y^3+
64*d^2*x^2*y^2*(-2*u^2)^2+64*d^2*u^8*x^2*y^2-256*d^2*u^6*x^2*y^2+256*d^2*u^4*x^2
*y^2-512*d^2*u^2*x^2*y^2-192*d^2*n^2*y^2*(-2*u^2)^4-1152*d^2*n^2*y^2*(-2*u^2)^2-
192*d^2*n^2*u^16*y^2+1536*d^2*n^2*u^14*y^2-2560*d^2*n^2*u^12*y^2+9216*d^2*n^2*u^
10*y^2-16512*d^2*n^2*u^8*y^2+16896*d^2*n^2*u^6*y^2-8704*d^2*n^2*u^4*y^2+9216*d^2
*n^2*u^2*y^2-32*d^2*k*y^2*(-2*u^2)^2+96*d^2*k*x^2*y^2-32*d^2*k*u^8*y^2+128*d^2*k
*u^6*y^2-128*d^2*k*u^4*y^2+256*d^2*k*u^2*y^2-864*d^2*k*n^2*y^2-4*c^3*k*u^3*x+4*c
^2*n^2*u^2*(-2*u^2)^2+64*c^2*d^2*u^10*y^2-256*c^2*d^2*u^8*y^2+256*c^2*d^2*u^6*y^
2-512*c^2*d^2*u^4*y^2+192*c^2*d^2*u^2*y^2-2*c^2*k*u^2*x^2+2*c^2*k*n^2*u^10-8*c^2
*k*n^2*u^8+8*c^2*k*n^2*u^6-16*c^2*k*n^2*u^4+6*c^2*k*n^2*u^2+96*k*r^2*u^2*y^4-2*k
*p^3*s*y+6*k*p^2*s*y-2*k*p^2*s*x+2*k*p^2*q*s+18*k*o^2*exp(1)*exp(3)-2*k*n^4*u^8*
(-2*u^2)^2+8*k*n^4*u^6*(-2*u^2)^2-8*k*n^4*u^4*(-2*u^2)^2+16*k*n^4*u^2*(-2*u^2)^2
+2*k*n^2*x^2*(-2*u^2)^2+2*k*n^2*u^8*x^2-8*k*n^2*u^6*x^2+8*k*n^2*u^4*x^2-16*k*n^2
*u^2*x^2+2*k*q*w*z-2*k*p*l(-p+2)*t(-p^2+4*p-1)-2*k*p*z*l(-p+2)-2*k*p*x*y+4*k*p*s
*x+2*k*p*q*y-4*k*p*q*s+2*k*m*p^2*l(-p+2)+2*k*m*p*t(-p^2+4*p-1)+2*k*m*p*z+2*k*l*n
*p-2*k*l*m*n-2*j*k*w*z-2*h*k*w*z+2*g*j*k^2*z+8*g*j*k*z+2*g*h*k^2*z+8*g*h*k*z-4*g
*h*j*k^3-22*g*h*j*k^2-40*g*h*j*k-32*d*n^3*u^16*y+256*d*n^3*u^14*y-768*d*n^3*u^12
*y+1536*d*n^3*u^10*y-2752*d*n^3*u^8*y+2816*d*n^3*u^6*y-2816*d*n^3*u^4*y+1536*d*n
^3*u^2*y-32*d*n^3*y*(-2*u^2)^4-192*d*n^3*y*(-2*u^2)^2+96*d*n*x^2*y-32*d*n*u^8*y+
128*d*n*u^6*y-128*d*n*u^4*y+256*d*n*u^2*y-32*d*n*y*(-2*u^2)^2-144*d*k*n^3*y-48*d
*k*n*y+8*c*n^2*u^9*x-32*c*n^2*u^7*x+32*c*n^2*u^5*x-64*c*n^2*u^3*x+24*c*n^2*u*x-4
*c*k*u*x^3+4*c*k*u*x+2*b*k*n^2*p-4*b*k*n*p-2*b*k*m*n^2+4*b*k*m*n-2*b*k*l*n^3+6*b
*k*l*n^2-(-c^2)^2*k*u^4+192*r^2*u^2*y^4-4*p^3*s*y+12*p^2*s*y-4*p^2*s*x+4*p^2*q*s
+36*o^2*exp(1)*exp(3)-4*n^4*u^8*(-2*u^2)^2+16*n^4*u^6*(-2*u^2)^2-16*n^4*u^4*(-2*
u^2)^2+32*n^4*u^2*(-2*u^2)^2+4*n^2*x^2*(-2*u^2)^2+4*n^2*u^8*x^2-16*n^2*u^6*x^2+
16*n^2*u^4*x^2-32*n^2*u^2*x^2-g^2*j^2*k^3-6*g^2*j^2*k^2-12*g^2*j^2*k-g^2*h^2*k^3
-6*g^2*h^2*k^2-12*g^2*h^2*k-16*g^2*h*j+32*f^2*k^5*n^2+64*f^2*k^5*n+224*f^2*k^4*n
^2+448*f^2*k^4*n+608*f^2*k^3*n^2+1216*f^2*k^3*n+800*f^2*k^2*n^2+1600*f^2*k^2*n+
512*f^2*k*n^2+1024*f^2*k*n-512*d^4*y^4*(-2*u^2)^4-3072*d^4*y^4*(-2*u^2)^2-512*d^
4*u^16*y^4+4096*d^4*u^14*y^4-4096*d^4*u^12*y^4+24576*d^4*u^10*y^4-44032*d^4*u^8*
y^4+45056*d^4*u^6*y^4-12288*d^4*u^4*y^4+24576*d^4*u^2*y^4-2304*d^4*k*y^4-4608*d^
3*n*y^3-64*d^2*y^2*(-2*u^2)^2+192*d^2*x^2*y^2-64*d^2*u^8*y^2+256*d^2*u^6*y^2-256
*d^2*u^4*y^2+512*d^2*u^2*y^2-1728*d^2*n^2*y^2-96*d^2*k*y^2-8*c^3*u^3*x-4*c^2*u^2
*x^2+4*c^2*n^2*u^10-16*c^2*n^2*u^8+16*c^2*n^2*u^6-32*c^2*n^2*u^4+12*c^2*n^2*u^2+
2*c^2*k*u^2-b^2*k*(-n^2)^2+4*b^2*k*n^3-8*b^2*k*n+4*q*w*z-4*p*l(-p+2)*t(-p^2+4*p-
1)-4*p*z*l(-p+2)-4*p*x*y+8*p*s*x+4*p*q*y-8*p*q*s+4*m*p^2*l(-p+2)+4*m*p*t(-p^2+4*
p-1)+4*m*p*z+4*l*n*p-4*l*m*n-18*k*exp(1)*exp(3)-324*k*exp(1)*exp(3)^2-81*k*exp(1
)^2*exp(3)^2+k*z^2*(-w^2-1-1)+k*y^2*(-(-p)^2-6-1)+6*k*x^2*y^2+k*s^2*(-(-p^2)^2-4
)-2304*k*r^4*y^8-96*k*r^2*y^4+4*k*p^3*s^2+k*p^2*(-(-m)^2-1-1)-k*p^2*(l(-p+2))^2+
36*k*o^2*exp(3)-k*n^4*(-2*u^2)^4-6*k*n^4*(-2*u^2)^2-k*n^4*u^16+8*k*n^4*u^14-8*k*
n^4*u^12+48*k*n^4*u^10-86*k*n^4*u^8+88*k*n^4*u^6-24*k*n^4*u^4+48*k*n^4*u^2-2*k*n
^2*(-2*u^2)^2+6*k*n^2*x^2-2*k*n^2*u^8+8*k*n^2*u^6-8*k*n^2*u^4+16*k*n^2*u^2-k*l^2
*(-n)^2+6*k*l^2*m^2+2*k*l^2*n-2*k*z*t(-p^2+4*p-1)+2*k*z*exp(1)+2*k*x*y+2*k*v*y-4
*k*s*y+4*k*s*x+2*k*q*exp(1)-2*k*q*z-2*k*q*y+2*k*q*x-4*k*q*s+2*k*p*exp(1)+2*k*p*y
^2-8*k*p*s^2-2*k*p*z-2*k*p*q+4*k*n*exp(1)-4*k*n*z+2*k*n*y-2*k*n*v-4*k*n*q-4*k*n*
p+2*k*m*p+2*k*l*y-2*k*l*v-2*k*l*p-2*k*l*n+2*k*l*m+2*j*k^2*z-4*j*w*z+6*j*k*z+2*j*
k*q+2*h*k^2*z-4*h*w*z+8*h*k*z+2*h*k*q-2*h*j*k^3-10*h*j*k^2-18*h*j*k-2*g*j^2*k^3-
10*g*j^2*k^2-16*g*j^2*k-2*g*h^2*k^3-12*g*h^2*k^2-24*g*h^2*k+8*g*j*z+8*g*h*z-24*g
*h*j-288*d*n^3*y-96*d*n*y-8*c*u*x^3+8*c*u*x+4*b*n^2*p-8*b*n*p-4*b*m*n^2+8*b*m*n-
4*b*l*n^3+12*b*l*n^2-4*b*k*p+4*b*k*m-4*b*k*l-36*exp(1)*exp(3)-648*exp(1)*exp(3)^
2-162*exp(1)^2*exp(3)^2+(-(-f^2)^2)*k-2*(-c^2)^2*u^4+2*z^2*(-w^2-1-1)+2*y^2*(-(-
p)^2-6-1)+12*x^2*y^2+2*s^2*(-(-p^2)^2-4)-4608*r^4*y^8-192*r^2*y^4+8*p^3*s^2+2*p^
2*(-(-m)^2-1-1)-2*p^2*(l(-p+2))^2+72*o^2*exp(3)-2*n^4*(-2*u^2)^4-12*n^4*(-2*u^2)
^2-2*n^4*u^16+16*n^4*u^14-16*n^4*u^12+96*n^4*u^10-172*n^4*u^8+176*n^4*u^6-48*n^4
*u^4+96*n^4*u^2-4*n^2*(-2*u^2)^2+12*n^2*x^2-4*n^2*u^8+16*n^2*u^6-16*n^2*u^4+32*n
^2*u^2-2*l^2*(-n)^2+12*l^2*m^2+4*l^2*n-256*k^9*n^4-1024*k^9*n^3-1536*k^9*n^2-
1024*k^9*n-3072*k^8*n^4-12288*k^8*n^3-18432*k^8*n^2-12288*k^8*n-16128*k^7*n^4-
64512*k^7*n^3-96768*k^7*n^2-64512*k^7*n-48640*k^6*n^4-194560*k^6*n^3-291840*k^6*
n^2-194560*k^6*n-92928*k^5*n^4-371712*k^5*n^3-557600*k^5*n^2-371776*k^5*n-116736
*k^4*n^4-466944*k^4*n^3-700640*k^4*n^2-467392*k^4*n+k^3*(-j^2-h^2-22048-1)-96512
*k^3*n^4-386048*k^3*n^3-579680*k^3*n^2-387264*k^3*n+2*k^2*(-j^2-h^2-22048-1)-
50688*k^2*n^4-202752*k^2*n^3-304928*k^2*n^2-204352*k^2*n+2*k^2*l-2*j^2*k^2-6*j^2
*k-4*h^2*k^2-13*h^2*k-8*g^2*j^2-8*g^2*h^2+128*f^2*n^2+32*f^2*k^5+224*f^2*k^4+608
*f^2*k^3+800*f^2*k^2+256*f^2*n+514*f^2*k-4608*d^4*y^4-192*d^2*y^2+4*c^2*u^2-2*b^
2*(-n^2)^2+8*b^2*n^3-16*b^2*n-4*b^2*k-4*z*t(-p^2+4*p-1)+4*z*exp(1)+4*x*y+4*v*y-8
*s*y+8*s*x+4*q*exp(1)-4*q*z-4*q*y+4*q*x-8*q*s+4*p*exp(1)+4*p*y^2-16*p*s^2-4*p*z-
4*p*q+8*n*exp(1)-8*n*z+4*n*y-4*n*v-8*n*q-8*n*p+4*m*p+4*l*y-4*l*v-4*l*p-4*l*n+4*l
*m-36*k*exp(3)+(-k)*(t(-p^2+4*p-1))^2-324*k*exp(3)^2+(-k)*(-64*d*n*u^2*y)^2+(-k)
*(-32*d*n*u^6*y)^2+(-k)*(-128*d^2*u^2*y^2)^2+(-k)*(-64*d^2*u^6*y^2)^2+(-k)*(-2*c
*u*x)^2+(-k)*(-8*n^2*u^2)^2+(-k)*(-4*n^2*u^6)^2+(-k)*(-exp(1))^2-2*k*(-x^2)^2+(-
k)*(-u^2)^2+(-k)*(-o^2)^2+(-k)*(-m^2)^2+(-k)*(-z)^2+(-k)*(-y)^2+(-k)*(-x)^2+(-k)
*(-q)^2+(-k)*(-m)^2+(-k)*(-l)^2-9*k*y^4+4*k*x^2+(-k)*v^2+2*k*u^2-2*k*q^2+2*k*o^2
-15369*k*n^4-61440*k*n^3-92683*k*n^2+2*k*m^2-9*k*l^4-8*k*l^2-62464*k*n+(6+2*i)*k
*l+4*j*z+4*j*q+8*h*z+4*h*q-12*h*j-8*g*j^2-16*g*h^2-8*b*p+8*b*m-8*b*l-72*exp(3)-2
*(t(-p^2+4*p-1))^2-648*exp(3)^2-2*(-64*d*n*u^2*y)^2-2*(-32*d*n*u^6*y)^2-2*(-128*
d^2*u^2*y^2)^2-2*(-64*d^2*u^6*y^2)^2-2*(-2*c*u*x)^2-2*(-8*n^2*u^2)^2-2*(-4*n^2*u
^6)^2-2*(-exp(1))^2-4*(-x^2)^2-2*(-u^2)^2-2*(-o^2)^2-2*(-m^2)^2-2*(-f^2)^2-2*(-z
)^2-2*(-y)^2-2*(-x)^2-2*(-q)^2-2*(-m)^2-2*(-l)^2-18*y^4+8*x^2-2*v^2+4*u^2-4*q^2+
4*o^2-2066*n^4-8192*n^3-12438*n^2+4*m^2-18*l^4-16*l^2-256*k^9-3072*k^8-16128*k^7
-48640*k^6-92960*k^5-116960*k^4-75072*k^3+(-7394-2*i)*k^2-4*j^2-10*h^2+132*f^2-8
*b^2-8448*n+(4+4*i)*l+(-15881-6*i)*k-2186-4*i

Tags de l'article :

Une fourmi heureuse et productive

01/10/2011 - Commentaires fermés

Il était une fois , une fourmi heureuse et productive qui tous les jours arrivait de bonne heure à son travail. Elle passait toute sa journée à travailler dans la joie et la bonne humeur, poussant même la chansonnette. Elle était heureuse de travailler et son rendement était excellent mais, malheur !, elle n'était pas pilotée par un manager...

Le frelon, PDG de l'entreprise, considérant qu'il n'était pas possible que la situation puisse perdurer, créa un poste de manager pour lequel il recruta une coccinelle avec beaucoup d'expérience.

La première préoccupation de la Coccinelle fut d'organiser les horaires d'entrée et de sortie de la fourmi. Elle créa également un système de compte-rendu et de fiches navettes. Très vite, il fallut engager une secrétaire pour l'aider à préparer les dossiers et le reporting, si bien qu'elle recruta une araignée qui mis sur pied un système de classement et qui fut chargée de répondre au téléphone.

Pendant ce temps là, la fourmi heureuse et productive continuait de travailler, travailler, travailler. Le frelon, PDG de l'entreprise, était ravi de recevoir les rapports de la coccinelle, si bien qu'il lui demanda des études comparatives avec graphiques, indicateurs et analyse de tendance. Il fallut donc embaucher un cafard pour assister le manager et il fallut acheter un nouvel ordinateur avec une imprimante.

Assez vite, la fourmi heureuse et productive commença à baisser de rythme et à se plaindre de toute la paperasserie qui lui est dorénavant imposée. Le frelon, PDG de l'entreprise, considéra qu'il était temps de prendre des mesures. Il créa donc le poste de chef de service pour superviser la fourmi heureuse et productive.

Le poste fut pourvu par une cigale qui changea tous le mobilier de son bureau et qui demanda un nouveau fauteuil ergonomique ainsi qu'un nouvel ordinateur avec écran plat. Seulement, avec plusieurs ordinateurs, il fallut aussi installer un serveur réseau. Le nouveau chef de service ressenti rapidement le besoin de recruter un adjoint (qui était son assistant dans son ancienne entreprise) afin de préparer un plan stratégique de pilotage ainsi que le budget de son nouveau service. Pendant ce temps-là, la fourmi était de moins en moins heureuse et de moins en moins productive.

« Il va nous falloir bientôt commander une étude sur le climat social », dit la cigale.

Mais, un jour, le frelon, PDG de l'entreprise, en examinant les chiffres, se rendit compte que le service dans lequel la fourmi heureuse et productive travaille n'était plus aussi rentable qu'avant. Il eut donc recours aux services d'un prestigieux consultant, M. Hibou, afin qu'il fasse un diagnostic et qu'il apporte des solutions. Le hibou fit une mission de trois mois dans l'entreprise à l'issue de laquelle il rendit son rapport : « il y a trop de personnel dans ce service ». Le Frelon, PDG de l'entreprise, suivit ses recommandations et... licencia la fourmi !

Moralité

Ne t'avise jamais d'être une fourmi heureuse et productive. Il vaut mieux être incompétent et ne servir à rien. Les incompétents n'ont pas besoin de superviseur, à quoi cela servirait puisque tout le monde le sait ! Si malgré tout, tu es productif, ne montre pas que tu es heureux au travail, on ne te le pardonnerait pas.

Si tu t'obstines à être une fourmi heureuse et productive, monte ta propre entreprise : au moins tu n'auras pas à faire vivre les frelon, coccinelle, araignée, cigale, hibou et autre cafard.

Lamentablement, tout ceci est basé sur des études scientifiques universitaires qui démontrent que la majorité des être humains tendent à devenir des parasites...

© Auteur inconnu

Tags de l'article :

Neŭtrinoj je 300006 km/s

30/09/2011 - Commentaires fermés

Ĵurnalistoj nekredeblas! Kutime ili redaktas artikolojn pli proksimajn de feko ol miaj sidvangoj... Tamen nun, mi eĉ sentas ion, tro proksiman.

Aperis artikoloj pri eblo malveriĝo de la speciala teorio de relativeco de Ajnŝtajn. Pro tio ke kelkaj neŭtrinoj iris pli rapide ol la lumo. La teorio postulas tion, ke ne eblas iris pli rapide ol la lumo. Ĉu neŭtrinoj esceptoj? Mi ne scias nun, nek ĵurnalistoj.

Rapideco de lumo estas ekzakte 299 792 458 metroj posekunde. Ĉar ĝi estas limo por ĉiuj, oni nomas ĝin unuvorte: lumrapido. kompreneble, oftas nombro 300 000 000. Ĉiutage tio sufiĉas, eĉ al ĵurnalistoj, krom nun.

Raportoj pri tiu afero certigas ke neŭtrinoj superpaŝis lumon, je 6 km/s, serioze kaj precize. Sed, ĵurnalistoj diris tion: neŭtrinoj iris je 300 000 006 km/s ĉar luma rapideco egalas al 300 000 000 km/s.

Jen kelkaj hontigaj artikoloj per gugla serĉo: https://encrypted.google.com/search?q=neutrino+300006&ie=utf-8&oe=utf-8
Speciala teorio de relativeco: https://secure.wikimedia.org/wikipedia/eo/wiki/Speciala_teorio_de_relativeco

Tags de l'article :

For how many states, there's more than one Googolplex of turing machines?

27/09/2011 - Commentaires fermés

This is a great way to enter the world of great numbers, with a bit of theory and practical sort of innovation...

Main terms

What is a Turing Machine?

A Turing Machine is a very simple computer which was designed by Alain Turing in 1936. A Turing Machine is described by states, each states pointing to other states according to some conditions. You may read a bit more about Turing machines in order to fell all the taste of this article.

What are Googol and Googolplex ?

A Googol is a number represented by 1 followed by 100 zeroes. That is, 10^100. A Googolplex is 10 power Googol - that is, a number represented by 1 followed by a Googol of zeroes : 10^(10^100). Somewhat huge.

What is the Log function ?

The Log function approximatively gives the number of digits of a number. It's the reciprocal function of y = 10^x. So, x = Log(y). This function is important here because of one of its main properties. It turns multiplications into additions. So, the calculations will involve far less huge numbers.

So what?

A resolution

The question is: how many states do I need to be able to build one Googolplex Turing Machines? Winter's cold, brain's hot.

The Turing Machine considered here is the more simple one: two different values and two different directions. Two values and two directions make 4 possibilities. To this, let's add the number of possible jumps: k+1 if there's k states. The +1 is due to the terminal state. So, we've got 4*(k+1) possibilities for a given value. A state having two values (0 or 1), it's (4*(k+1))^2 each state. As there is k different states, we get: (4*(k+1))^(2*k).

The problem is that this expression is obviously over k^k and that the question becomes:

k | (4*(k+1))^(2*k) >= 10^(10^100)

I must admit that I didn't have any clue on how to cleanly solve this. Trying as many values of k as possible is hopeless. Here comes the Log. As a strickly growing function the order between the left part and right part is unchanged by the Log:

k | Log( (4*(k+1))^(2*k) ) >= Log ( 10^(10^100) )
So, k | 2*k * Log( 4*(k+1) ) >= 10^100
So, k | 2*k * (Log(4) + Log(k+1)) >= 10^100

Let's Log again:
k | Log(2) + Log(k) + Log(Log(4) + Log(k+1)) >= 100

Now, it's just about using Log(k) and Log(k+1) against 100. I'm sure that it's feasible, but let's do it by a program.

The program

The program, in the Python language, browse the values using an exponential scale. Once it gets over, then it turns back a try a 10th less scale. And so on until the Log of the Log of the number of possible Turing Machines reaches 100. The formatting disappears there, I replaced tabs by underscores.

# Python
# -*- coding: utf-8 -*-

# For how many states, there's more than one gogolplex of turing machines?

from math import log

def logLogNbTuring(k): return log(2.0*k,10)+log(log(4.0,10)+log(k+1.0,10),10)

# A value of 100 means that we're searching for a number of machines greater than 10^(10^100), more than a gogolplex.
nbTenPowerTen = 100

step = 1
while logLogNbTuring(step) step /= 10
print "log(step,10) set to %i" % log(step,10)

i = 1
belowValue = i
while (step>=1):
_if logLogNbTuring(i)>=nbTenPowerTen:
__i = belowValue
__step /= 10
_belowValue = i
_i+=step

# belowValue contains the last value before the limit, so add 1 to get over the limit
i = belowValue + 1
print "nbTenPowerTen=%i, solution=%i" % (nbTenPowerTen, i)
print "log(solution,10)=%f" % log(i,10)

The result

answer = 50 860 333 466 396 650 825 817 657 241 650 242 602 634 644 785 968 021 580 236 147 821 863 292 723 816 479 721 264 913 714 249 728
I think that because of rounds that this number is not strictly the exact solution. But that's not the point: Log(answer) = 97.70 means that answer almost equals 10^100, a Googol.

A Turing machine with almost one Googol states means one Googolplex possibility of Turing machines.

Tags de l'article :

No UUOC

01/11/2008 - Commentaires fermés

$ date
novembre 2008

$ echo "pousse !" > /dev/maman/tête
bash: /dev/maman/tête: Aucun fichier ou répertoire de ce type

$ echo "pousse !!" > /dev/maman/oreille
bash: /dev/maman/oreille: Permission non accordée

$ sudo echo "pousse !!!" > /dev/maman/oreille
[sudo] password for papa: S'il te plaît :-)

$ ls -l `which dd`
-r-xr-xr-x dd -> /mnt/clinique/personnel/sage-femme

$ dd if=/dev/maman/uterus of=/tmp/bebe bs=~4kg count=1
1+0 enregistrements lus
1+0 enregistrements écrits
>3kg born, 1 day, ~50cm

$ mv /tmp/bebe /tmp/fiston

$ cut -d'|' -f 1 /tmp/fiston|xargs rm
Cordon coupé !

$ mv -v /tmp/fiston /dev/papa/bras
`/tmp/fiston' -> `/dev/papa/bras' (warning: sound file)

$ cat /dev/papa/bras/fiston
OuuuuuuiiiiiIiiIiiIiiiinnnnn

Tags de l'article :