4
A
回答
5
只要是不同的(並且避免使用WHERE語句),你也可以這樣做:
var numbers = Enumerable.Range(0, n).Select(i => i * 3 + 9);
更新這也還沒有用完數字的利益。
0
我不能說這有什麼好處,我不是C#專家,我只是把它扼殺了出來,但我認爲這可能是使用yield
的典型例子。
internal IEnumerable Answer(N)
{
int n=0;
int i=9;
while (true)
{
if (i % 3 == 0)
{
n++;
yield return i;
}
if (n>=N) return;
i++;
}
}
0
你必須遍歷0或1到N並手動添加它們。或者,您可以創建函數f(int n),並在該函數中將結果緩存在會話中或全局哈希表或字典中。
僞代碼,其中HT是一個全球性的哈希表或字典(強烈建議以後,因爲它是強類型。
public int f(int n)
{
if(ht[n].containsValue)
return ht[n];
else
{
//do calculation
ht[n] = result;
return result;
}
}
只是一個方面說明,如果你做這類函數式編程的所有的時間,你可能想看看F#,甚至可能在鐵Ruby或Python
1
const int __N = 100;
const int __start = 9;
const int __divisibleBy = 3;
var array = Enumerable.Range(__start, __N * __divisibleBy).Where(x => x % __divisibleBy == 0).Take(__N).ToArray();
5
使用LINQ:
int[] numbers =
Enumerable.Range(9,10000)
.Where(x => x % 3 == 0)
.Take(20)
.ToArray();
如果需要還可以輕鬆parallelizeable使用PLINQ:
int[] numbers =
Enumerable.Range(9,10000)
.AsParallel() //added this line
.Where(x => x % 3 == 0)
.Take(20)
.ToArray();
1
int n = 10; // Take first 10 that meet criteria
int[] ia = Enumerable
.Range(0,999)
.Where(a => a % 3 == 0 && a.ToString()[0] == '9')
.Take(n)
.ToArray();
0
我希望看到這個解決方案如何棧上述Linq的解決方案。這裏的訣竅是修改謂詞,使用從s
開始的(q % m)
集合爲(s + (s % m) + m*n)
(其中n表示集合中的第n個值)。在我們的案例s=q
。
這個解決方案的唯一問題是它具有使您的實現取決於您選擇的特定模式(並非所有模式都有合適的謂詞)的副作用。但它具有優勢:
- 恰好n次迭代
- 永不失敗像上面提出的解決方案始終運行(WRT有限的
Range
)。
此外,無論你選擇什麼樣的模式,你將永遠需要修改謂語,所以你還不如讓數學高效:
static int[] givemeN(int n)
{
const int baseVal = 9;
const int modVal = 3;
int i = 0;
return Array.ConvertAll<int, int>(
new int[n],
new Converter<int, int>(
x => baseVal + (baseVal % modVal) +
((i++) * modVal)
));
}
編輯:我只是想說明如何可以使用此方法與delegate
,提高代碼複用:
static int[] givemeN(int n, Func<int, int> func)
{
int i = 0;
return Array.ConvertAll<int, int>(new int[n],
new Converter<int, int>(a => func(i++)));
}
你可以用givemeN(5, i => 9 + 3 * i)
使用它。再次請注意,我修改了謂詞,但您也可以使用最簡單的模式來完成此操作。
相關問題
- 1. VBScript:格式化字符串的最簡單方法是什麼?
- 2. 簡單的方法來初始化參考類型的數組?
- 3. 以最簡單的方式實例化一個對象數組?
- 4. 從字符串矢量初始化2d數組的最簡單方法是什麼?
- 5. 在行上打印數組的最簡單方法是什麼?
- 6. 更新mnesia模式最簡單的方法是什麼?
- 7. 用'<br>'取代'\ n'最簡單的方法是什麼?
- 8. 以編程方式向JSON添加數據的最簡單方法是什麼?
- 9. 什麼是創建標籤式菜單的最簡單方法?
- 10. 有沒有簡單的方法來創建一個初始化的數組?
- 11. 如何初始化大量的Android組件的簡單方式
- 12. 以最簡單,最簡單的方式編輯一個頁面
- 13. 將char數組轉換爲WCHAR數組最簡單的方法是什麼?
- 14. 獲得前x個字符的最簡單方法是什麼?
- 15. 初始化大量變量的最簡單方法
- 16. 什麼是從csv到數據庫的最簡單的方法?
- 17. NSArictionary的NSArray - 簡單初始化語法
- 18. 尋找數組重複單元的最簡單方法是什麼?
- 19. 在打字稿中返回實體數組最簡單的方法是什麼?
- 20. 將數組轉換爲xml字符串的最簡單方法是什麼?
- 21. 在PHP中加載一組文字數據的最簡單方法是什麼?
- 22. 什麼是存儲簡單空間數據的最佳方式
- 23. 以HTML/CSS/Javascript格式化貨幣的最簡單方法是什麼?
- 24. 簡單的node.js模塊與初始化方法
- 25. 從delphi的數組數據播放聲音最簡單的方法是什麼
- 26. 的UIDatePicker:時間模式:初始化時間(得是簡單)
- 27. 在(* args,** kwargs)python中處理參數初始值的簡單方法是什麼?
- 28. Python:如何以最簡單的方式比較兩個數組
- 29. 什麼是簡單合併文件的最快捷方式,什麼是分割數組的最快捷方式?
- 30. 在Python中初始化矩陣的更簡單方法是什麼?