Étape 3: code pour algorithme XOR en pointe [X]
Je trouve que je ne peux pas travailler sur tous les calculs dans ma tête assez rapide alors j’ai décidé de passer à l’ordinateur. Je suis un gars LINUX, alors je suis allé directement à AWK aussi vite que j’ai pu.
J’ai écrit un petit script pour tester au moins la théorie sur un jeu de base [10]. Ma version papier originale semble avoir quelques problèmes, mais en fin de compte, j’ai eu une table de vérité que je peux vivre avec.
1) que j’ai créé un fichier de 10 lignes, un chiffre sur chaque ligne commençant par 0.
2) que j’ai écrit une routine pour indexer ces numéros, accepter une entrée, exécuter l’algorithme et cracher le résultat.
----
#! / bin/bash
# baseX-xor.sh
echo -e $1, $2 | awk ' BEGIN {}
CNT = 1
tandis que (getline < « wheel.txt » > 0)
{
n [CNT] = $0 ; J’ai [0$] = CNT ; CNT ++
}
mylen = CNT-1 ; mymax = CNT-2
Close("Wheel.txt")
}
{
POS1 [$1] + 0 ; POS2 [$2] + 0
if(POS1==0) pos1 = 1
pos2 if(POS2==0) = 1
résultat = mymax-pos1-pos2
Si (résultat < = 0) résultat = résultat + mylen
Si (résultat < = 0) résultat = résultat + mylen
Si (résultat < = 0) résultat = résultat + mylen
impression n [résultat]
}'
----
J’ai ensuite couru un script de ligne de commande pour réaliser une matrice de la table de vérité :
----
pour X 0 1 2 3 4 5 6 7 8 9
faire
pour Y in 0 1 2 3 4 5 6 7 8 9
faire
O='./baseX-XOR.sh $X $Y'
echo -n « $O »
fait
ECHO
fait
----
0 1 2 3 4 5 6 7 8 9
0 6 5 4 3 2 1 0 9 8 7
1 5 4 3 2 1 0 9 8 7 6
2 4 3 2 1 0 9 8 7 6 5
3 3 2 1 0 9 8 7 6 5 4
4 2 1 0 9 8 7 6 5 4 3
5 1 0 9 8 7 6 5 4 3 2
6 0 9 8 7 6 5 4 3 2 1
7 9 8 7 6 5 4 3 2 1 0
8 8 7 6 5 4 3 2 1 0 9
9 7 6 5 4 3 2 1 0 9 8