紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【はじめてのあっとこーだー】Ubuntu16.04にVisual Studio Codeとrubyをインストールしてチュートリアル問題やってみた #AtCoder

f:id:yokoyantech:20180316213158p:plain

はじめに

Qiitaで見つけた以下の記事が面白そうです。

qiita.com

上記10問を解いて、プログラミングコンテストであるAtcoderのコンテストに参加してみようと思い立ったので、まずは環境構築からチュートリアル問題までやってみます。

Visual Studio Codeの取得

AtCoderの問題を見ながらプログラムを書く環境が必要になります。Visual Studio Codeが軽量で使いやすいと思います。 私のPCはUbuntuです。MicrosoftがUbuntu用にdebパッケージを提供しています。 以下の公式ページからパッケージを取得して、インストールします。 (debパッケージをクリックするだけでOKです)

code.visualstudio.com

ruby2.3.xのインストール

AtCoderの指定はruby2.3.3なので、2.3系をインストールします。

$ sudo apt install ruby

バージョンを確認します。

$ ruby -v
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

ひとまず2.3系なので良しとします。

チュートリアル問題を解いてみる

問題

A - はじめてのあっとこーだー(Welcome to AtCoder)

practice.contest.atcoder.jp

rubyで解いてみることにします。

キーボードからの入力

getsメソッドを使う。

文字列の末尾の改行を取り除いた新しい文字列を返す

str.chompメソッドを使う。

map(&:to_i)について

以下を参照。

teratail.com

イメージとしては次のような感じです。 1. map(& ) はブロック map{|x| } に展開 2. その中身は :to_s のメソッド .to_s

その結果 arr.map(&:to_s) は以下と同じことになります。

arr.map{|x| x.to_s}

実装

practice/practice.rbとして保存。

# 整数a
a = gets.to_i
# 整数b,c スペース区切り
b,c = gets.chomp.split(" ").map(&:to_i)
# 文字列s
s = gets.to_s
# 出力
print("#{a + b + c} #{s} \n")

デバッグ

irbを起動してデバッグする。

$ ruby practice/practice.rb
1
2 3
test
6 test

入力例その2。良さそうです。

$ ruby practice/practice.rb
72
128 256
myonmyon
456 myonmyon

提出

コードが書けたので提出します。

f:id:yokoyantech:20180316212815p:plain

まとめ

ということで本エントリでは、環境構築からAtCoderのチュートリアル問題を解くまでを記載しました。これから、Qiita記事にある10問を解いていってみたいと思います!