IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Inst. Tech View

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第48回 Rubyによるプログラミング例 2015年5月

 今回のInst. Tech Viewは、プログラミング言語Rubyについての話題です。

 突然ですが、AOJ(Aizu Online Judge)というサイトをご存知でしょうか。こちらは競技プログラミングのために会津大学が運営しているサイトです。こちらのサイトでは様々なプログラミングに関する課題が提示されており、お好きな課題を解いて結果を投稿することができます。

AIZU ONLINE JUDGE: Programming Challenge
http://judge.u-aizu.ac.jp/

プログラミングスキル向上のため、様々なブログでこちらの課題に取り組む記事が公開されています。

今回はこちらのサイトで公開されている問題をRubyで取り組んでみたいと思います。

Matrix-like Computation
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0102

問題文引用:
以下の表のように、与えられた表の縦・横の値の合計を、それぞれの行・列で求め出力して終了するプログラムを作成してください。縦・横のデータ数は10以下とし、それぞれの数字は100以下の整数とします。 出力は右詰め5桁で出力してください。

52 96 15 20
86 22 35 45
45 78 54 36
16 86 74 55

これを以下の表にします。

52 96 15 20 183 <- 行の最後にその行の合計を挿入
86 22 35 45 188
45 78 54 36 213
16 86 74 55 231
199 282 178 156 815 <- 列の最後にその列の合計を挿入

今回は、上記データが配列で与えられているとして、最終結果を右詰め5桁で出力するプログラムを作成してみました。

sample.rb

input = [
  [52, 96, 15, 20],
  [86, 22, 35, 45],
  [45, 78, 54, 36],
  [16, 86, 74, 55]
]
# 合計を配列末尾に追加する処理
output = input
  .map{|row| row << row.inject(:+) }   # 横の合計を求めて配列末尾に追加
  .transpose                           # 横の配列を縦の配列に変換
  .map{|col| col << col.inject(:+) }   # 縦の合計を求めて配列末尾に追加
  .transpose                           # 縦の配列を横の配列に変換
# 結果を右詰め5桁で出力
output.each do |line|
  puts line.map{|num| num.to_s.rjust(5) }.join
end

実際に実行して試される場合は#以降を含むコメントをすべて消してください。

以下が実行結果です。

   52   96   15   20  183
   86   22   35   45  188
   45   78   54   36  213
   16   86   74   55  231
  199  282  178  156  815

意図した結果が右詰め5桁で出力されています。

今回のような問題は他の言語ですと、for文などを入れ子にして2次元配列を扱うコードを記述するのが一般的かと思いますが、Rubyには既知の問題を解決できる機能が豊富に備わっており、初心者の方でもあまりコードを記述しなくても今回のような問題は解決することができます。

 既に弊社のトレーニングをご受講いただいているお客様にはぜひ、プログラミングスキル向上に向けて様々な課題にチャレンジいただければと思います。

また、Rubyの採用をご検討いただいているお客様には弊社トレーニングで基本スキルを身に付けることが可能ですので、ぜひこの機会にご検討いただければと思います。

皆様のご受講を、心よりお待ちしております。

■■■ コースの詳細情報 ■■■  ※価格はメルマガ配信時点の価格です。

R002:Ruby入門 version 2.1対応
期間:2日間
価格:\80,000(税抜)

R120:Ruby 技術者認定試験 Silver(RY0-100)対策 version 2.1
期間:1日間
価格:\38,000(税抜)

R121:Ruby 技術者認定試験 Gold(RY0-200)対策 version 2.1
期間:1日間
価格:\38,000(税抜)

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート