A time evolution picture of packages built in parallel by Sage

16 décembre 2016 | Catégories: sage | View Comments

Compiling sage takes a while and does a lot of stuff. Each time I am wondering which components takes so much time and which are fast. I wrote a module in my slabbe version 0.3b2 package available on PyPI to figure this out.

This is after compiling 7.5.beta6 after an upgrade from 7.5.beta4:

sage: from slabbe.analyze_sage_build import draw_sage_build
sage: draw_sage_build().pdf()
/Files/2016/sage_build.png

From scratch from a fresh git clone of 7.5.beta6, after running MAKE='make -j4' make ptestlong, I get:

sage: from slabbe.analyze_sage_build import draw_sage_build
sage: draw_sage_build().pdf()
/Files/2016/sage_build_from_scratch.png

The picture does not include the start and ptestlong because there was an error compiling the documentation.

By default, draw_sage_build considers all of the logs files in logs/pkgs but options are available to consider only log files created in a given interval of time. See draw_sage_build? for more info.

Read and Post Comments

25 solutions pour valoriser la mobilité douce à Liège

25 septembre 2016 | Mise à jour: 04 octobre 2016 | Catégories: urbanisme | View Comments

Connaissez-vous Janette Sadik-Khan?

/Files/2016/janette-sadik-khan.jpg

C'est celle qui a transformé les rues de New York sous l'administration Bloomberg dont Times Squares où elle pose au milieu de la rue, ce qui aurait été impossible il y a une dizaine d'années.

Elle a emménagé une centaine d'intersections et autres lieux à New York en les rendant plus agréables pour les piétons et cyclistes comme l'avenue Webster dans le Bronx (images avant/après ci-bas) et aussi ailleurs dans le monde. Remarquez, notamment, qu'un passage piéton a été ajouté là où il n'y en avait pas.

On peut regarder d'autres transformations de rues qu'elle a effectuée sur son site web. Dans son livre, elle explique qu'avec un petit pourcentage du budget du transport de la ville de New York, elle est parvenue à faire de grandes améliorations pour la mobilité dans la métropole. Pas de béton dans son budget, mais plutôt des centaines de pots de peinture, des chaises, des tables, des pots de fleurs, etc.

C'est ce qui me fait croire qu'à Liège aussi, on pourrait améliorer de beaucoup la mobilité, avec un faible budget, en emménageant plusieurs rues qui en ont besoin. Améliorer la mobilité à Liège, est-ce que ça consiste à attendre que les méga projets à dizaines ou centaines de millions d'euros de tramway se réalisent? Aussi bien attendre que les poules aient des dents pendant la semaine des quatre jeudis... Concrètement, je pense qu'améliorer la mobilité à Liège à court terme, ça peut aussi consister en une centaine de petites améliorations ici et là dans la ville pour les piétons, les cyclistes et personnes à mobilité réduites.

À guise d'exemples, en ce jour du 25 septembre, journée sans voiture dans Paris, je dresse dans ce texte une liste de 25 solutions pour améliorer l'utilisation de l'espace public à des fins de mobilité douce à Liège. Je me concentre sur une infime partie des rues et quartiers liégeois, ceux que j'ai fréquentés plusieurs centaines de fois en les utilisant quotidiennement depuis bientôt 2 ans. Ce sera ma façon de contribuer à la semaine de la mobilité qui vient d'avoir lieu en Wallonie et dans toute l'Europe.

/Files/2016/semainemob.jpg

... justement, le logo de la semaine de mobilité est bien choisi. La moitié de mes suggestions concernent les passages pour piétons.

A) Marcher le long de la Meuse: à la recherche du passage piéton perdu

Tout d'abord, commençons par les passages piétons aux abords de la Meuse donc souvent situées près d'une trémie (tunnel pour les voitures).

Voici cinq endroits où je suggère d'ajouter le passage piéton qui manque.

/Files/2016/pont_kennedy_modif.jpg /Files/2016/chiroux3_modif.jpg /Files/2016/quai_de_rome_fragnee_modif.jpg /Files/2016/condroz_glossener_modif.jpg /Files/2016/gramme_modif.jpg

B) Quelques lignes de désirs pour traverser la rue

