2017-02-21 2 views
0

は、私たちが先に駆動車を持っていると仮定しましょう:増分/減分について「終了条件」を設定する最もエレガントな方法は?

まずシナリオ:

destination to: 100px 

を2番目のシナリオ:

destination to: -50px 

擬似コード:

var currentValueToAdd; 

if (valueToIncrementPosition > 0) { 
    if (currentPositionOfCar <= destination) { 
    currentValueToAdd = valueToIncrementPosition; 
    } else { 
    currentValueToAdd = 0; 
    } 
} else { 
    if (currentPositionOfCar >= destination) { 
    currentValueToAdd = valueToIncrementPosition; 
    } 
    else { 
    currentValueToAdd = 0; 
    } 
} 

car.style.position += currentValueToAdd + "px"; 

することができますように参照してください、私は-nまたはnをインクリメントすることができ、エンディングは下またはハイにすることができます現在の車の位置よりもかなり高い。だから、運転を止めるための私の条件は実際には目的地よりも少なくてもそれ以上でも変わります。

車の停止に上記の解決策を書くより良い方法はありますか?多分数種類の式ですか?このような名前がなければ

Math.abs(currentPositionOfCar) > Math.abs(destination) ? 0 : valueToIncrementPosition; 
+0

ビット元のコードのように動作しますが、とても楽しいだろう改善するために働く:) –

+0

"エレガント"と呼ばれるものに依存します。 –

+0

@Bálint短い! :) – Asperger

答えて

1
currentPositionOfCar = Math.min(currentPositionOfCar + valueToIncrementPosition, Math.abs(destination)); 

は は は、私はdoesntの絶対値を使用していたていた

他のアイデアは、右のいずれかのように見える

a = Math.min(a + b, Math.abs(c)); 
// Golfed: 
a=(m=Math).min(a+b,m.abs(c)); // Don't use this, this is very hacky 

これも利点があり、それが行います車はfhs目的地にちょうど止まる。

あなたは本当に短いものにしたい場合:

a += b; 
a > Math.abs(c) && a -= b; 
// Golfed: 
(a+=b)>Math.abs(c)&&a-=b 

しかし、これは目的地に正確にstooしないと、このの作業例を持っ

+0

@ Teemu「ppcgの人よりも短くできる人は誰もいない」私は間違ってその部分を残しました –

+0

@テムハヘェ私は彼が言ったことを覚えています:D – Asperger

+0

@テムーああ、忘れて、それを忘れて、それを編集する –

関連する問題