2013-02-14 67 views
0

我正在做projecteuler.com问题。问题是这样的:两个数组的联合等于第一个数组?

如果我们在下面列出10是3或 5的倍数的所有自然数,我们得到了3,5,6和9这倍数的总和23.找到 所有倍数3或5的所有倍数低于1000.

我想为每个3和5创建数组倍数为1000,并采取它们的联合,这不会让我重复(所以我不需要拨打array.uniq)。我已经写是这样的:

def get_range(range, step) 
    ret = [] 
    range.step(step) { |i| ret << i } 
    return ret 
end 
p get_range(0..1000, 3) | get_range(0..1000, 5) 

这出来这个结果:

[0,3,6,9,12,15,18,21,24,27,30 ,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,以及美国法典,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180 ,183,186,189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255。在一个实施方案中,所述方法包括: ,258,261,264,267,270,273,276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,以及其中之一或其组合,333,336,339,342,345,34 8,351,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396, 423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495, 498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,561,564,567,570, 573,576,579,582,585,588,591,594,597,600,603,606,609,612,615,618,621,624,627,630,633,636,639,642,645, 648,651,654,657,660,663,666,669,672,675,678,681,684,687,690,693,696,699,702,705,708,711,714,717,720, 723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795, 798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870, 873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945, 94 8,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,5,10,20,25,35,40,50,所述方法包括:在步骤(a)和(b)中使用本发明的化合物,其中所述化合物包含选自以下的化合物:55,65,70,80,85,95,100,110,115,125,130,140,​​145,155,160,170,175,185,190,200,205,215,220,230,235,所述方法包括:在步骤(a)中,将所述化合物与所述化合物进行反应,所述化合物包含选自以下的化合物:245,250,260,265,275,280,290,295,305,310,320,325,335,340,350,355,365,370,380,385,395,400,410,415,425,所述方法包括在步骤430,440,440,445,455,460,470,475,485,450,500,505,515,520,530,535,545,550,560,565,575,580, 620,625,635,640,650,655,665,670,680,685,695,700,710,715,725,730,740,745,755,760,770,775,785,790,800, 805,815,820,830,835,845,850,860,865,875,880,890,895,905,910,920,925,935,940,950,955,965,970,980,985, 995]

这是第一阵列。如果我换范围的顺序,然后我得到的5倍数的阵列我想对IRB是这样的:

[1,3,5] | [3, 5, 7] 
# => [1, 3, 5, 7] 

我失去了一些东西,我只是要疯了,或者我遇到Ruby中的错误?

+0

不要轻易声称错误。你只是一个初学者。从你在这个问题中看到的粗心大意来看,你很可能永远不会在Ruby中发现真正的bug。 – sawa 2013-02-14 13:01:45

+1

而不是提供从0..1000测试的样本,为什么不能做0 ..10或0..100?冗余无助于澄清问题,但它确实混淆了这个问题,并让我们通过了更多不必要的信息。提问时,简洁是很重要的。此外,在线编程挑战时的想法是让你自己解决它们,而不是寻求解决它们的帮助。 – 2013-02-14 14:38:37

回答

2

你的阵列是正确的。它包含3 的倍数。5.看最后。它只是没有排序。

+0

Doh,我觉得自己像个白痴。谢谢。 /捂脸 – 2013-02-14 12:18:29

相关问题