C'est en marchant dans Liège qu'on se rend compte à quel point la trajectoire piétonne naturellement désirée ne correspond que très rarement à ce qui est suggéré par les aménagements urbains. A-t-on trop tenté de respecter le Guide des traversées piétonnes écrit par Autoroutes et routes de Wallonie? Pour équilibrer les choses, je pense qu'il faudrait aussi rédiger et respecter un Guide des routes et autoroutes fait par les Trottoirs, cyclistes et passages piétons de Wallonie...

Voici sept endroits où je suggère d'ajouter le ou les passages piétons qui manquent.

/Files/2016/saint_pholien_modif.jpg /Files/2016/place_du_marche_modif.jpg /Files/2016/puits_en_sock-de_heers_modif.jpg /Files/2016/en_neuvice_modif.jpg /Files/2016/blvd_constitution_modif.jpg /Files/2016/acces_parc_avroy_modif.jpg /Files/2016/rouleau_louis_jamme_modif.jpg

Quand je suis allé visiter le Musée des Transports en commun de Wallonie à Liège, j'ai été agréablement surpris par les lectures que j'y ai trouvées. Notamment par la page 37 du livre Vers une marche plaisir en ville que j'avais prise en photo tellement je me sentais moins seul en la lisant:

/Files/2016/traverser_la_rue.jpg

C) Rendre la vie plus agréable aux piétons

Voici cinq endroits où la vie pourraient être rendue plus agréable pour les piétons.

/Files/2016/puits_en_sock-roture_modif.jpg /Files/2016/saucy-chaussee-des-pres-modif.jpg /Files/2016/pont_des_arts2_modif.jpg /Files/2016/place_de_la_cathedrale_modif.jpg /Files/2016/sart_tilman_modif.jpg

D) Rendre le Ravel exclusif aux piétons dans Outremeuse

Dans Outremeuse, le Ravel est très populaire. Le problème est qu'il n'est pas assez large pour bien jouer son rôle. Je crois sincèrement que la solution est de réserver le Ravel aux piétons dans toute l'île d'Outremeuse en créant une piste cyclable parallèle à la Ravel actuelle dans toute l'île. Cela pourrait être fait au coût de quelques stationnements en moins et d'une piste cyclable qui contournerait le Palai des Congrès à partir du pont Albert 1er en suivant la rue du Parc jusqu'au parc de la Boverie.

Concrètement, voici cinq sections de la Ravel à améliorer dans Outremeuse du nord au sud.

/Files/2016/quai_van_beneden_modif.jpg /Files/2016/velo_tremie_pont_kennedy_modif.jpg /Files/2016/quai_marcellis_modif.jpg /Files/2016/velo_pont_albert_1er_modif.jpg /Files/2016/quai_mativa_modif.jpg

E) Créer d'autres pistes cyclables

Le Ravel ne doit pas être le seul axe cyclable dans Liège. D'autres trajectoires cyclables sont désirables. Notamment, en voici deux.

/Files/2016/avenue_rogier_modif.jpg /Files/2016/place_cockerill2_modif.jpg

Je donne crédits à Google maps dans la création des 25 images.

Histoire d'un reconquête piétonne: l'échangeur Parc / des pins à Montréal

Construit en 1962, l'échangeur Parc-des Pins constituait un enchevêtrement de spaghettis de bétons qui brisait le lien le lien entre le centre-ville, le Mont-Royal et le stade de l'Université McGill aux cyclistes et aux piétons. Pour éviter un long détour désagréable de plusieurs minutes, je me rappelle que l'on devait sauter les murets de béton qui bloquaient les accès entre la rue Duluth et le mont-Royal. Il fallait faire attention (surtout l'hiver avec la glace et la neige), car les voitures roulaient à plus de 60 km/h dans la descente. C'était dangereux. À vrai dire, j'évitais le quartier...

Après une vingtaine d'années de mobilisation par les étudiants (lire un historique ici) et les habitants du quartier, l'échangeur a été démoli en 2005-2006. Il a été remplacé par deux simples intersections incluant des trottoirs, des pistes cyclables et des feux de circulation. Et surtout, tout est en 2D.

Montréal continue dans cette voie. Cet été, j'ai pu voir que l'autoroute Bonaventure qui longe le fleuve St-Laurent qui mène au centre-ville est en train d'être démolie. Elle sera remplacée par un boulevard avec des pistes cyclables au centre. On peut suivre le Projet Bonaventure sur le web. J'ai hâte de voir le résultat.

