|
1 | 1 | \documentclass[11pt,class=report,crop=false]{standalone} |
2 | | -\usepackage[print]{../python} |
| 2 | +\usepackage[screen]{../python} |
3 | 3 |
|
4 | 4 | \begin{document} |
5 | 5 |
|
|
102 | 102 | \index{module!time@\ci{time}} |
103 | 103 | \index{time@\ci{time}} |
104 | 104 |
|
105 | | -Le module \ci{time} permet de chronométrer le temps d'exécution mais aussi de savoir la date et l'heure (voir aussi le module \ci{timeit} expliqué dans la fiche \og{}Arithmétique -- Tant que\fg{}). |
| 105 | +Le module \ci{time} permet de chronométrer le temps d'exécution mais aussi de savoir la date et l'heure (voir aussi le module \ci{timeit} expliqué dans la fiche \og{}Arithmétique -- Tant que -- I\fg{}). |
106 | 106 | Voici un petit script pour mesurer le temps de calcul d'une instruction. |
107 | 107 |
|
108 | 108 | \begin{lstlisting} |
|
199 | 199 |
|
200 | 200 | \item On aura besoin de transformer une phrase en une liste de nombres. De plus, on va découper nos listes en blocs de taille $N$ (avec $N=6$), on rajoute donc des zéros en début de liste afin qu'elle soit de longueur un multiple de $N$. |
201 | 201 |
|
202 | | - Écris une fonction \ci{phrase_vers_liste(phrase)} qui convertit une chaîne de caractères en liste d'entiers entre $0$ et $99$ et si besoin rajoute des zéros devant afin que la liste ait la bonne taille. |
| 202 | + Écris une fonction \ci{phrase_vers_liste(phrase)} qui convertit une chaîne de caractères en une liste d'entiers entre $0$ et $99$ et si besoin rajoute des zéros devant afin que la liste ait la bonne taille. |
203 | 203 |
|
204 | 204 | La formule à utiliser pour convertir un caractère en un entier strictement inférieur à $100$ est :\\ |
205 | 205 | \centerline{\ci{ord(c) \% 100}} |
|
292 | 292 | \end{itemize} |
293 | 293 |
|
294 | 294 |
|
295 | | -Voici le schéma d'une situation avec trois blocs : dans un premier temps il y a trois blocs (A,B,C) ; dans un second temps il ne reste plus que deux bloc (B' et C) ; à la fin il ne reste qu'un bloc (C'') : c'est l'empreinte ! |
| 295 | +Voici le schéma d'une situation avec trois blocs : dans un premier temps il y a trois blocs (A,B,C) ; dans un second temps il ne reste plus que deux blocs (B' et C) ; à la fin il ne reste qu'un bloc (C'') : c'est l'empreinte ! |
296 | 296 | \myfigure{0.5}{ |
297 | 297 | \tikzinput{fig-bitcoin-2} |
298 | 298 | } |
|
340 | 340 |
|
341 | 341 | Par exemple : soit la \ci{liste = [0,1,2,3,4,5]} et \ci{Max = [0,0,7]}. Quel bloc \ci{preuve} puis-je concaténer à \ci{liste} pour résoudre mon problème ? |
342 | 342 | \begin{itemize} |
343 | | - \item \ci{preuve = [12, 3, 24, 72, 47, 77]} convient car concaténé à notre liste cela donne \ci{[0,1,2,3,4,5,12, 3, 24, 72, 47, 77]} et le hachage de toute cette liste vaut |
344 | | - \ci{[0, 0, 5, 47, 44, 71]} qui commence par \ci{[0,0,5]} plus petit que l'objectif. |
| 343 | + \item \ci{preuve = [12,3,24,72,47,77]} convient car concaténé à notre liste cela donne \ci{[0,1,2,3,4,5,12,3,24,72,47,77]} et le hachage de toute cette liste vaut |
| 344 | + \ci{[0,0,5,47,44,71]} qui commence par \ci{[0,0,5]} plus petit que l'objectif. |
345 | 345 |
|
346 | | - \item \ci{preuve = [0, 0, 2, 0, 61, 2]} convient aussi car après concaténation on a |
347 | | - \ci{[0,1,2,3,4,5,0, 0, 2, 0, 61, 2]} dont le hachage donne \ci{[0, 0, 3, 12, 58, 92]}. |
| 346 | + \item \ci{preuve = [0,0,2,0,61,2]} convient aussi car après concaténation on a |
| 347 | + \ci{[0,1,2,3,4,5,0,0,2,0,61,2]} dont le hachage donne \ci{[0,0,3,12,58,92]}. |
348 | 348 |
|
349 | | - \item \ci{[97, 49, 93, 87, 89, 47]} ne convient pas, car après concaténation puis hachage on obtient \ci{[0, 0, 8, 28, 6, 60]} qui est plus grand que l'objectif voulu. |
| 349 | + \item \ci{[97,49,93,87,89,47]} ne convient pas, car après concaténation puis hachage on obtient |
| 350 | + \ci{[0,0,8,28,6,60]} qui est plus grand que l'objectif voulu. |
350 | 351 | \end{itemize} |
351 | 352 |
|
352 | 353 | \bigskip |
|
407 | 408 |
|
408 | 409 | \item Une \emph{transaction} est une chaîne de caractères comprenant un nom et la somme à ajouter (ou à retrancher) à son compte. Par exemple \ci{"Abel +25"} ou \ci{"Barbara -45"}. |
409 | 410 |
|
410 | | - Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaîne de caractère \ci{transaction} à la liste \ci{Livre}. |
| 411 | + Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaîne de caractères \ci{transaction} à la liste \ci{Livre}. |
411 | 412 | Par exemple après l'initialisation \ci{ajout_transaction("Camille +100")}, |
412 | | - \ci{Livre} vaut \ci{[ [0, 0, 0, 0, 0, 0], "Camille +100" ]}. |
| 413 | + \ci{Livre} vaut \ci{[ [0,0,0,0,0,0], "Camille +100" ]}. |
413 | 414 | Attention, pour pouvoir modifier \ci{Livre} il faut commencer la fonction par : \ci{global Livre}. |
414 | 415 |
|
415 | 416 | \end{enumerate} |
|
425 | 426 | \item On ajoute cette preuve au livre de compte. |
426 | 427 | \end{itemize} |
427 | 428 | Par exemple si le livre se termine par :\\ |
428 | | - \centerline{\ci{[3, 1, 4, 1, 5, 9], "Abel +35"}} |
| 429 | + \centerline{\ci{[3,1,4,1,5,9], "Abel +35"}} |
429 | 430 | alors après calcul de la preuve de travail le livre se termine par exemple par :\\ |
430 | | - \centerline{\ci{[3, 1, 4, 1, 5, 9], "Abel +35", [32, 17, 37, 73, 52, 90]}} |
| 431 | + \centerline{\ci{[3,1,4,1,5,9], "Abel +35", [32,17,37,73,52,90]}} |
431 | 432 | On rappelle que la preuve de travail n'est pas unique et qu'en plus elle dépend |
432 | 433 | de l'objectif \ci{Max}. |
433 | 434 |
|
|
0 commit comments