読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

【Ruby】要素数と要素が与えられ、そこから最小値を返すワンライナー

タイトルの通り。 競技プログラミングを解いていて、ワンライナーで書きたくて試行錯誤したのでメモ。 d.hatena.ne.jp 問題はこんな感じ。 まず、要素数が与えられる。そのあとに要素数回、要素が与えられる。最小の要素を表示せよ。 abc005.contest.atcoder…

【Ruby】範囲の配列化

Rangeを使って配列を生成する方法について。ちょっと誤解していたのでメモ。 まず、[0..3]みたいに書けば[0, 1, 2]が生成されると思ってました。 実際には、0..3というRangeの入った要素数1の配列なんですね。 案外そんな勘違いをしている人はいるのでは?…

【Ruby】injectの初期値に配列を設定

そういえば、injectの初期値って、別に数値に限らないんじゃない? そんな風にふと思い立って、やってみました。 inject (Enumerable) - Rubyリファレンス injectのリファレンスを見ると、だいたい初期値のサンプルコードはこんな感じです。 [1, 1, 1].injec…

【Ruby】ordメソッドとchrメソッドで、1文字とコードポイントの変換

Rubyで文字と数値を変換する方法。ここでの数値とは、文字に割り当てられたコードポイントと呼ばれる数値です。 まず、文字から数値への変換はString#ordメソッドを使います。 http://ruby-doc.org/core-2.2.0/String.html#method-i-ord 反対に数値から文字…

【Ruby】配列の最多要素を取得

Rubyです。 配列でもっとも数の多い要素を取得する方法について、調べてみました。 どうやら、max_byを使うのがよさそう。 osa.hatenablog.com こんな感じ。 gist119ad15321cd485f62dcbe768c36d810 配列に対して、max_by関数を用いて、そのブロック内でcount…

【Ruby】割り算と剰余のメソッド復習

Rubyにはたくさんのメソッドがありますが、割り算や剰余を求めるためのメソッドがあるんですね。ビックリしました。 このページを参考にして、学習します。 www.rubylife.jp 写経写経。 gist2c79c5914680e5089045cd38af9e229d なるほど。。divとquoを使えば…

【Ruby】先頭の1文字を大文字にする

Rubyで先頭の1文字を大文字にする方法です。 結論から言うと、capitalizeメソッドを使えばOKです。 ref.xaio.jp gist60583a25c54aad08dafe0c1d1b25de77 いやあ、Rubyってホントになんでもありますね。 最初こんな風に書いてた自分が恥ずかしいです。。 gist…

【Ruby】Timeクラス入門

競技プログラミングで時間を扱う問題が出ました。 RubyでTime関数を書いたことがなく、良い機会なので軽く勉強してみました。 gist550d361d5256c1f74a5c3de7fc31d568 Time.atで時間の起点を指定できるのがいいですね。 フォーマット指定のstrftime関数も覚え…

【Ruby】コレクション系メソッドおさらい

Rubyを始めて4ヶ月。だいぶ慣れてきました。 ここらで配列操作系のメソッドをおさらいします。 gistですみません。。 gistd977462ee6b2417050933bd9bf759945 最初はeachだけでがんばっていたのですが、ようやくmapやinjectを使えるようになってきました。 …

【Ruby】max_byで最大要素の取得

Enumerableクラスのmax_byが地味に便利だったのでメモ。 リファレンス↓ ruby-doc.org Enumerableの要素に対して、評価式を渡して、大きいものを返します。 コード例は以下のとおり。 gist8829cdac7dead0afd066b9d7a80aaac7

【Ruby】時計の針の距離を算出する

競技プログラミングの回答メモ。 実際の問題はちょっと違うけど、エッセンスは同じです。 abc013.contest.atcoder.jp 問題 まず、2つの数値が与えられる。それぞれの数値は、時計の長針と短針の位置を指し示す。ここから、2つの針の最短距離を求めよ。 ※ …

【Ruby】文字列から特定の文字を消す

文字列から特定の文字を消す方法について。 String#deleteを使えばいいわけですね。 ruby-doc.org ただ、引数がややこしかったのでメモ。 参考になったポスト↓ qiita.com gistc156aecd5aa77d629579 引数には、範囲指定や”以外”指定ができるんですね。

Rubyで文字列を部分的に反転させる

あまり無いとは思いますが、文字列を部分的に反転させたいときの方法。 StringをRangeで範囲指定しつつ、reverseメソッドを使います。 gist477aacaa5609a4115db4 reverseには破壊的な方もありますが、反転部分は単なる参照なので通常の方で。 参考URL ruby-d…

【Ruby】配列の要素名から順序を取得したいなら、indexメソッド