/Files/2016/autoroute_bonaventure.jpg

En circulation, il semble que les gains obtenus par l'utilisation de la 3e dimension afin d'améliorer les croisements de circulation ne valent pas la peine. Les cicatrices urbaines laissées par les bretelles, tunnels, voies d'accès, trémies et surtout les espaces qu'ils nécessitent dans les deux premières dimensions constituent des pertes grandement plus importantes. Dans le centre-ville de Liège, les piétons et cyclistes en paient le prix.

À Liège, il y a de nombreux exemples où le remplacement des trémies par des intersection en 2D serait la meilleure option dans le centre de la ville. Mais cela coûte cher à défaire, et je crois que la ville n'est pas encore rendue là. Elle le sera lorsque la démolition sera la solution moins chère que les autres dans 20, 30 ou 40 ans. Mais en attendant, il y a plein de petites améliorations peu coûteuses qui pourraient être effectuées. J'ai tenté par ce texte d'en suggérer quelques-unes qui me sont venues à l'esprit pendant mon séjour à Liège.

Les trajectoires désirées

Et pas la peine de regarder de l'autre côté de l'océan pour s'inspirer, il y a pas trop loin de Liège, et aussi à Liège, des gens qui ont développé cette réflexion et qui même offrent des Coaching packages pour accompagner les villes dans ce processus d'amélioration de la mobilité. Parmi les projets du groupe copenhagenize.eu dirigé par Mikael Colville-Andersen, je mentionne celui des trajectoires désirées par les cyclistes et piétons dans diverses intersections. Il doit bien y avoir des principes mathématiques dans tout ça:) Un jour, j'étudierai cela de plus près... à suivre.

Read and Post Comments

Conférence sur les pavages

27 juin 2016 | Catégories: math | View Comments

Récemment, j'ai manqué quelques entraînements d'ultimate à Liège, car je participais à une conférence sur les pavages en France. "Les pavages?" me demande Maïté qui vient de commencer des travaux dans sa nouvelle maison. Et oui, les pavages! Mais pourquoi s'intéresser aux pavages?

Les pavages sont utiles en chimie et en physique, car ils permettent de modéliser mathématiquement le placement des atomes et molécules dans l'espace. Dans un cristal, les atomes sont placés de manière périodique comme la plupart des pavages utilisés dans les salles de bain de nos maisons.

Dans les années 80, Daniel Schechtman, un chercheur en chimie, a découvert des cristaux qui n'ont pas de structure périodique. Au début et pendant plusieurs années, ses collègues ne l'ont pas cru. Il a finalement obtenu le prix Nobel de Chimie en 2011 pour sa découverte.

Or on connaissait depuis les années 70 des pavages apériodique du plan. Les plus connus sont les pavages de Penrose qui ont plusieurs variantes. Avec la découverte des quasi-cristaux, les pavages apériodiques ont continué de susciter l'intérêt des chercheurs jusqu'à aujourd'hui...

Quelques liens:

Read and Post Comments

Réponse à une question de Christian Lemay

02 avril 2016 | Catégories: math | View Comments

Mon ami Christian Lemay, créateur de jeux de sociétés, a récemment posé la question suivante:

Amis mathématiciens...
J'ai 6 critères (1-2-3-4-5-6).
Les 3 premiers critères ont trois "variantes", "possibilités", "déclinaisons" (?)
Les 3 derniers ont 4 variantes.

Je veux savoir j'ai combien de combinaisons possibles, sachant que toutes
les combinaisons doivent avoir au minimum 2 différences et qu'un même
attribut soit partagé par au moins 3 personnages. Quelqu'un peut m'aider à
trouver la formule?

J'ai écrit le code suivant:

import itertools
from collections import Counter
L3 = range(3)
L4 = range(4)
S = set(itertools.product(L3,L3,L3,L4,L4,L4))
def distance(x,y):
    return sum(1 for a,b in zip(x,y) if a!=b)
def distance1_voisins(x):
    return [s for s in S if distance(x,s) == 1]
def trouve_ce_que_christian_veut():
    possible = copy(S)
    A = set()
    while possible:
        a = choice(list(possible))
        possible.remove(a)
        A.add(a)
        voisins = distance1_voisins(a)
        possible.difference_update(voisins)
    return A
