はい。言いたいです!
これ1時間以内で書けたらエンジニアでーす✌︎って言ってもええらしいすー!
http://www.shiftedup.com/2015/05/07/five-programming-problems-every-software-engineer-should-be-able-to-solve-in-less-than-1-hour
ってことで、Rubyで一つずつやってみる。
英語得意ちゃうんで間違ってたら訂正してください🙇
1. 数字の入った配列の合計求めてみ
nums = [1,2,3,4,5]
nums.sum # => 15
# sum使うなとか言われそう。
nums.inject { |sum, num| sum + num } # => 15
# もっとエレガントなのありそう
# あった!
nums.inject(:+) # => 15
# How Elegance !!
2. 2つの配列の値を交互に格納した配列作ってみ
arr1 = [1,2,3]
arr2 = ['a', 'b', 'c']
arr1.zip(arr2).flatten # => [1, 'a', 2, 'b', 3, 'c']
3. フィボナッチ数列って聞いただけ拒絶反応起こしました。
フィ、フィ、フィボナッチ!?
(0..100).inject([0, 1]) {|fib, i| fib << fib[i] + fib[i+1] }
らしいです。。。
http://blog.toshimaru.net/ruby-inject/
4. 配列に入ってる数字で最大値作ってみーや
arr = [50, 2, 1, 9]
asc = arr.join().split('').sort {|a, b| b <=> a} # => ["9", "5", "2", "1", "0"]
asc.join() # => "95210"
修正:50を5と0に分割してはいけないので、正しくは下のようになります。
input = [50, 2, 1, 9]
output = input.map(&:to_s).sort{|a, b| b + a <=> a + b}.join().to_i
5. 1〜9の間にプラスかマイナス入れて必ず100になるようなの作ってみーや
# 順番は固定、数字と数字の間に(+、−)を入れる。もしくは数字を結合して、結果が100になる式を作るんやて。
# しかも全パターン出力してみなはれ。やて。
# 1,2,3,4,5,6,7,8,9
# 例えばこんな感じ: 1 + 2 + 34 – 5 + 67 – 8 + 9 = 100.
# ちょっと何言ってるかわからないです。はい。
てことで、出直してきます。
普段何してるんですか?って聞かれたら、ニートです!って言います。
他の言語でも良いので、エレガントなコード教えてくださると喜びます🙇