Karnaj

6 abonnés

Élève de MP depuis fort fort longtemps. Objectif : intégrer malgré un esprit qui dérive. Objectif accompli, pour le meilleur et surtout pour le pire.

Si vous aviez le pouvoir de changer UNE chose sur ZdS qu’est ce que vous changeriez ? et Pourquoi ? Exprimez vous

Je changerais la manière dont sont traités les auteurs pour qu’ils produisent plus (nous savons grâce à un indic qu’il y en a qui bénéficient d’un régime de faveur).

Donc il faudrait peut-être donner plus d’agrumes frais, et puisqu’il y a quand même beaucoup d’espèces animales, on pourrait même obtenir du lait et de la viande fraîche… En étant bien nourri, il produiront sûrement plus.

À côté de çà, il faut faire attention à ne pas dépasser les frais, et pour les motiver, les châtiments corporels devraient naturellement être plus présents. Il faut cependant faire attention à les garder en bonne santé pour qu’ils continuent à attirer d’autres auteurs

Citations ?

Je fais des rimes, Quand je m’exprime. Je fais des vers, Sans en avoir l’air. Mais le plus fort, C’est que j’en fais encore !

Réflexions ?

Terry Pratchett : « La lumière croit voyager plus vite que tout, mais elle se trompe. Elle aura beau foncer le plus vite possible, elle verra toujours que les ténèbres sont arrivées les premières et qu’elles l’attendent. ».

« Le temps est une drogue. À haute dose, il tue. ». Donc faites attention. Tuez le temps avant qu’il ne vous tue.

Moi : « L’homme est un loup pour l’homme et l’argent est le chef de la meute… ».

« Le but de concourir est de conquérir. »

« Il faut faire ce qui est bon, pas ce qui est facile. »

« (Quand il y a un bug, ) il faut parfois penser de nouvelles solutions plutôt que panser les anciennes »

« Avoir piscine n’est une excuse que si ton ordinateur ne va pas dans l’eau. »

Gramme hier

De la grammaire et d’autres trucs du genre. Parce que voilà.

  • « Pallier quelque chose » et pas « pallier à quelque chose » (en gros, « pallier », c’est « compenser »).
  • Après que + infinitif : par exemple, « après que j’ai écrit cet exemple, j’ai décidé d’enregistrer ma page ». Dans le doute, utiliser « après avoir » ne fait pas de mal.
  • On se souvient « de quelque chose », mais on se rappelle « quelque chose ». Le verbe « rappeler » est transitif direct.

Programmation ?

« Ce qui se conçoit bien s’énonce clairement. ». Si ça ne s’énonce pas clairement, c’est à remplacer.

  • Less code, less error.
  • Less is more.
  • The best code is no code at all.

Mes tutoriels

C

LaTeX

Mathématiques

Python

Ruby

À écrire

Mathématiques et algorithmie

  • Dénombrement et probabilités.
  • Introduction à la recherche de plus court chemin.

LaTeX

  • Beamer (thème Metropolis)
  • Écrire des CV en LaTeX.
  • Bibliographie en LaTeX avec Biber.
  • Indexation en LaTeX avec xindy.
  • Latexmk pour faciliter la compilation.
  • Des liens hypertextes avec hyperref ?

Ruby

  • Le formatage de chaînes en Ruby.

Série de billets - Création d’un Shoot 'em up en C avec la SDL

Avis livre

Ruby

Des avis rapides sur des livres de référence en Ruby. À qui ils s’addressent, de quoi ils traitent, pourquoi ils sont bien, etc.

The Well-Grounded Rubyist
The Ruby Way
The Ruby Programming Language
Practical Object-oriented Design in Ruby
Eloquent Rubt

C

À regarder

  • Simple2D en C (bibliothèque basée sur SDL2 et OpenGL)
  • Ruby2D (basée sur Simple2D)

Parce qu’il faut que ça rime.

  • Prends Ruby, c’est joli.
  • Prends Python, c’est bon.
  • Garde le C, c’est assez.

Un peu d’algo ?

Sous-somme

Soit TT un tableau d’entiers de taille nn, et soit rr un entier. Trouver (s’ils existent) deux éléments du tableau xx et yy tels que x+y=nx + y = n.