def verifie(A):
    print "Nombre de sommets:", len(A)
    L = [distance(a,b) for a,b in itertools.product(A, repeat=2) if a!=b]
    print "Distance entre paires de sommets distincts:"
    print Counter(L)
    print "Nombre de combinaisons partageant le même attribut:"
    for i in range(6):
        print Counter(s[i] for s in A)

Il y a 1728 possiblités. Elles sont représentées dans l'ensemble S:

sage: 4^3*3^3
1728
sage: len(S)
1728

Ma méthode choisit un élément aléatoire de l'ensemble S puis élimine toutes les possibilités qui ont une seule différence avec cet élément choisi. Puis, on refait jusqu'à ce qu'il ne reste plus possibilités. Comme la méthode est aléatoire, le résultat n'est pas toujours le même. En gros, ça varie entre 284 et 297:

sage: A = trouve_ce_que_christian_veut()
sage: len(A)
284
sage: A = trouve_ce_que_christian_veut()
sage: len(A)
288
sage: A = trouve_ce_que_christian_veut()
sage: len(A)
291

En voici un où je teste les contraintes données par Christian:

sage: A = trouve_ce_que_christian_veut()
sage: len(A)
296
sage: verifie(A)
Nombre de sommets: 296
Distance entre paires de sommets distincts:
Counter({4: 28928, 5: 27188, 3: 14268, 6: 10972, 2: 5964})
Nombre de combinaisons partageant le même attribut:
Counter({1: 101, 0: 98, 2: 97})
Counter({2: 100, 0: 99, 1: 97})
Counter({1: 104, 0: 97, 2: 95})
Counter({3: 77, 1: 74, 0: 73, 2: 72})
Counter({3: 80, 2: 75, 1: 71, 0: 70})
Counter({1: 76, 3: 76, 2: 73, 0: 71})

On remarque que le deuxième critère est automatiquement vérifié comme au moins environ 70 possibilités partagent le même attribut.

J'imagine que la motivation de Christian est d'obtenir un tel ensemble. Alors, voici. Les éléments de l'ensemble A de 296 éléments ci-haut sont:

