0

projecteuler.comから問題が発生しています。質問はこれです:

3または5の倍数である10未満のすべての自然数をリストすると、3、5、6、および9になります。これらの倍数の合計は23です。1000未満の3または5のすべての倍数の合計を求めます。

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、348、351、354、357、360、363、366、369、372 、375、378、381、384、387、390、393、396、399、402、405、408、411、414、417、420、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、948、951、954、957、960、963、966、969、972、975、978、981、984、 987、990、993、996、999、5、10、20、25、35、40、50、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、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、445、455、460、470、475、485、490、500、505、515、 520、530、535、545、550、560、565、575、580、590、595、605、610、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]580、590、595、605、610、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]580、590、595、605、610、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でバグに遭遇したのでしょうか。

4

1 に答える 1

2

配列は正しいです。3と5の倍数が含まれています。最後を見てください。ソートされていないだけです。

于 2013-02-14T12:07:00.490 に答える