Commit c1b6aab6 authored by Varré Jean-Stéphane's avatar Varré Jean-Stéphane
Browse files

Corrections diverses

parent 6c19a203
No preview for this file type
......@@ -149,7 +149,7 @@ motif ont été comparés avec succès. Dans ce dernier cas on a une
occurrences du motif $M$ dans $T$.
En profiter pour compter le nombre de comparaisons de caractères
que cela nécessite (la case \texttt{compteur} permet de marquer à
que cela nécessite (la case \texttt{nb. cmp} permet de marquer à
chaque fois que le caractère du texte est comparé à un caractère
du motif).
\end{todo}
......@@ -359,15 +359,15 @@ position il n'y aura pas d'échec.
appliquant la formule trouvée.
\begin{center}
\begin{tabular}{cc|p{1cm}p{1cm}p{1cm}p{1cm}p{1cm}}
& & \multicolumn{5}{c}{lettre d'échec} \\
motif & $j$ & \texttt{h} & \texttt{a} & \texttt{r} & \texttt{s} & autre \\
\begin{tabular}{cc|p{1cm}p{1cm}p{1cm}p{1cm}}
& & \multicolumn{4}{c}{lettre d'échec} \\
motif & $j$ & \texttt{h} & \texttt{a} & \texttt{r} & autre \\
\hline
\tt h & 0 & & & & & \\
\tt a & 1 & & & & & \\
\tt r & 2 & & & & & \\
\tt a & 3 & & & & & \\
\tt s & 4 & & & & & \\
\tt h & 0 & & & & \\
\tt a & 1 & & & & \\
\tt r & 2 & & & & \\
\tt a & 3 & & & & \\
\tt s & 4 & & & & \\
\end{tabular}
\end{center}
\end{todo}
......@@ -376,20 +376,26 @@ L'algorithme devient alors~:
\begin{algorithmic}
\Require un texte $T$ et un motif $M$
\Ensure les occurrences du motif $M$ dans $T$
\ForAll {position $i$ du texte $T$}
\State $\mbox{occ} \leftarrow \{\}$
\State $i \leftarrow 0$
\While {$i < t - m +1$}
\State {$j \leftarrow 0$}
\While {$j < m$ et $T[i+j] == M[j]$}
\State {$j \leftarrow j + \mbox{decalage}[T[i+j]][j]$}
\State {$j \leftarrow j + 1$}
\EndWhile
\If {$j == m$}
\State ajouter $i$ à $\mbox{occ}$
\State {$i \leftarrow i + 1$}
\Else
\State {$i \leftarrow i + \mbox{decalage}[T[i+j]][j]$}
\EndIf
\EndFor
\EndWhile
\State \Return $\mbox{occ}$
\end{algorithmic}
\begin{todo}{}
Calculer le nombre de compaisons réalisées en mettant en {\oe}uvre
la règle du bon caractère sur l'exemple.
Sur l'exemple, calculer le nombre de comparaisons réalisées en mettant en {\oe}uvre
la règle du bon caractère.
\end{todo}
\newpage
......@@ -895,7 +901,7 @@ mémoriser le nombre de comparaisons de chaque caractère du texte.
\vspace*{1cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
\foreach \c [count=\x from 0] in {l,e,s, ,h,a,r,i,c,o,t,s, ,d,e,s, ,h,a,r,h,a, ,c,a,c,h,e,s, ,d,a,n,s, ,l,e, ,h,a,r,a,s, ,d,e,s, ,h,a,r,i,s,o,n} {
\draw (\x,0) ++(0.5,4.5) node {\tiny \x};
......@@ -907,9 +913,9 @@ mémoriser le nombre de comparaisons de chaque caractère du texte.
\draw (-0.7,4.5) node {\tiny $i$};
\end{tikzpicture}
\vspace*{2cm}
\vspace*{1cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
\draw (\x,0) ++(0.5,-0.5) node {\tiny \x};
\draw[anchor=base] (\x,0) ++(0.5,0.25) node {\texttt{\c}};
......@@ -918,6 +924,9 @@ mémoriser le nombre de comparaisons de chaque caractère du texte.
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\vspace*{1cm}
% -----------------------------------------------------------
\subtitlebar{Pour l'activité 2}
% -----------------------------------------------------------
......@@ -931,7 +940,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\vspace*{1cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
\foreach \c [count=\x from 0] in {l,e,s, ,h,a,r,i,c,o,t,s, ,d,e,s, ,h,a,r,h,a, ,c,a,c,h,e,s, ,d,a,n,s, ,l,e, ,h,a,r,a,s, ,d,e,s, ,h,a,r,i,s,o,n} {
\draw (\x,0) ++(0.5,1.5) node {\tiny \x};
......@@ -943,7 +952,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\vspace*{2cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% pas d'echec
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
\draw (\x,0) ++(0.5,-0.5) node {\tiny \x};
......@@ -951,9 +960,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\draw (\x,0) rectangle +(1,1);
}
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\end{tikzpicture}\hspace{10mm}
%
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% echec en position 0
\draw[fill=black!50] (0,0) rectangle +(1,1);
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
......@@ -962,9 +971,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\draw (\x,0) rectangle +(1,1);
}
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\end{tikzpicture}\hspace{10mm}
%
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% echec en position 1
\draw[fill=black!50] (1,0) rectangle +(1,1);
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
......@@ -973,9 +982,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\draw (\x,0) rectangle +(1,1);
}
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\end{tikzpicture}\hspace{10mm}
%
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% echec en position 2
\draw[fill=black!50] (2,0) rectangle +(1,1);
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
......@@ -984,9 +993,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\draw (\x,0) rectangle +(1,1);
}
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\end{tikzpicture}\hspace{10mm}
%
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% echec en position 3
\draw[fill=black!50] (3,0) rectangle +(1,1);
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
......@@ -995,9 +1004,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\draw (\x,0) rectangle +(1,1);
}
\draw (-0.7,-0.5) node {\tiny $j$};
\end{tikzpicture}
\end{tikzpicture}\hspace{10mm}
%
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% echec en position 4
\draw[fill=black!50] (4,0) rectangle +(1,1);
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
......@@ -1014,9 +1023,9 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\subtitlebar{Pour l'activité 4}
% -----------------------------------------------------------
\vspace*{1cm}
\vspace*{0.5cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% S[4]
\draw (-0.7,1.5) node {\tiny $j$};
......@@ -1034,7 +1043,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
\end{tikzpicture}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% S[3]
\draw (-0.7,1.5) node {\tiny $j$};
......@@ -1051,7 +1060,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
= \phantom{88} $, donc $D[\phantom{88}]=\phantom{88}$};
\end{tikzpicture}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% S[2]
\draw (-0.7,1.5) node {\tiny $j$};
......@@ -1068,7 +1077,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
= \phantom{88} $, donc $D[\phantom{88}]=\phantom{88}$};
\end{tikzpicture}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% S[1]
\draw (-0.7,1.5) node {\tiny $j$};
......@@ -1085,7 +1094,7 @@ lettres du motif, et des lettres qui ne sont pas du motif).
= \phantom{88} $, donc $D[\phantom{88}]=\phantom{88}$};
\end{tikzpicture}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
% S[0]
\draw (-0.7,1.5) node {\tiny $j$};
......@@ -1110,12 +1119,12 @@ lettres du motif, et des lettres qui ne sont pas du motif).
Utiliser cette bande découpée pour faire glisser le motif le long du
texte et simuler l'algorithme de Boyer-Moore. Les cases nb. cmp permettent de
mémoriser le nombre de comparaisons de chaque caractère du texte et la
case $D$ permet de noter le décalage à effectuer.
mémoriser le nombre de comparaisons de chaque caractère du texte et les
cases $D$ permet de noter le décalage à effectuer.
\vspace*{1cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
\foreach \c [count=\x from 0] in {l,e,s, ,h,a,r,i,c,o,t,s, ,d,e,s, ,h,a,r,h,a, ,c,a,c,h,e,s, ,d,a,n,s, ,l,e, ,h,a,r,a,s, ,d,e,s, ,h,a,r,i,s,o,n} {
\draw (\x,0) ++(0.5,6.5) node {\tiny \x};
......@@ -1131,7 +1140,7 @@ case $D$ permet de noter le décalage à effectuer.
\vspace*{1cm}
\begin{tikzpicture}[xscale=0.4,yscale=0.4]
\begin{tikzpicture}[xscale=0.45,yscale=0.45]
\foreach \c [count=\x from 0] in {h,a,r,h,a} {
\draw (\x,0) ++(0.5,-0.5) node {\tiny \x};
\draw[anchor=base] (\x,0) ++(0.5,0.25) node {\texttt{\c}};
......
......@@ -9,7 +9,7 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
......@@ -18,7 +18,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
......@@ -34,7 +34,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
......@@ -54,7 +54,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
......@@ -71,7 +71,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 6,
"metadata": {},
"outputs": [
{
......@@ -155,7 +155,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
......@@ -172,7 +172,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
......@@ -181,7 +181,7 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
......@@ -200,7 +200,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 10,
"metadata": {},
"outputs": [
{
......@@ -222,7 +222,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
......@@ -232,15 +232,15 @@
" for j in range(len(m)):\n",
" for letter in alphabet:\n",
" if tableGC[letter][j] is None:\n",
" shift[letter][j] = j+1\n",
" shift[letter][j] = j\n",
" else:\n",
" shift[letter][j] = j - tableGC[letter][j]+1\n",
" shift[letter][j] = j - tableGC[letter][j]\n",
" return shift"
]
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
......@@ -249,7 +249,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 34,
"metadata": {},
"outputs": [
{
......@@ -257,11 +257,11 @@
"output_type": "stream",
"text": [
"\t\ta\th\tr\t\n",
"h\t0\t2\t1\t2\t\n",
"a\t1\t1\t2\t3\t\n",
"r\t2\t2\t3\t1\t\n",
"h\t3\t3\t1\t2\t\n",
"a\t4\t1\t2\t3\t\n"
"h\t0\t1\t0\t1\t\n",
"a\t1\t0\t1\t2\t\n",
"r\t2\t1\t2\t0\t\n",
"h\t3\t2\t0\t1\t\n",
"a\t4\t0\t1\t2\t\n"
]
}
],
......@@ -271,7 +271,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
......@@ -291,17 +291,13 @@
" decalage = shiftGC[texte[i+j]][j]\n",
" else:\n",
" decalage = j+1\n",
" #if texte[i] in lastOcc:\n",
" # decalage = j-lastOcc[texte[i]][j]+1\n",
" #else:\n",
" # decalage = j+1 \n",
" print(\"echec en {} sur {} et {} : {} {} -> décalage {}\".format(i,texte[i+j],motif[j],texte[i:i+j+1],motif[0:j+1],decalage))\n",
" i += decalage"
]
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 36,
"metadata": {},
"outputs": [
{
......@@ -323,29 +319,34 @@
"echec en 15 sur s et h : s h -> décalage 1\n",
"echec en 16 sur et h : h -> décalage 1\n",
"*** motif trouvé en 17 : harha harha\n",
"echec en 18 sur a et h : a h -> décalage 2\n",
"echec en 18 sur a et h : a h -> décalage 1\n",
"echec en 19 sur r et h : r h -> décalage 1\n",
"echec en 20 sur et r : ha har -> décalage 3\n",
"echec en 23 sur c et h : c h -> décalage 1\n",
"echec en 24 sur a et h : a h -> décalage 2\n",
"echec en 24 sur a et h : a h -> décalage 1\n",
"echec en 25 sur c et h : c h -> décalage 1\n",
"echec en 26 sur e et a : he ha -> décalage 2\n",
"echec en 28 sur s et h : s h -> décalage 1\n",
"echec en 29 sur et h : h -> décalage 1\n",
"echec en 30 sur d et h : d h -> décalage 1\n",
"echec en 31 sur a et h : a h -> décalage 2\n",
"echec en 31 sur a et h : a h -> décalage 1\n",
"echec en 32 sur n et h : n h -> décalage 1\n",
"echec en 33 sur s et h : s h -> décalage 1\n",
"echec en 34 sur et h : h -> décalage 1\n",
"echec en 35 sur l et h : l h -> décalage 1\n",
"echec en 36 sur e et h : e h -> décalage 1\n",
"echec en 37 sur et h : h -> décalage 1\n",
"echec en 38 sur a et h : hara harh -> décalage 3\n",
"echec en 41 sur a et h : a h -> décalage 2\n",
"echec en 38 sur a et h : hara harh -> décalage 2\n",
"echec en 40 sur r et h : r h -> décalage 1\n",
"echec en 41 sur a et h : a h -> décalage 1\n",
"echec en 42 sur s et h : s h -> décalage 1\n",
"echec en 43 sur et h : h -> décalage 1\n",
"echec en 44 sur d et h : d h -> décalage 1\n",
"echec en 45 sur e et h : e h -> décalage 1\n",
"echec en 46 sur s et h : s h -> décalage 1\n",
"echec en 47 sur et h : h -> décalage 1\n",
"echec en 48 sur i et h : hari harh -> décalage 4\n",
"Nombre de comparaisons 53\n"
"Nombre de comparaisons 58\n"
]
}
],
......@@ -357,7 +358,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 37,
"metadata": {},
"outputs": [
{
......@@ -371,11 +372,11 @@
"h\t3\t2\t1\t3\t\n",
"a\t4\t4\t1\t3\t\n",
"\t\ta\tc\tg\t\n",
"h\t0\t2\t2\t1\t\n",
"a\t1\t3\t1\t2\t\n",
"r\t2\t1\t2\t3\t\n",
"h\t3\t2\t3\t1\t\n",
"a\t4\t1\t4\t2\t\n"
"h\t0\t1\t1\t0\t\n",
"a\t1\t2\t0\t1\t\n",
"r\t2\t0\t1\t2\t\n",
"h\t3\t1\t2\t0\t\n",
"a\t4\t0\t3\t1\t\n"
]
}
],
......@@ -395,7 +396,7 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
......@@ -413,42 +414,41 @@
" else:\n",
" if texte[i+j] in shiftGC:\n",
" decalage = shiftGC[texte[i+j]][j]\n",
" print(tableGC[texte[i+j]][j])\n",
" else:\n",
" decalage = j+1\n",
" #if texte[i] in lastOcc:\n",
" # decalage = j-lastOcc[texte[i]][j]+1\n",
" #else:\n",
" # decalage = j+1 \n",
" decalage = j \n",
" print(\"echec en {} sur {} et {} : {} {} -> décalage {}\".format(i,texte[i+j],motif[j],texte[i:i+j+1],motif[0:j+1],decalage))\n",
" i += decalage"
]
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"echec en 0 sur h et a : les h harha -> décalage 2\n",
"2\n",
"echec en 2 sur r et a : s har harha -> décalage 3\n",
"echec en 5 sur o et a : arico harha -> décalage 5\n",
"echec en 10 sur e et a : ts de harha -> décalage 5\n",
"2\n",
"echec en 15 sur r et a : s har harha -> décalage 3\n",
"echec en 18 sur et a : arha harha -> décalage 5\n",
"echec en 23 sur e et a : cache harha -> décalage 5\n",
"echec en 28 sur n et a : s dan harha -> décalage 5\n",
"echec en 33 sur et a : s le harha -> décalage 5\n",
"echec en 38 sur s et a : haras harha -> décalage 5\n",
"echec en 43 sur et a : des harha -> décalage 5\n",
"echec en 48 sur s et a : haris harha -> décalage 5\n",
"Nombre de comparaisons 12\n"
"echec en 0 sur h et a : les h harha -> décalage 1\n",
"echec en 1 sur et r : es har -> décalage 2\n",
"echec en 3 sur i et a : hari harha -> décalage 4\n",
"echec en 7 sur s et a : icots harha -> décalage 4\n",
"echec en 11 sur s et a : s des harha -> décalage 4\n",
"echec en 15 sur r et a : s har harha -> décalage 2\n",
"*** motif trouvé en 17 : harha harha\n",
"echec en 18 sur et a : arha harha -> décalage 4\n",
"echec en 22 sur h et a : cach harha -> décalage 1\n",
"echec en 23 sur e et a : cache harha -> décalage 4\n",
"echec en 27 sur d et h : es d harh -> décalage 3\n",
"echec en 30 sur et a : dans harha -> décalage 4\n",
"echec en 34 sur h et a : le h harha -> décalage 1\n",
"echec en 35 sur et r : le har -> décalage 2\n",
"echec en 37 sur r et h : har harh -> décalage 1\n",
"echec en 38 sur s et a : haras harha -> décalage 4\n",
"echec en 42 sur s et a : s des harha -> décalage 4\n",
"echec en 46 sur r et a : s har harha -> décalage 2\n",
"echec en 48 sur s et a : haris harha -> décalage 4\n",
"Nombre de comparaisons 29\n"
]
}
],
......@@ -467,7 +467,7 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
......@@ -492,7 +492,7 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": 41,
"metadata": {},
"outputs": [
{
......@@ -501,7 +501,7 @@
"[0, 2, 0, 0, 5]"
]
},
"execution_count": 19,
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
......@@ -512,7 +512,7 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": 42,
"metadata": {},
"outputs": [
{
......@@ -521,7 +521,7 @@
"[1, 0, 0, 2, 0, 4, 0, 8]"
]
},
"execution_count": 20,
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
......@@ -532,7 +532,7 @@
},
{
"cell_type": "code",
"execution_count": 21,
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
......@@ -556,7 +556,7 @@
},
{
"cell_type": "code",
"execution_count": 22,
"execution_count": 44,
"metadata": {},
"outputs": [
{
......@@ -565,7 +565,7 @@
"[3, 3, 3, 5, 1]"
]
},
"execution_count": 22,
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
......@@ -576,7 +576,7 @@
},
{
"cell_type": "code",
"execution_count": 23,
"execution_count": 45,
"metadata": {},
"outputs": [
{
......@@ -585,7 +585,7 @@
"[7, 7, 7, 2, 7, 4, 7, 1]"
]
},
"execution_count": 23,
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
......@@ -596,7 +596,7 @@
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
......@@ -619,7 +619,7 @@
},
{
"cell_type": "code",
"execution_count": 25,
"execution_count": 47,
"metadata": {},
"outputs": [
{
......@@ -685,7 +685,7 @@
},
{
"cell_type": "code",
"execution_count": 26,
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
......@@ -700,16 +700,16 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'r': 2, 'h': 1, 'a': 0}"
"{'h': 1, 'a': 0, 'r': 2}"
]
},
"execution_count": 27,
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
......@@ -720,16 +720,16 @@
},
{
"cell_type": "code",
"execution_count": 28,