2015-01-01から1年間の記事一覧

FizzBuzz問題(Ruby)

「FizzBuzz 問題」という有名な問題があることを知りました。 Fizz Buzz - WikipediaWikipedia から引用すると、 プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3…

map の拡張(Ruby)

RubyのEnumerable#mapをもっと便利にしたいよ - hp12c id:keysberry さんが考え出されました。おもしろいですねえ。こんなシンプルな実装だけれど、よくできている。勉強になります。また、実際便利そう。感謝のコピペしておきますね。 module Enumerable de…

段差つき繰り返し(Ruby)

しょうもない実装です。何かに使うかなあ。 class Integer def upto_with_steps(max, step) i = self while i <= max yield(i) i += step end end def downto_with_steps(min, step) i = self while i >= min yield(i) i -= step end end end 1.upto_with_st…

Ruby の繰り返しについて、些細なこと

Ruby では繰り返しを 1.upto(10) {|x| puts x} と書く書き方が好まれますね。また、 (1..10).each {|x| puts x} という書き方もある。まあ、Ruby に慣れていない人には for i in 1..10 puts i end の方がわかりやすいと思うので、僕はこっちで書くこともしま…

フィボナッチ数列を Ruby で

rscの日記さんのところに、カエルのジャンプの問題を解くというのがあったので、僕も Ruby でやってみました。或る回答にもありますが、これは本質的にフィボナッチ数列の問題です。葉っぱが n 枚のときのカエルの渡り方を num(n) とすると、直前の葉っぱか…

Rubyは参照の値渡し

Ruby は基本的にすべてがオブジェクトで、またすべてが「参照の値渡し」です。ただし数値とシンボルは immutable なので、「値渡し」のように振舞います。注意すべきは文字列です。 a = "Hello" p a.object_id #=>23440680 b = a p b.object_id #=>23440680 …

Ruby のインスタンス変数についてのメモ

Ruby のインスタンス変数は、オブジェクトの内部状態でもあるし、オブジェクトに特定されたクラス内のグローバル変数みたいなものでもあるのだな(言い方に問題あり?)。オブジェクトに関係ないクラス内のグローバル変数がクラス変数ということか。

Ruby での破壊的メソッドの作り方

自分で作ったクラスに破壊的メソッドを実装するには、インスタンス変数を直接変更するか、それの応用で replaceメソッドを(Stringクラスみたいに)作ってやればいいのだった。例えば点を表す Pointクラスでは、こんな感じ。o_point_symmetry!メソッドは、点…

最小公倍数を求める(Ruby)

1〜100の最小公倍数の質問をRubyで解いてみた。 - rscの日記あんまり驚いたのでコピペしておきます。これだけで 1~100 までの最小公倍数が求められるとは! 流行の関数型プログラミングっぽい書き方です。 class Array def lcm; self.inject(:lcm); end…

Nexus 7 で Ruboto を使ってみる

Nexus 7 を入手したので、Ruby でアプリを作ることができる「Ruboto」を入れてみました。ぐぐってやってみたのですが、初心者なので、取り敢えずの開通まで苦労しました。ぐぐればいいのですが、簡単にメモだけしておきます。まず、Android機の方に、Playス…

C言語の構造体を Ruby で表現してみる

C言語のいわゆる「K&R」本を読んでいたら、構造体というのはオブジェクト指向によく似ていると思った。ので、この本の第六章のスクリプト(p.155-159)を、Ruby で表現してみる。少なくともここでは、C言語の構造体が完全に Ruby の OOP に移植できている。 …

C言語のポインタ解析(Ruby)