sage: A
{(0, 0, 0, 0, 2, 2),
 (0, 0, 0, 0, 3, 1),
 (0, 0, 0, 1, 0, 3),
 (0, 0, 0, 1, 2, 1),
 (0, 0, 0, 1, 3, 0),
 (0, 0, 0, 2, 0, 1),
 (0, 0, 0, 2, 1, 3),
 (0, 0, 0, 2, 2, 0),
 (0, 0, 0, 3, 0, 0),
 (0, 0, 0, 3, 1, 2),
 (0, 0, 0, 3, 2, 3),
 (0, 0, 1, 0, 0, 2),
 (0, 0, 1, 0, 1, 3),
 (0, 0, 1, 0, 3, 0),
 (0, 0, 1, 1, 1, 2),
 (0, 0, 1, 1, 2, 3),
 (0, 0, 1, 1, 3, 1),
 (0, 0, 1, 2, 0, 3),
 (0, 0, 1, 2, 1, 1),
 (0, 0, 1, 3, 1, 0),
 (0, 0, 1, 3, 2, 1),
 (0, 0, 1, 3, 3, 3),
 (0, 0, 2, 0, 0, 0),
 (0, 0, 2, 0, 1, 2),
 (0, 0, 2, 0, 2, 1),
 (0, 0, 2, 0, 3, 3),
 (0, 0, 2, 1, 1, 1),
 (0, 0, 2, 1, 2, 2),
 (0, 0, 2, 2, 1, 0),
 (0, 0, 2, 2, 2, 3),
 (0, 0, 2, 3, 0, 2),
 (0, 0, 2, 3, 1, 3),
 (0, 1, 0, 0, 0, 1),
 (0, 1, 0, 0, 1, 2),
 (0, 1, 0, 0, 2, 3),
 (0, 1, 0, 1, 1, 0),
 (0, 1, 0, 1, 2, 2),
 (0, 1, 0, 1, 3, 1),
 (0, 1, 0, 2, 0, 3),
 (0, 1, 0, 2, 1, 1),
 (0, 1, 0, 2, 3, 0),
 (0, 1, 0, 3, 1, 3),
 (0, 1, 0, 3, 2, 1),
 (0, 1, 0, 3, 3, 2),
 (0, 1, 1, 0, 0, 3),
 (0, 1, 1, 0, 1, 0),
 (0, 1, 1, 0, 2, 2),
 (0, 1, 1, 1, 0, 0),
 (0, 1, 1, 1, 1, 1),
 (0, 1, 1, 1, 3, 3),
 (0, 1, 1, 2, 2, 0),
 (0, 1, 1, 2, 3, 2),
 (0, 1, 1, 3, 0, 2),
 (0, 1, 1, 3, 2, 3),
 (0, 1, 2, 0, 1, 3),
 (0, 1, 2, 1, 0, 3),
 (0, 1, 2, 1, 2, 1),
 (0, 1, 2, 1, 3, 2),
 (0, 1, 2, 2, 0, 1),
 (0, 1, 2, 2, 1, 2),
 (0, 1, 2, 2, 3, 3),
 (0, 1, 2, 3, 2, 0),
 (0, 1, 2, 3, 3, 1),
 (0, 2, 0, 0, 1, 3),
 (0, 2, 0, 0, 2, 1),
 (0, 2, 0, 0, 3, 0),
 (0, 2, 0, 1, 1, 2),
 (0, 2, 0, 1, 2, 3),
 (0, 2, 0, 2, 0, 0),
 (0, 2, 0, 2, 3, 1),
 (0, 2, 0, 3, 0, 1),
 (0, 2, 0, 3, 2, 0),
 (0, 2, 0, 3, 3, 3),
 (0, 2, 1, 0, 0, 0),
 (0, 2, 1, 0, 1, 2),
 (0, 2, 1, 0, 3, 3),
 (0, 2, 1, 1, 0, 2),
 (0, 2, 1, 1, 1, 0),
 (0, 2, 1, 1, 2, 1),
 (0, 2, 1, 2, 0, 1),
 (0, 2, 1, 2, 1, 3),
 (0, 2, 1, 2, 2, 2),
 (0, 2, 1, 2, 3, 0),
 (0, 2, 1, 3, 0, 3),
 (0, 2, 1, 3, 1, 1),
 (0, 2, 1, 3, 3, 2),
 (0, 2, 2, 0, 0, 2),
 (0, 2, 2, 0, 1, 0),
 (0, 2, 2, 0, 2, 3),
 (0, 2, 2, 0, 3, 1),
 (0, 2, 2, 1, 0, 1),
 (0, 2, 2, 1, 2, 0),
 (0, 2, 2, 1, 3, 3),
 (0, 2, 2, 2, 0, 3),
 (0, 2, 2, 2, 2, 1),
 (0, 2, 2, 2, 3, 2),
 (0, 2, 2, 3, 1, 2),
 (0, 2, 2, 3, 3, 0),
 (1, 0, 0, 0, 0, 0),
 (1, 0, 0, 0, 2, 1),
 (1, 0, 0, 0, 3, 2),
 (1, 0, 0, 1, 1, 2),
 (1, 0, 0, 1, 2, 0),
 (1, 0, 0, 1, 3, 3),
 (1, 0, 0, 2, 0, 2),
 (1, 0, 0, 2, 1, 1),
 (1, 0, 0, 2, 2, 3),
 (1, 0, 0, 3, 1, 3),
 (1, 0, 0, 3, 2, 2),
 (1, 0, 0, 3, 3, 1),
 (1, 0, 1, 0, 0, 3),
 (1, 0, 1, 0, 2, 0),
 (1, 0, 1, 0, 3, 1),
 (1, 0, 1, 1, 0, 1),
 (1, 0, 1, 1, 1, 3),
 (1, 0, 1, 1, 2, 2),
 (1, 0, 1, 1, 3, 0),
 (1, 0, 1, 2, 0, 0),
 (1, 0, 1, 2, 2, 1),
 (1, 0, 1, 2, 3, 3),
 (1, 0, 1, 3, 1, 2),
 (1, 0, 1, 3, 2, 3),
 (1, 0, 2, 0, 0, 1),
 (1, 0, 2, 0, 1, 3),
 (1, 0, 2, 1, 1, 0),
 (1, 0, 2, 1, 2, 1),
 (1, 0, 2, 2, 2, 2),
 (1, 0, 2, 2, 3, 0),
 (1, 0, 2, 3, 0, 3),
 (1, 0, 2, 3, 1, 1),
 (1, 0, 2, 3, 2, 0),
 (1, 0, 2, 3, 3, 2),
 (1, 1, 0, 0, 0, 3),
 (1, 1, 0, 0, 1, 1),
 (1, 1, 0, 0, 2, 2),
 (1, 1, 0, 0, 3, 0),
 (1, 1, 0, 1, 0, 0),
 (1, 1, 0, 1, 2, 3),
 (1, 1, 0, 1, 3, 2),
 (1, 1, 0, 2, 1, 0),
 (1, 1, 0, 2, 2, 1),
 (1, 1, 0, 2, 3, 3),
 (1, 1, 0, 3, 0, 1),
 (1, 1, 1, 0, 0, 2),
 (1, 1, 1, 0, 2, 1),
 (1, 1, 1, 0, 3, 3),
 (1, 1, 1, 1, 1, 0),
 (1, 1, 1, 2, 1, 3),
 (1, 1, 1, 2, 2, 2),
 (1, 1, 1, 2, 3, 1),
 (1, 1, 1, 3, 0, 3),
 (1, 1, 1, 3, 1, 1),
 (1, 1, 1, 3, 2, 0),
 (1, 1, 1, 3, 3, 2),
 (1, 1, 2, 0, 0, 0),
 (1, 1, 2, 0, 3, 1),
 (1, 1, 2, 1, 0, 2),
 (1, 1, 2, 1, 2, 0),
 (1, 1, 2, 1, 3, 3),
 (1, 1, 2, 2, 0, 3),
 (1, 1, 2, 2, 1, 1),
 (1, 1, 2, 2, 3, 2),
 (1, 1, 2, 3, 1, 2),
 (1, 1, 2, 3, 2, 3),
 (1, 1, 2, 3, 3, 0),
 (1, 2, 0, 0, 0, 2),
 (1, 2, 0, 0, 3, 1),
 (1, 2, 0, 1, 1, 0),
 (1, 2, 0, 1, 2, 1),
 (1, 2, 0, 2, 0, 3),
 (1, 2, 0, 2, 2, 2),
 (1, 2, 0, 2, 3, 0),
 (1, 2, 0, 3, 0, 0),
 (1, 2, 0, 3, 1, 1),
 (1, 2, 0, 3, 2, 3),
 (1, 2, 0, 3, 3, 2),
 (1, 2, 1, 0, 1, 1),
 (1, 2, 1, 0, 2, 3),
 (1, 2, 1, 0, 3, 0),
 (1, 2, 1, 1, 1, 2),
 (1, 2, 1, 1, 2, 0),
 (1, 2, 1, 1, 3, 3),
 (1, 2, 1, 2, 3, 2),
 (1, 2, 1, 3, 0, 2),
 (1, 2, 1, 3, 1, 3),
 (1, 2, 1, 3, 3, 1),
 (1, 2, 2, 0, 1, 2),
 (1, 2, 2, 0, 2, 1),
 (1, 2, 2, 1, 0, 3),
 (1, 2, 2, 1, 1, 1),
 (1, 2, 2, 1, 3, 2),
 (1, 2, 2, 2, 0, 2),
 (1, 2, 2, 2, 1, 3),
 (1, 2, 2, 2, 2, 0),
 (1, 2, 2, 2, 3, 1),
 (1, 2, 2, 3, 0, 1),
 (1, 2, 2, 3, 1, 0),
 (1, 2, 2, 3, 2, 2),
 (1, 2, 2, 3, 3, 3),
 (2, 0, 0, 0, 0, 1),
 (2, 0, 0, 0, 1, 0),
 (2, 0, 0, 0, 2, 3),
 (2, 0, 0, 1, 0, 0),
 (2, 0, 0, 1, 1, 3),
 (2, 0, 0, 1, 2, 2),
 (2, 0, 0, 1, 3, 1),
 (2, 0, 0, 2, 2, 1),
 (2, 0, 0, 2, 3, 2),
 (2, 0, 0, 3, 3, 0),
 (2, 0, 1, 0, 3, 3),
 (2, 0, 1, 1, 0, 2),
 (2, 0, 1, 1, 1, 0),
 (2, 0, 1, 1, 2, 1),
 (2, 0, 1, 2, 0, 1),
 (2, 0, 1, 2, 1, 3),
 (2, 0, 1, 2, 2, 2),
 (2, 0, 1, 2, 3, 0),
 (2, 0, 1, 3, 0, 3),
 (2, 0, 1, 3, 1, 1),
 (2, 0, 1, 3, 2, 0),
 (2, 0, 1, 3, 3, 2),
 (2, 0, 2, 0, 1, 1),
 (2, 0, 2, 0, 2, 0),
 (2, 0, 2, 0, 3, 2),
 (2, 0, 2, 1, 0, 1),
 (2, 0, 2, 1, 3, 0),
 (2, 0, 2, 2, 0, 3),
 (2, 0, 2, 2, 1, 2),
 (2, 0, 2, 2, 3, 1),
 (2, 0, 2, 3, 0, 0),
 (2, 0, 2, 3, 2, 1),
 (2, 0, 2, 3, 3, 3),
 (2, 1, 0, 0, 2, 1),
 (2, 1, 0, 0, 3, 2),
 (2, 1, 0, 1, 0, 3),
 (2, 1, 0, 1, 1, 1),
 (2, 1, 0, 1, 3, 0),
 (2, 1, 0, 2, 0, 0),
 (2, 1, 0, 2, 1, 3),
 (2, 1, 0, 2, 2, 2),
 (2, 1, 0, 2, 3, 1),
 (2, 1, 0, 3, 0, 2),
 (2, 1, 0, 3, 2, 0),
 (2, 1, 0, 3, 3, 3),
 (2, 1, 1, 0, 0, 0),
 (2, 1, 1, 0, 1, 2),
 (2, 1, 1, 0, 2, 3),
 (2, 1, 1, 0, 3, 1),
 (2, 1, 1, 1, 0, 1),
 (2, 1, 1, 1, 2, 0),
 (2, 1, 1, 1, 3, 2),
 (2, 1, 1, 2, 0, 3),
 (2, 1, 1, 2, 1, 1),
 (2, 1, 1, 3, 1, 3),
 (2, 1, 1, 3, 2, 1),
 (2, 1, 1, 3, 3, 0),
 (2, 1, 2, 0, 0, 3),
 (2, 1, 2, 0, 3, 0),
 (2, 1, 2, 1, 0, 0),
 (2, 1, 2, 1, 2, 3),
 (2, 1, 2, 2, 0, 2),
 (2, 1, 2, 2, 2, 0),
 (2, 1, 2, 3, 0, 1),
 (2, 1, 2, 3, 1, 0),
 (2, 1, 2, 3, 2, 2),
 (2, 2, 0, 0, 1, 2),
 (2, 2, 0, 0, 2, 0),
 (2, 2, 0, 0, 3, 3),
 (2, 2, 0, 1, 0, 1),
 (2, 2, 0, 1, 3, 2),
 (2, 2, 0, 3, 1, 3),
 (2, 2, 0, 3, 2, 2),
 (2, 2, 0, 3, 3, 1),
 (2, 2, 1, 0, 0, 1),
 (2, 2, 1, 0, 3, 2),
 (2, 2, 1, 1, 0, 3),
 (2, 2, 1, 1, 1, 1),
 (2, 2, 1, 1, 2, 2),
 (2, 2, 1, 1, 3, 0),
 (2, 2, 1, 2, 0, 2),
 (2, 2, 1, 2, 1, 0),
 (2, 2, 1, 2, 2, 3),
 (2, 2, 1, 2, 3, 1),
 (2, 2, 1, 3, 0, 0),
 (2, 2, 1, 3, 1, 2),
 (2, 2, 1, 3, 3, 3),
 (2, 2, 2, 0, 0, 0),
 (2, 2, 2, 0, 1, 3),
 (2, 2, 2, 0, 2, 2),
 (2, 2, 2, 1, 1, 2),
 (2, 2, 2, 1, 3, 1),
 (2, 2, 2, 2, 1, 1),
 (2, 2, 2, 2, 3, 0),
 (2, 2, 2, 3, 0, 3),
 (2, 2, 2, 3, 2, 0),
 (2, 2, 2, 3, 3, 2)}

