masarumasuのブログ

現役文系大学生プログラマー。使用言語はJavaとRuby。意識高いことから低いことまでいろいろ書きます。

Rubyの神メソッド

masarumasuです。

先ほどのAtCoderでのコンテストで一番簡単だった問題があります。

abc050.contest.atcoder.jp

「問題文

joisinoお姉ちゃんは、A op B という式の値を計算したいと思っています。 ここで、A,B は整数で、op は、+ または - の記号です。 あなたの仕事は、joisinoお姉ちゃんの代わりにこれを求めるプログラムを作ることです。」

AtCoderより引用。

入力される値を計算して出力するだけの問題です。この手の問題は過去にもやったことがあり、これは解けました。

一般的な解法としては

opの部分が+か-かif文で判定し、判定結果に応じた計算をするという解法であります。

 

実際に私の回答は

  1. a,n,b=gets.chomp.split
  2. a=a.to_i
  3. b=b.to_i
  4. if n=="+"
  5. puts a+b
  6. else
  7. puts a-b
  8. end

となっております。

しかし、Rubyはいつも常識の先を行きます。

AtCoderではコンテストの終了後、他の参加者の回答を見ることが出来るのですが、Rubyでは驚異的な短さのコードを見ました。

p eval gets

これで終わりです。

一行です。

3語です。

英語で言う

I have a pen.的なノリです。(てかI have a pen.の方が長い。)

これを見て感動を覚えました。Rubyよ。お前は神か。

そんな神言語Rubyのさらに神ってる部分がevalメソッドです。これは入力された文字列をそのまま処理として実行してしまうという神メソッドです。今回の場合は文字列として入力された計算式、例えば1+7をそのまま数式として処理し、答えの8を出力することが出来ます。こんな訳でRuby開始12日目でありますが、Rubyへの信仰がさらに深まりました。

AtCoder初参戦の結果

masarumasuです。

12月18日にAtCoder初参戦でした。今回の使用言語はRubyです。競プロで一番参加人口が多いとみられるC++や私が最初に覚えた言語であるJavaよりも、簡潔でシンプルなコードを書けるので使用しています。

結果は266人中239位という散々な結果でした。難易度別に4問与えられたのですが、一番簡単な問題しか正解することが出来ませんでした。今回は問題を見て解法の検討がつかなかったと同時にAtCoder参戦直前に筋トレをしたため、その疲れが来て開始20~30分くらいで寝ました。起きた時には終わっていて、自分の非力さを痛感した大会となりました。いろいろな問題を解いて、実力を高めたいと、今一度感じました。

次回は寝ずにやりきることを目標とします。(笑)

AtCoderで東大生プログラマーとバトル!

masarumasuです。

前回独学でandroidアプリを公開した話を書きましたが、アプリ製作以外にも競技プログラミングというものにも参加しています。

前回記事はこちら↓ 

masarumasu.hatenablog.com

競技プログラミング(以下、競プロ)とは、プログラミングのアルゴリズム問題を与えられた時間内に解いて、その正確さと、スピードを競うコンテストです。

競プロをやると何がいいかと言うと、効率的なアルゴリズムを学べたり、分かりやすいコードを書く事ができます。これにより、業務効率化や質の高いプロダクトを作ることが出来るようになります。

競技プログラミングには様々なサイトや大会がありますが、今回はAtCoderというサイトを紹介したいと思います。

AtCoder

このサイトは競プロの大会を約週1ペースで行っており、オンラインで大会に参加することができます。また過去問もいつでも復習することができ、競プロを始めるなら、まずはここから入るといいと思います!

そしてこのサイトの年齢層を見てみると現役大学生や高専生と言った20歳前後の人間が多いと思います。参加者の所属も見れたりするのですが、多数の東大生が参加しています。つまり、プログラミングで東大生とバトル出来るという、俺的にはバイブス上がるような大会であります。ちなみに俺は東大生ではないです。

そして実は過去問は解いたことあるのですが、リアルタイムで大会に参戦するのは今日の夜の大会が初めてです。

何人の東大生に勝てるか、楽しみです。結果はまたブログで報告します。

 

 

プログラミング未経験文系大学生が2ヶ月の独学でandroidアプリを公開した話。

masarumasuです。

 

ブログの自己紹介記事を除くとこれが初めての記事となります。テーマは「プログラミング」です。私は文系大学生ですが、プログラミングを仕事にしたいと思い、今年の9月半ばに勉強を始めました。しかし、文系からプログラマーを目指すとなると、情報系の学生に比べて、就活が不利になると考えられます。そこでandroidアプリを公開すれば、その差をカバー出来ると考えました。プログラミングの勉強を始めたところから、公開までどのような道を歩んだかを簡単に紹介したいと思います。

 

2016年9月半ば

プログラマーになろうと思い立つ。Progateに登録し、Java入門を始める。

prog-8.com

数あるオンラインプログラミング学習サービスの中でもProgateはおすすめです。

実際にオンライン実行環境でコードを書きながらプログラミングを学ぶことが出来ます。

 

2016年10月始め

ドットインストールでandroidアプリ入門を学ぶ。

http://dotinstall.com/

オンラインプログラミングサービスの中では一番有名なんじゃないかな?

PCにAndroid Studioをインストールして、

見よう見まねでおみくじアプリとか作りました。

2016年10月

オリジナルアプリ(非公開)完成。ギャラリーみたいなアプリを作りました。自分の好きなアニメのニセコイの画像を使っているので公開はしていません。

2016年11月

上旬

ネットで男女の身長差から異性だった場合の身長が分かる計算を知り、これをアプリ化しようと決意。

20日に「もし異性として生まれていたら身長何cm?」を公開。

play.google.com

28日に上記のアプリの英語版「change sex,change height.」を公開。

play.google.com

後に、国によって男女の身長差違うやんと気づき、英語版はインド版に修正。

同じ頃に友人が資格試験を受けるとのことで、資格試験用の簡単なクイズアプリを作成(非公開)。

2016年12月

10日

ブラジルがandroidユーザー数多いのでブラジル版公開!!(笑)

Google翻訳ポルトガル語で実装しました。

正直自分自身何書いてるか分からないです(笑)。

play.google.com

宣伝をほとんどしてないこととかあって、DL数はさほど伸びていませんが、興味持ってもらえると嬉しいです。

こんな感じで公開しました。自分の作ったプロダクトが少しでも世の中に影響を及ぼしていると考えるところにやりがいを感じています。インド版は今日時点で10人のインド人の方にDLして貰いました。ほんの少しでもインド人の人生に影響を及ぼしていると考えるとなんだか楽しいです。

以上で今回の記事を終わりとします。

 

初めまして。masarumasuです。

初めまして現役文系大学生プログラマーのmasarumasuと申します。

プログラミング、就活、日本社会、アニメ・マンガ、音楽などのいろいろなテーマでブログを書きたいと思います。よろしくお願いします。