或るプログラマの開発日記

日々の勉強したことの備忘録なんかに使っていきます

2017-05-01から1ヶ月間の記事一覧

ブログ開始から2ヶ月経過しました

どうも、パイソンです。今日でブログ開始からちょうど2ヶ月目。先月に引き続きこれまでの振り返りをします。 5月の目標 5月も目標なるものを立てておりました。 rubyでなんか作る 記事更新は10記事程度を目処に それぞれどんな感じだったか振り返ります。 ru…

Rubyで素数判定の繰り返しを効率化してみた話

はじめに とあるプログラミング問題に取り組んでる時、連続する数をそれぞれ素数か否かの判断を結構な回数繰り返す処理をRubyで書いていたのですが、もう少し処理速度が上がらんかなーと試行錯誤した結果、処理が効率化できたー。というお話です。 問題 実際…

Rubyで素因数分解を行う

素因数分解をC言語やJavaで行う場合、自力で小さい素数から順に割っていく方法なんかが取られるかと思いますが、Rubyでは標準モジュールに素因数分解の処理が用意されていたのでメモ。 Primeクラスのprime_divisionメソッド Rubyでは、このメソッド一発で素…

最大公約数、最小公倍数の求め方/ユーグリットの互除法

今回もアルゴリズムに関して学んだ知識のメモ。ユーグリットの互除法について調べてみました。 ユーグリットの互除法とは 最大公約数を求める手法です。 ユークリッドの互除法(ユークリッドのごじょほう、英: Euclidean Algorithm)は、2 つの自然数の最大…

エラトステネスのふるいを実装してみる

アルゴリズムに関する知識も自分の中にストックしておきたいということで、今回は「エラトステネスのふるい」について調査したものをメモ。 エラトステネスのふるいとは 素数の一覧を簡易的に求める手法です。 エラトステネスの篩 (エラトステネスのふるい、…

Rubyのinject/reduceメソッドに関するメモ

つい最近までRubyのinjectやらreduceが何してるか分からんかったので調査したことをメモ。 inject/reduceメソッド injectメソッドは、ブロックを使って繰り返し計算を行うのに使います。ブロックに順に「要素1、要素2」、「ブロックの前回の戻り値、要素3」…

Rubyで多重ループを抜ける方法

Rubyの大域脱出に関するメモ。ネストが深いループから何かの条件で一気に抜けたい場合、Rubyではcatch-throwを使うのが適切なようです。 書き方 以下が大域脱出のサンプル。如何にもサンプルの為のサンプルという感じですが、ネストしたループから抜けている…

Rubyのヒアドキュメントを使ってみる

Rubyのヒアドキュメントに関するメモ。文字列を扱うちょっとしたプログラムで結構使えます。 ヒアドキュメントとは 普通の文字列リテラルはデリミタ(", ', ` など)で囲まれた 文字列ですが、ヒアドキュメントは `リテラルです。 https://docs.ruby-lang.org/…

CodeIQ 「ロンリー・ルーク」問題の解答コード公開

久々の投稿になります。 今回はCodeIQの問題の解答コードを公開します。codeiq.jp 問題 今回の問題の概要です。 自然数 n, k に対し、縦横 n×n のマス目にチェスのルークの駒を k 個配置します。このとき、自身から見て上下方向・左右方向のいずれにも他の駒…

2017年5月の目標

どうも、パイソンです。 本日から5月。先月に引き続き月間の目標でも立ててみようかなーと思います。 とはいえ、先月は毎日更新を目指すとか息巻いてみたものの結局挫折したんで、今月は普通に達成出来る感じのものにしようかと。(^^; というわけで、立てて…