いわゆる「K&R」本 p.148-152 のポインタ解析スクリプトを、Ruby に移植してみました。ポインタを使っているのを Ruby で書くのが留意点です。まったく Ruby らしくないので、Ruby らしく書き直すのが課題でしょう。例えばコマンドライン引数に「char(*(*x[3…

クイックソート(Ruby)

いわゆる「K&R」本(『プログラミング言語C 第2版 ANSI規格準拠』p.106)に載っている配列のクイックソートを、Ruby に移植してみました。メソッド(C言語では関数)の再帰呼び出しの例として使われています。コードは殆ど本そのままですが、C言語よりは読み…

メソッド内のメソッド定義(Ruby)

Ruby でメソッド内にネストしてメソッドを定義することはできるが、名前空間にならないみたい。クラス内のクラスとはちがう(参照)。あんまり意味がないのかな。 def a def b puts "B" end puts "A" b end a b の出力は A B Bとなる。内側のメソッドb に、…

C言語の関数の引数が配列であるときの不思議

C言語で、関数の引数に配列が入っている場合。例えば Ruby で stg = "Hello, World!" puts stg と書くのを、C言語では #include <stdio.h> #include <string.h> int main(void) { char stg[20]; strcpy(stg, "Hello, World!\n"); printf("%s", stg); return 0; } となるのか(追</string.h></stdio.h>…

エラトステネスの篩(C言語)

C言語でもやってみました(Ruby版)。 ※注意 この実装はまだ未熟なので、下の modify された実装を見て下さい。(2017/7/4) #include <stdio.h> int a[100000001] = {0}; void set_f(int i, int max) { int j; for ( j = 2; j <= (max / i); j++ ) a[i * j] = 2; ret</stdio.h>…

エラトステネスの篩(Ruby)

「エラトステネスの篩」で、素数を求めてみます。Ruby でやってみました。極めて素直にコードを書いてみました。難しいことは何もないと思います。もう少し Ruby らしく書くこともできるでしょう。 eratosthenes.rb def set_f(i, max) #素数でない数にフラグ…

サクラエディタで行頭に空白を入れる

指定範囲だけインデントしたい場合があると思います。まずインデントする複数行をドラッグで指定します。 そして「置換」を選択し、「正規表現」にチェックを入れます。「置換前」に「^」、「置換後」に好きなだけ半角スペースを入れて、「すべて置換」をク…

XAMPP で Rubyスクリプトを動かす

自分用のメモです。windows7用。 まず、XAMPP の httpd.conf を編集する(自分の場合は C:\xampp\apache\conf にあった)。 AddHandler cgi-script .cgi .pl .asp .rb拡張子 .rb を追加。 XAMPP Control Panel で Apach を動かす。 Rubyスクリプトを .rb の…

はてなブログで、選んだカテゴリーのエントリーを順に表示する

はてなブログでは、「カテゴリー」を選んでクリックすると、一覧が出てきますよね。以前は選んだそのカテゴリーの記事を順番に表示させることができたのですが、今はどうもできないようです(勘違いだったら御免なさい)。例えばこのブログだと、サイドバー…

フォト蔵「いろいろ」スライドショー

フルスクリーン・モードで御覧下さい(下の左端のアイコン)。なお、画面上の「バツ」印をクリックするとフリーズするので注意。

Ruby のインスタンス変数とクラス変数

インスタンス変数は再帰させるとどうなるのかな。

SWIG

SWIG : tnomuraのブログ Ruby で簡単に C言語の拡張ライブラリを作る(メモ)。

window.document のプロパティを列挙

for (var x in window.document) { console.log(x); } 表示 知らないのが沢山ある…(古い仕様が残っているのもあるみたい。document.clear とか)。上のは別に window.document に限らないことは、云うまでもありません。色々応用できます。※参考 『開眼! Ja…

Ruby で Windows7 の効果音を鳴らしてみる

win32-sound モジュールを使います。インストールは gem install win32-sound です。 これで鳴ります。 require "win32/sound" include Win32 def beep(f = 'Cityscape/Windows Ding.wav') Sound.play('C:/Windows/Media/' + f) end beep C:/Windows/Media/C…

サイドバーのスライドショーを作ってみる

サイドバーに小さなスライドショーのスペースを作ってみました。クリックすると大画面のスライドショーのページに飛びます。 そこでハマったことですが、JavaScript で画像の大きさを設定したい場合、僕の持っている『JavaScriptリファレンス 第6版』では、 …

フォト蔵「風景」スライドショー

フルスクリーン・モードで御覧下さい(下の左端のアイコン)。なお、画面上の「バツ」印をクリックするとフリーズするので注意。フォト蔵に用意してある埋め込み用の HTML に、少しアレンジを施してあります。

JavaScript の CSS 操作について

JavaScript で CSS の操作をするとき、CSS で p {color: red;} のように全ての p について色を変えるようなことはできないのだな。しかし、順番を指定した document.getElementsByTagName("p")[0].style.backgroundColor = "khaki"; のようなことはできる。 …

URL内の javascript:

JavaScript の式を入れて下さい <a href='javascript: var e = ""; r = ""; do { e = prompt("Expression: " + e + "\n" + r + "\n", r); try { r = "Result: " + eval(e); } catch(ex) { r = ex; } } while (e); void 0; '> JavaScript の式を入れて下さい </a> 参考:『JavaScript 第6版』p.346

自宅近所の一風景

自宅近所です。