foreach文で割り算
foreach文の思わぬ使い方
正の整数を正の整数で割ったときの余りの計算をforeach文で行うことができますが、ここで注目してほしいのは大小評価による条件分岐をしていないことです。
入力:
\begin{tikzpicture} \tikzmath{ \n=334; \m=13; } \global\edef\divisor{\n} \global\edef\divisible{\m} \foreach \p in {-m, 0, ..., \n}{ \tikzmath{ \l=int(\n-\p); } \global\edef\remainder{\l} } \end{tikzpicture} \divisor を\divisible で割った余りは\remainder です
出力:
334を13で割った余りは9です
なぜ-mからか?
\foreach \p in {0, \m, ..., \n}だと\n<\mのときにバグります。例えば
7を13で割った余りは-6です
となります。バグの理由はforeachの仕様(2つ目までは必ず実行する)に由来しています。
なぜ\globalが必要か?
foreach文中の変更はローカルで、ループが進むたびに捨てられるデータであるためです。
TikZパッケージのこれくらいの使用は想定されている気がしますが、うまく使うと想定外のことができるのかもしれません
ぺりをだねぇ