2014-06-19 38 views
1

假設我的數字爲1到24,我想從12 中獲得這些餘數,所以mod 12的序列將是1到11,另外還有0(12和24)。 但我需要這個0始終是12. 如何在一個班輪中實現這樣的事情(沒有額外的變量或ifs)。 現在的代碼是這樣的:獲得序列的剩餘部分,但有零餘數的零元素

for (int i = 1; i <= 24; i++) 
{ 
    Console.WriteLine(i % 12); 
} 

回答

1

ONELINE解決方案(略有開銷雖然:i % 12可以計算兩次):

for (int i = 1; i <= 24; i++) 
{ 
    Console.WriteLine(i % 12 == 0 ? 12 : i % 12); 
} 

純算術的解決辦法是

for (int i = 1; i <= 24; i++) 
{ 
    Console.WriteLine(12 - (12 - i % 12) % 12); 
} 
+0

我思考它是否可以通過一些算法完成(由於序列的清晰模式),所以我們沒有條件。 – rene98c

+0

@ rene98c - 任何其他(潛在的)數學解決方案只是模數 – Sayse

+0

的冗長版本感謝算術一德米特里;)。我不知道爲什麼,但我比你提出的第一個更喜歡這個。 – rene98c

1

另一種算術選項:

for (int i = 1; i <= 24; i++) 
    { 
     Console.WriteLine((i-1) % 12 + 1); 
    } 

這個簡單的確保的「啓動」移動一個位於左側(I-1),並校正從0到11比1的結果,以12 BIJ加1的結果

+0

看起來很整齊 - 最後使用這個。似乎相當明顯,這只是沒有自己。 – rene98c