2
私はインクリメンタル(+1)シーケンスの連結セットからなる配列を持っています。シーケンスの最初と最後の要素を返します
sequences = [2,3,4,7,12,13,14,15]
私は、各シーケンスの最初と最後の要素を取得し、それらの値を持つ配列を返すようにしようとしている。ここでは3つのシーケンスを持つ例です。上記の配列から、結果は次のようになります。
[[2,4][7,7][12,15]]
私は私が仕事だろうと思ったが、それは唯一の最初のシーケンスを返します。このかなり単純な解決策を作ってみました。どんな考え?そして/または、より良い解決策の提案?
new_array = []
start_point = sequences[0]
end_point = sequences[0]
sequences.map do |element|
if element == end_point + 1
end_point = element
elsif element == end_point
next
else
new_array << [start_point, end_point]
startpoint = element
end_point = element
end
end
return new_array
あなたはCで考えているのにRubyで書いてみるといくつかのボーナスポイントが必要です!しかし、Rubyでこれを行うと、ひどく非効率的なコードになることがよくあります。代わりに、可能な限り、 'map'、' inject'、 'tap'、' select'のような組み込みの関数型プログラミングのesqueメソッドを使用してください。これらのメソッドはすべてC言語で実装されているため、アルゴリズムを実行する際にはインタプリタの処理が大幅に減ります。 – Sean