Je suis d'accord avec Philippe Beaudoin qui répond sur Facebook:

De manière intéressante, c'est la même question que:, combien peut-on placer de "tour" (la pièce d'échec) sur un hyper-échiquier de 3x3x3x4x4x4 sans qu'aucune des pièces ne se menacent.

Il conjecture que la réponse optimale est 432:

En fait, je suis presque certain que la réponse est 432 (3x3x3x4x4).

Peut-être. Je n'ai pas réfléchi plus à la question. Mais, je ne vois pas comment la formule proposée par Philippe généralise la formule connue pour l'équiquier 8x8...

Read and Post Comments

Marcher de la crèche du Sart Tilman à mon travail

03 mars 2016 | Catégories: urbanisme | View Comments

Voici un texte que j'ai transmis à la revue d'urbanisme Dérivations pour son deuxième numéro au sujet du campus du Sart Tilman de l'Université de Liège.

En janvier 2015, j'ai commencé un postdoctorat à l'Université de Liège. Peu après, ma femme et mon fils m'ont rejoint. Nous avons choisis d'habiter au centre-ville de Liège, car nous aimons la vie sans voiture et la proximité des services. Il faut dire qu'il n'y a pas tant de terrains de jeu pour enfants à proximité du centre-ville, mais on a trouvé un modeste parc accueillant (avec un cercle de cacas de chiens à son entrée) qui nous convient.

