を維持符号:はIは、そのモジュラス演算子<code>Mod(a,b,m)</code>を捜しているモジュラー距離
Mod(2,6,7)=-3
Mod(6,2,7)=3
、オペレータは、2〜4ホップ経路を回避し6の代わりに、長さ3のパスを経由して周りを回ります。a
から出発してb
に行くと、答えはパスの方向を保持します。
次のコードはこれを計算しますが、ほぼ確実に良い方法があります。
#include <iostream>
#include <cmath>
double absmin(double a, double b){
if(std::abs(a)<std::abs(b))
return a;
else
return b;
}
double ModDist(double src, double dest, double m){
if(dest<src)
return absmin(dest+m-src, dest-src);
else
return absmin(dest-src, dest-m-src);
}
int main(){
std::cout<<ModDist(2,6,7)<<std::endl;
std::cout<<ModDist(6,2,7)<<std::endl;
}
Cタグを削除することをお勧めします。 – chux
[Code Review](http://codereview.stackexchange.com/)の可能性があります。 – Steve
モジュラス7で他のサンプルに期待していることを示してください。また、 'ModDist(2,5,6)'と 'ModDist(5,2,6)'から何を期待していますか? –