Une solution en O(nln(n)O(n \ln(n) consiste à d’abord trier le tableau. Ensuite, on considère deux indices dd (début) et ff (fin) du tableau. Au début de l’algorithme, dd vaut 00 et ff faut n1n - 1.

  • Si T[d]+T[f]=nT[d] + T[f] = n, alors c’est fini, on a trouvé deux éléments.
  • Sinon, si T[d]+T[f]<nT[d] + T[f] < n, c’est que T[d]T[d] est trop petit (en le rajoutant au plus grand nombre, on a un nombre trop petit), on incrémente dd et on recommence.
  • Sinon, si T[d]+T[f]>nT[d] + T[f] > n, c’est que T[f]T[f] est trop grand (en le rajoutant au plus petit nombre, on a un nombre trop grand), on décrémente ff et on recommence.

Et on fait ceci tant que d>fd > f. Si on arrive au point d<=fd <= f, les éléments n’existent pas.

En fait, on a en fait un deuxième algorithme qui trouve deux indices tels qu’on a la somme dans un tableau trié. On peut l’écrire de manière récursive avec des sous-tableaux ou encore avec les indices.

def f(tab, d, f, r)
  return (-1, -1) if d - b < 1 # Peu importe, on pourrait retourner Faux...
  return (d, f) if tab[d] + tab [f] == r
  return f(tab, d + 1, f) if tab[d] + tab [f] < r    
  return f(tab, d, f - 1)
end

def main(tab, r)
  f(tab, 0, tab.size - 1, r)
end 

Qui a les boules !?

On considère une urne avec nn boules noires et bb boules blanches. Tant qu’il reste au moins deux boules dans l’urne, on en tire deux.

  • Si elles ont la même couleur, on les jette.
  • Sinon, on jette la noire et on remet la blanche dans l’urne.

Si l’urne est vide, on remet une boule noire.

Et on veut savoir la couleur de la boule restante dans l’urne.

Le problème peut avoir l’air compliqué. Pourtant, si on s’attarde sur les boules blanches, on se rend compte que leur nombre ne peut diminuer que de deux. On a alors deux cas.

  • Si bb est pair, alors tant qu’on n’a pas retirer toutes les boules blanches, il reste au moins deux boules blanches dans l’urne. Au moment où on retire les deux dernières boules blanches, l’urne ne contient que des boules noires. Si elle est vide, on remet un boule noire, et bien sûr, avec notre procédé, s’il n’y a que des boules noires, on obtient une boule noire à la fin.
  • Si b=2p+1b = 2p + 1 est impair, alors tant qu’on en a pas retiré 2p2p de blanches, il reste au moins 2 boules blanches dans l’urne. Au moment où on retire deux des trois dernières boules de l’urne, il reste une boule blanche dans l’urne et possiblement des boules noires. Mais la boule blanche ne pourra jamais être jetée, tandis que le nombre de boules noires va décroître jusqu’à épuisement. La dernière boule est donc blanche.

Fulcrum

On reprend un tableau TT. Cette fois, on cherche l’indice du tableau tel que la différence entre la somme des éléments avant cet indice et la somme des éléments après cet indice soit minimum. On cherche donc l’indice ii qui minimise

k=0iT[k]k=i+1n1T[k].\left| \sum_{k = 0}^i T[k] - \sum_{k = i + 1}^{n - 1} T[k] \right|.

âne à grammes

On considère une liste de mots LL (un dictionnaire) de taille NN et une liste de mots ll. Notre but est de trouver pour chaque mot ww présent dans ll, toutes les anagrammes (c’est bien un mot féminin) de ww présents dans LL.

Si on considère un très gros dictionnaire, il apparaît vite qu’une solution trop naïve va être dépassée.

Comme toutes les autres problèmes, les solutions sont multiples. Cependant, la majorité des solutions s’appuieront certainement sur le fait de trouver une prédicat pp invariant par mélange. L’idée est donc de trouver une fonction pp tel que ww' est un anagramme de ww si et seulement si p(w)=p(w)p(w) = p(w').

On peut par exemple compter le nombre d’occurrences de chaque lettre (on se convainc assez facilement que deux mots sont des anagrammes l’un de l’autre si et seulement si toutes les lettres apparaissent un même nombre de fois dans chacun d’entre eux).

Et on en fait quoi de ce prédicat ?

On pourrait par exemple stocker tous les mots de LL dans une table de hachage HH. On stockerait ww dans une liste à la case p(w)p(w). Ainsi, pour tout mot ww, H(p(w))H(p(w)) contiendrait toutes les anagrammes de ww. Notre table de hachage est construite une bonne fois pour toute, et on peut ensuite l’utiliser pour avoir les anagrammes de n’importe quel mot.

En fait, il faut juste un prédicat qui se calcule rapidement.

Décomposition en nombres premiers


Projets

DSL Ruby LaTeX

def bleu(s)
  textcolor blue s
end

@boxes = {}

def savebox(name, &block)
  @boxes[name] = block
end

def box(name)
  @boxes[name].call
end

documentclass [12pt, french] article

document do
  section "Document test"
  
  verbatim do
    n = 10
    s = 0
    (1..n) do |i|
      s += i
    end
  end
  
  savebox:test do
    "Ici, on a un gros spoiler, avec beaucoup de code."
    
    "Ce bout de code calcule la somme des entiers de $1$ à $n - 1$."
    math do
      \sum_{k = 1}^n k 
    end
    
    5.times do |n|
      math do
        \sum_{k = 1}^{#{n}} k = #{(1..n).sum }
      end
    end
  end
  
  "On affiche du #{bleu "texte en bleu"} et du #{emph "texte important"}.
   puis on affiche la boîte sauvegardée" 
  
  box(:test)
  
  "On affiche du " bleu("text en bleu") "et du" (emph "texte important")
  
  box :test
end

Raccourcis pour certaines classes comme lettre, méthodes pour certaines commandes.


  • Introduire l’environnement abstract. Peut-être dans le chapitre « Structurer un document », dans la section sur la gestion de titre. Permet d’utiliser \abstract plutôt que \em comme exemple dans le chapitre d’après sur les principes de Tex et de LaTeX
  • Rajouter des tests pour les exercices.
  • Tout est une expression et a une valeur.
  • Toute valeur est vraie sauf false et nil.

Assez des salamis, je passe au jambon — Je fais un carnage si ce car nage car je nage, moi, Karnaj ! — Le comble pour un professeur de mathématique ? Mourir dans l’exercice de ses fonctions.

Dernières publications Voir tout

Derniers billets Voir tout

Derniers sujets créés Voir tout

Signaler ce profil