Rubyの配列で、要素名から順序を知りたいときがあると思います。 以下に例を挙げます。 gist7d00197553233335eb3a 上記の例ではまず、色を格納した配列があります。 普通ならば、2行目のように添字で要素を取得するかと思います。 一方で、3行目のように要…

Rubyで末尾の改行を落とすなら、chompメソッド

Stringクラスのメソッドに、chompというメソッドがあります。 これを使うと、文字列の末尾にある改行文字を取り除いてくれます。 個人的には、競技プログラミングにて必要でした。入力文字列を整形する時に役立ちました。 chompメソッド、便利です。 参考: …

【Ruby】配列要素がすべてユニークであるかチェック

配列の要素が重複無く、すべてユニークであるかチェックする方法について。 僕がパッと思いついたのはこちら。 gist7ed4a70ffa0ec205b92a 2つの配列を結合して、重複がないかチェックしています。 方法としては、結合後の要素数と、結合後のユニークな要素…

【Ruby】配列からユニークな値を抽出

配列のuniqメソッドを使うと、配列から重複が除かれます。 例: gist6d6ac5a0519764b1151c これ便利ですね…。 参考: abc022.contest.atcoder.jp

【Ruby】要素が配列内に含まれているかどうかチェック

ある要素が配列にすでに含まれているかどうか調べたい時があります。 そんなとき、文字通りですが、includeというメソッドを使います。 例: gistd0f98652ace027e6bfb0 参考: ref.xaio.jp ちなみに、Randeオブジェクトのincludeを使うと、範囲内チェックを…

【Ruby】配列を同じ要素で満たすfillメソッド

配列のfillメソッドを使えば、同じ要素で配列を満たすことができるようです。 例 gist011a61eaa4dd2b8a8cec fill(elem, start, end) と言った感じ。elemが満たしたい要素で、start, endがそれぞれ配列内のindexです。 参考: 同じ値を並べた配列(リスト)を作…

競技プログラミングの使用言語を、JavaScriptからRubyに変えてみた

日記です。 いままで競技プログラミングでJavaScriptを使っていました。これからはRubyでも解いてみたいと思います。 さっそく第24回のA,B問題をRubyで解いたので、メモします。 abc024.contest.atcoder.jp ちなみに、筆者はRuby初心者でもあります。なので…

スクレイピングした情報をRailsアプリケーション上で表示する

これの続き。 chuckwebtips.hatenablog.com データが取得できたので、ビュー側に表示をしてみます。 ビューとコントローラの作成 ちょっと表示するだけですが、のちのちのことを考えてMVCを採用しました。 いつもの↓ maeharin.hatenablog.com コントローラで…

Rubyでスクレイピングしたらencoding error : input conversion failed due to input error

トラブルシューティング。 Nokogiriを使ってHTMLを取得した際、文字化けしてしまうエラーについて。 encoding error : input conversion failed due to input error が出た場合の対処法。 以下のページを参考にして解決。 http://route477.net/d/?date=20110…

Rubyでスクレイピングに挑戦してみた

こちら読み始めました。 vsanna.sakura.ne.jp 前々から興味があったスクレイピング。ついにデビューしちゃいました。 スクレイピングとは あるサイトのあるページからHTMLを取得して欲しい情報を取得することです。 やったこと ローソンの公式サイトから、販…

数値がある範囲内にあるかチェックする

RubyでAという数値が、min以上かつmax以下かどうか調べる方法。 JavaScriptなら A >= min && A <= max コレ書くのいっつも面倒くさい…。coffeeならカンタンだけど。 Rubyなら (min..max).include? A あるいは、 A.between?(min, max) 前者がRangeクラスのメ…

Rubyでループ処理

JavaScriptエンジニアが学ぶRuby入門シリーズ。今回はループ処理です。 Rubyには色々なループがあって面白いですね。 今回は、新しく学習したループについてメモします。なので、for文、while文は省きます。 とは言え、ホントにメモ書き程度。 gist2ade2ecea…

【Ruby】splitメソッドと多重代入を合わせて、変数代入をワンライナー化

競技プログラミングで学んだのでメモ。 splitメソッドと多重代入を組み合わせれば、変数代入をワンライナー(1行)でできるよねという気付きです。 splitメソッド まずはsplitメソッドで文字列を分割。 giste026c601636d080615c4 多重代入 次に変数への格納…

Rubyでの数値丸め処理(ceil, floor, round, truncate)

どうも、Ruby初心者です。 Rubyでの丸め処理についてメモ。切り上げ、切り捨て、四捨五入ですね。 gistbbdc3e12709553a378c3 なるほど。truncate以外はJavaScriptと一緒ですね。 参考URL: code-examples-ja.hateblo.jp 追記 : JavaScriptにもあった。(知ら…