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

有限群の実装(Ruby)

クラス Group#initialize の set は定義された集合(配列)、op は定義された演算(Proc オブジェクト)。@ie は単位元、@order は位数、インスタンスメソッド inverse(a) は a の逆元を与えます。(結合法則の確認はひどく時間がかかる場合があるので、引数…

3次の置換(Ruby)

「"012"→num の置換」でひとつの元。perm3[num1, num2] は2つの元の積を表す。 #permutation(置換) perm3 = lambda do |num1, num2| n1 = num1.chars.map(&:to_i) n2 = num2.chars.map(&:to_i) n1.map {|i| n2[i]}.join end perm3["210", "012"] #=>"210" …

指定した時間に PC を立ち上げる(Linux)

rtcwake - 指定時間になったらスリープ/休止状態/電源OFFから自動的に復帰 - 憩いの場【Linux】 これはおもしろそうだ。Ubuntu 14.04 でやってみました1分間サスペンド(Windows の「スリープ」)して復帰します。 $ sudo rtcwake -m mem -s 60サスペンドし…

簡単なチューリング・マシン

「P≠NP」問題 現代数学の超難問 (ブルーバックス)作者: 野崎昭弘出版社/メーカー: 講談社発売日: 2015/09/18メディア: 新書この商品を含むブログ (1件) を見るの第二章のチューリング・マシンを、Ruby で実装してみました。コードは以下です。pg は動作規則…

ユークリッドの互除法を Ruby で

