Permutez 1 et 2 sans utiliser l'instruction if

Il y avait une situation où je voulais recevoir une variable contenant 1 ou 2 et renvoyer 2 pour 1 et 1 pour 2.

J'ai appris un moyen pratique d'écrire 1 et 2 qui peut être utilisé dans un tel cas, alors prenez note.

Postscript

Comme indiqué dans les commentaires, il y avait une manière plus simple de l'écrire.

Swap 1 et 2

n = 1
print(3-n) # 2
m = 2
print(3-m) # 1 

Swap 0 et 1

n = 0
print(1-n) # 1
m = 1
print(1-m) # 0 

Généralisation

Lorsque $ x $ est soit $ n $, soit $ n-1 $

\begin{eqnarray}
f(x) &=& 2n-1-x\\&=&\left\{
\begin{array}{ll}
n & (x = n-1) \\
n-1 & (x =n)
\end{array}\right.
\end{eqnarray}

Évident sans preuve.

Donc, ** L'histoire jusqu'à présent est suffisante, vous n'avez donc pas à lire le reste. ** **

Celui que vous n'avez pas à lire (article original)

Je vais laisser l'article original pour le moment.

Comment écrire en échangeant 1 et 2

n = 1
print(n%2+1) # 2
m = 2
print(m%2+1) # 1 

seulement ça.

Pensez à d'autres chiffres

Ce seul n'est pas un article, alors pensons aux autres nombres comme exercice cérébral.

Swap 0 et 1

Pensez à permuter les 0 et les 1. Il n'y a pas de gestion avec bool.

n = 1
print((n+1)%2) # 0
m = 0
print((m+1)%2) # 1

l'a fait.

Swap 2 et 3

De la même manière, remplacez 2 par 3 et 3 par 2.

n = 2
print((n+1)%2+2) # 3
m = 3
print((m+1)%2+2) # 2

Swap 3 et 4

Essayez de remplacer 3 par 4 et 4 par 3.

n = 3
print(n%2+3) # 4
m = 4
print(m%2+3) # 3 

Généralisons

La formule de calcul change selon que 2n $ et 2n-1 $ sont échangés ou 2n $ et 2n $ + 1 $ sont échangés.

Lors de l'échange de 2n $ et 2n-1 $

\begin{eqnarray}
f(x) &=&x \bmod 2 +2n-1 \\&=& \left\{
\begin{array}{ll}
2n & (x = 2n-1) \\
2n-1 & (x =2n)
\end{array}
\right.
\end{eqnarray}

En échangeant 2n $ et 2n $ + 1 $

\begin{eqnarray}
f(x) &=&(x+1) \bmod 2 +2n \\&=& \left\{
\begin{array}{ll}
2n & (x = 2n+1) \\
2n+1 & (x =2n)
\end{array}
\right.
\end{eqnarray}

~~ Je réfléchis en écrivant de manière appropriée, il peut donc y avoir une manière d'écrire plus efficace. Il y avait ~~ (haut de l'article).

Résumé

En cas de doute, utilisez l'instruction if.

Recommended Posts

Permutez 1 et 2 sans utiliser l'instruction if
Lors de l'utilisation si et lors de l'utilisation pendant
[Python] Opération de fichier utilisant l'instruction if
Instruction Python if
Instruction if peu familière
[Python] instruction if
Calcul de l'excédent sans utiliser le%
Lors de l'écriture d'une instruction if avec une expression régulière
Tri à bulles sans utiliser le tri
Écrivez FizzBuzz sans utiliser "="
Tri rapide sans utiliser le tri
Avec et sans WSGI
Instruction if de base Python
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Considérez si la programmation était un anime en Python et C
[Python] Comment écrire une instruction if en une phrase.