À mon arrivée, il y avait une liste d'attente pour les crèches du centre-ville et quelques places à la crèche du Sart Tilman. Nous avons donc inscrit mon garçon à la crèche du Sart-Tilman avant qu'il commence l'école. À ce moment, mon algorithme pour me rendre au travail était semble-t-il unique pour deux raisons: (1) traverser le centre-ville à vélo via le Ravel et vérouiller le vélo au pont de la Fragnée et (2) prendre le 48 avec un enfant. En effet, on m'a souvent déconseillé de laisser un vélo à un tel endroit ou encore de m'acheter une voiture maintenant que je suis papa. Bon, pour moi, ça restait quand même la meilleure solution au problème de transport vers le campus Sart Tilman.

Je déposais donc mon fils à la crèche. Il me restait donc à me rendre de la crèche à mon travail. Comme ce n'était pas si loin, je faisais ce trajet à pied. N'importe où dans le monde, on serait porté à croire que marcher de la crèche d'un campus universitaire à son travail sur le même campus est normal et qu'un trajet raisonable pour le faire à pied devrait exister. Les campus à l'américaine sont toujours plein de trajets piétons que l'on reconnaît dans la pelouse usée et qui indiquent toujours le plus court chemin: la diagonale. À la recherche de cette diagonale, je marchais sur la Rue du Sart-Tilman jusqu'au Monument aux héros des combats de la nuit du 5 au 6 août 1914 que peu de gens connaissent. C'est à partir de là que tout se gâte et que le petit chemin le plus court propre aux campus universitaires à l'américaine n'existe plus.

La première fois, muni de l'application Open Street Map sur mon téléphone, j'avais fait l'erreur de contourner l'Institut de Géographie par la rue du Clos Mercator. J'étais abouti sur les bretelles d'autoroute. Chemin désagréable et boueux. À ne pas refaire.

La deuxième fois, j'ai marché dans la pelouse entre l'Institut de Géographie et le Boulevard de Colonster jusqu'au rond point au centre du campus. Ce rond-point n'est pas si désagréable pour les piétons. En effet, les voitures ralentissent à moins de 80 km/h à la vue d'un piéton et prennent leur distance pour s'assurer de rouler toujours à plus de 20 cm de ceux-ci.

J'ai pu faire ce trajet jusqu'aux périodes d'allergies du mois de juin. En effet, comme j'étais finalement le seul à passer par là à tous les jours, mes piétinements n'étaient pas suffisants pour prendre le dessus sur les plantes. À partir de ce moment-là, je marchais sur le Boulevard de Colonster. Il n'y a pas de trottoir à cet endroit, et le manque de visibilité causé par les plantes et le stationnement P11 font en sorte que les voitures ne roulent pas dans la voie de gauche à cet endroit à l'approche du rond point. Je me suis donc habitué aux voitures qui passent très proche des piétons là aussi et même aux conducteurs du bus 58 qui osent même faire des blagues en dirigeant l'autobus sur les piétons pour les éviter à la dernière seconde.

Depuis l'automne, je n'ai plus besoin de faire ce merveilleux trajet de la crèche à l'Institut de mathématiques, car mon fils a commencé à l'école en ville. Je profite maintenant du nouveau trajet piéton qui contourne le rond-point par le sud.

Read and Post Comments

Next Page »