ユークリッドの互除法(Euclidean Algorithm)を使って、最大公約数を求めます。99400891 と 99221377 の最大公約数は 9973 です。プログラムは以下のとおり。再帰を使う典型的な問題でしょう。 def ea(m, n) return m if n == 0 ea(n, m % n) end puts ea(9…

超簡単な家計簿をつけてみる

エクセルとかは面倒なので、エディタを使ってノート感覚で簡単につけることにする。こんな感じ。括弧内はコメントで、無視される。半角スペース、改行なども無視される。 201509.kakei @9/28 -本=3139 <カルコス> -缶コーヒー=151 <コンビニ> @9/30 -hoge=10…

JavaScript には sleep や wait がない

皆んな困っています。押すと 5秒後に色が変わります。5秒待つというだけで、厳密な sleep関数ではありません。また、後処理はすべて関数 f() の中で行う必要があります。sleep(5000) function put20150923b() {window.setTimeout(f20150923, 5000);} functio…

JavaScript で(サムネイル)画像を画面の好きな位置に表示する

変数 url は画像の URL です。位置は (100, 50)、サムネイル画像の横幅は 200px です。 画像をクリックすると画像を原寸大で別ウィンドウに表示します。HTML <div id="pic"></div> JavaScript var nd = document.getElementById("pic"); var url = "http://hoge.jpg" //画像URL d…

n進数から 10進数へ(Ruby)

Ruby で 10進数を n進数に直すのは int.to_s で出来ます。しかし、その逆(n進数から 10進数へ)ができるかわからなかったので、メソッドを作ってみました。ただし、n は 2 から 10 までです。アルファベットを使って、36進数まで出来ないことはないですが、…

Linux Mint で C をコンパイルする

まず gcc が入っていなければ、 $ sudo apt-get install build-essentialで入れておく。eratosthenes.c をコンパイルしたかったら、まず cd でファイルのあるディレクトリに移り、 $ gcc eratosthenes.cでコンパイルされる。コンパイルに成功すると常に a.ou…

「なかなか収束しない級数の数値計算例」を自分もやってみた

id:Hyperion64 さんのブログの、 なかなか収束しない級数の数値計算例 - 完全無欠で荒唐無稽な夢 の記事が興味深かったので、ちょっと Ruby でやってみた。級数 の極限を求めようというのである。こういうコードでやってみた。Ruby は、任意の精度で 10 進表…

Ruby で素因数分解

素因数分解を Ruby でやってやろうかと思ったのだが、既に標準添付ライブラリに用意してありました… require 'prime' p Prime.prime_division(252) #=>[[2, 2], [3, 2], [7, 1]] 結果が配列で帰ってきます。これは という意味です。簡単だなあ。その他にも、…

Ruby にはブロックスコープがない

ので、それこそブロックをつかってブロックスコープみたいなのを作ってみる。 module Kernel def b yield end end x = 1 b {|x| x = 2 b {|x| x = 3 puts x #=>3 } puts x #=>2 } puts x #=>1 もちろん、括弧の代わりに do ~ end でもできます。 ただし、変…

迷路を解くプログラムをネットで見つけた

Re: 人材獲得作戦・4 試験問題ほか - まめめも こんなブログ記事を見つけました。Ruby で迷路を解くプログラムです。僕の能力ではパット見なにが書いてあるかわからないので、勉強のために勝手にほぐしてみました。

或るゲームのくじの確率(その2)

ちょっと前に、Yahoo!知恵袋の問題で ゲームのくじの確率を計算して欲しいです・当たりは14%です... - Yahoo!知恵袋 というのを、Ruby で強引に解いた記事を書いた(参照)。確率は 8.06% くらいと求まったのだが、これは乱数を使った推定である。しかし、…

Bolic で FizzBuzz

『Ruby で作る奇妙なプログラミング言語』に Bolic という、Unicode の絵文字を使ったプログラミング言語が実装されています。コードはここにあります。この Bolic で、いわゆる FizzBuzz 問題を解くプログラムを組んでみました。 fizzbuzz.bol✪☜⑩×⑩+① ✩☜① …

Linux Mint に rbenv で Ruby を入れる

まず、 $ sudo apt-get install build-essential $ sudo apt-get install gitを忘れずに。それから、下のリンク先のとおりにやっていくと、rbenv のインストールのところで「○○をインストールせよ」みたいなことが出てくるかも知れないので*1、そのとおりに…

ドライブ文字の変更(Windows 7)

121ware.com > サービス&サポート > Q&A > Q&A番号 015133「コントロールパネル」→「システムとセキュリティ」→「管理ツール」→「コンピューターの管理」→「ディスクの管理」→変更するハードディスクドライブを右クリックし、「ドライブ文字とパスの変更」…

Ruby のデザインパターンを勉強中

いわゆる「GoF本」を読んでいるのだが、コード例が C++ なので、いまひとつよくわからない。ので、「ruby gof」でぐぐってみたところ、おお、色々出てくるわ。とりあえず、 Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒…

Ruby のダックタイピング

デザインパターンを勉強していて、Ruby では Java で云う「インターフェイス」というのはどうなっているのかと思った。ぐぐってみると、わかりやすい解説を発見。 第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性 - bingo_nakanishiの他…

Lubuntu に rbenv で Ruby を

rbenv を利用した Ruby 環境の構築 | Developers.IO rbenv の導入はこちらを。rbenv環境でBundlerを使ってgemを管理する - Qiita Bundler概要 - Qiita bundle installとupdateの使い方について - saj_kzの日記 Bundler を使った Gem の管理はこちら。単に b…

或るゲームのくじの確率

ゲームのくじの確率を計算して欲しいです・当たりは14%です... - Yahoo!知恵袋 Yahoo!知恵袋で上のような問題があった。最初は手計算でやろうと思ったが、非常に面倒な計算になるので挫折。で、Ruby で強引に計算してみた。結果は 8.06%ほどと出た。さて、…

メモ

Perl, Python, Ruby の比較 ここの Ruby 用のプログラムを、勉強のために写経する。細部は勝手に好みの流儀に改めてある。元のプログラムを書かれた方には感謝します。

Ruby の yield

yield が今ひとつわからなくてぐぐっていたら、良記事を発見。 Ruby の yield って結局なんなの? - YNoteそれでも yield は複雑。再帰させるとむずかしい。例えば class A def initialize @c = 1 end def each yield(@c) @c += 1 self.each {|x| print "-- …

市民公園にて

コールバックによるシステムの疎結合(Ruby)

『Rubyクックブック ―エキスパートのための応用レシピ集』p.67-70 の読解

Ruby で Tree 構造を作る

これは非常に未熟な記事です。特に初心者の方はあまりこの記事を真に受けないで下さい。(2019/5/22)※注意 ここでさらに一般的な Tree の例を与えてあります。そちらをどうぞ。 Rubyクックブック ―エキスパートのための応用レシピ集作者: Lucas Carlson,Leo…

Windows のスペースが入ったフォルダ名について

以下、Windows 7(7 でなくとも通用すると思います)についてです。Windows にはフォルダ名に(半角)スペースが入ったものが、システムにあります。Cドライブ直下の Program Files フォルダなど、まさにそうですね。これは、コマンドプロンプトなどでパスを…

シェイクスピアのソネットで使われた単語の使用頻度を調べる

Ruby で書きました。シェイクスピアの全作品はここにアーカイブされています。ソネットはその中のここを使いました。10回以上使われた単語を出力しています。結果はこちらです。love(160), sweet(55), time(53), beauty(52), eyes & eye(51 & 38), heart(50)…

methods メソッド(Ruby)

オブジェクトの取れるすべてのメソッドを返します。例えば Integer クラスの取れるメソッドなら、 p 1.methods でOK。結果は例えば [:to_s, :inspect, :-@, :+, :-, :*, :/, :div, :%, :modulo, :divmod, :fdiv, :**, :abs, :magnitude, :==, :===, :<=>, :>…