2012-11-28 62 views
0

首先,讓我告誡你,我的數學知識是相當有限的(因此我來這裏問這個問題)。最大值到0到最大值算法

這是一個愚蠢的例子,但我基本想要的是有一個可變數量的行,並能夠設置一個最大值,然後對每個漸進行減少該值,直到在這一點開始增加值的一半再次回到最後一排。

爲了說明這一點......鑑於:maxValue = 20,並rows = 5,我需要能夠得到爲行值以下值(是的,甚至是0):

row 1: 20 
row 2: 10 
row 3: 0 
row 4: 10 
row 5: 20 

有雖然限制,因爲我想在使用SASS的Compass中這樣做。有關可用操作,請參閱here,但爲了給您提供它的要點,只有基本操作可用。

我可以循環遍歷行,所以只需要對系列中每個單獨行都有效的計算。這是一種循環的,我可以使用:

$maxValue:20; 
$rows:5; 

@for $i from 1 through $rows { 
    // calculation here. 
} 
+0

Sass確實有一個底層函數:http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#floor-instance_method – cimmanon

+0

受過教育!謝謝:) – Remy

回答

2

我還沒有真正與上海社會科學院工作過,但嘗試這樣的事情用一個基本的,如果和地板的功能,不知道是否會工作

// set various variables 
$maxValue:20; 
$rows:5; 
// get row number before middle row, this instance it will be 2 
$middleRow = floor($maxValue/$rows) 
// get increment amount, this instance should be 10 
$decreaseValue = (max/floor(rows/2)) 

@for $i from 0 through $rows - 1 { 

    @if $i <= $middleRow { 

     ($maxValue- ($decreaseValue * $i)) 

    } 

    @else{ 

    // times by -1 to make positive value 
     ($maxValue - ($decreaseValue * -$i)) * -1 

    } 
} 

我已經測試了上述js(相對語法),並且它產生了所需的結果(jsBin example)。希望這可以幫助

+0

工作就像一個魅力!太感謝了! – Remy