練習でプログラムしてたのでアウトプットです。
今回は個人的にスッキリしたコードになりました。
qiita.rb
number = gets.chomp.split(' ').map{|i| i .to_i}
total = []
number.permutation(4) do |n|
total.push((n[0]*10+n[1]) + (n[2]*10 + n[3]))
end
puts total.max
・入力した4つの数字を2つに切り分けて、それぞれに10の位、1の位を与える。
・できた2けたの数字を加算する。
・それを予め入力した4つの数字のならび全てに適用する
・その合計値が一番大きいものを出力しました。
わかりにいくいと思うので下記処理内容です。
qiita.rb
#入力した値
1 2 3 4
#パターン出力
46 ←12+ 34
55 ←34+ 21
37 以下全パターン
55
37
46
55
64
37
64
37
55
55
73
46
73
46
55
64
73
55
73
55
64
#最大値 73
※実際はパターン出力も省略してます。
これをやるにあたり、何となく処理の流れは思い浮かんだのですが
配列の並びのパターンをどう抽出するか、、、とひたすら調べまくってたら
permutation を見つけました。
参考記事 https://qiita.com/shshimamo/items/5a458ecc88e7c24d5112
もっと時間をかけずに出来るようになりたいですねえ、、
何かアドバイスがあれば是非コメントお待ちしております!