Ruby

UTF-8 文字列を省略して一定の表示幅に収める

つまり Go の go/runewidth の runewidth.Truncate みたいなことをしたい。 GitHub - mattn/go-runewidth https://github.com/mattn/go-runewidth で、どうやら unicode-display_width という gem があるらしい。 GitHub - janlelis/unicode-display_width: …

tap break 教に入信しようと思う

便利。たった一例しか使った記憶がないけど、それだけでも便利。 first_line = File.open("..."){|f| f.gets.tap{|line| break line.chomp if line } } tap なしだとださいローカル変数がががが first_line = File.open("..."){|f| line = f.gets line ? lin…

DXRuby1.2.1を試す

リリースされてたので。 http://d.hatena.ne.jp/mirichi/20120325/p1うちの環境だと(WinXPSP3 + Ruby1.9.2 mingw32 + DXRuby 1.2.1 + DirectX9)Imageが残念。↑の元の画像。 DirectX全然しらんけど、似たような現象にほかのPCゲームでも遭遇したことがあるの…

投稿テスト2

Emacs + org-mode + org-export の成果物を Ruby + Nokogiri + hatenadiary で整形して投稿するテスト、そのに。puts (1..100).map{|n| x, y = [3, 5].map{|d| n % d == 0 } case when x && y then 'FizzBuzz' when x then 'Fizz' when y then 'Buzz' else n…

LRLA(1)パーサジェネーレータのDSLのアイディア

ふと思いついたので。 自分で実装する気はさらさらないけどね!lhsとかrhsとかが邪魔だ。Raccでこう書くところを、 program : { result = create_statement_list() } | stmt_list stmt_list : stmt { result = create_statement_list() result.add(val[0]) } …

Gem which + dired + anything

gem whichでgem名からrequireされるライブラリのファイルパスが引けるので、そのファイルだけじゃなくそのgemのlib/とdiredの手を組ませてみる。 さらにインストール済みのgemをanythingでインクリメンタルに選ぶ。 (defun gem-which (name &optional gem-cm…

nokogiri 1.4.1 にアップデート

で、下記の問題が解消してませんでしたが。 ちょっと困る - nokogiri 1.4.0 http://d.hatena.ne.jp/arikui1911/20091126/1259231201 勘違いでした。やらかしてたのは RubyGems のほうでした。 古い nokogiri がロードされていたみたいだ。 gem() でバージョ…

nokogiri 1.4.0

1.3.3 で直ったと思った UTF-8 以外の日本語ページでの問題が再発。 Nokogiri 1.3.3 で Ruby1.9 のパース結果は完全 UTF-8 文字列に - きたももんががきたん。 http://d.hatena.ne.jp/kitamomonga/20090729/ruby_nokogiri_1_3_3_with_ruby_1_9_encoding

politrunc.rb

Windows 版の Polipo の -x オプションは使えない。http://ely.ath.cx/~piranha/software/polipo_trimcache/なのでここの polipo-trimcache という Python 製のコマンドを移植してみる。 名前は POLIpo cache TRUNCate ってことで。いまいちしっくりこないけ…

hatenadiary ライブラリ

gem にしてみました。インストールは(GitHub を gem の source として追加して) $ gem install arikui-hatenadiary何するかというと、mechanize を使ってはてなにログインしてはてダに投稿とかします。 自前のはてダラの一部を抜き出しただけです。使い方: r…

はてダとRuby1.9とMechanizeと

編集画面(http://d.hatena.ne.jp/はてなID/edit)で失敗する。 MechanizeのHTMLの実体参照を戻す関数でエンコーディング回りの例外が起きるからだ。結論から言うと、これで回避できた。 require 'www/mechanize/util' class << WWW::Mechanize::Util org = in…

expectations/raketask.rb

すんなり rake/testtask.rb と一緒には使えないですね。 require 'rake' require 'rake/tasklib' require 'tempfile' module Expectations class RakeTask < Rake::TaskLib DEFAULT_NAME = :test def initialize(name = DEFAULT_NAME) self.name = name @lib…

tinytest-0.0.1

GitHub で gem 公開の設定してきました。 あと直した点。 tinytest/compat の実装から built-in class への monkey-patch を取り除いた assertion など以外で TestCase に持たせるメソッドは最小限に インストールの仕方は、 GitHub が gem の source に加え…

Project Euler - Problem 13

以下の50桁の数字100個の総和の上位10桁を求めよ。 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072…

Project Euler - Problem 12

三角数の数列は自然数の和で表わされ、7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。 三角数の最初の10項は 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... となる。 最初の7項について、その約数を列挙すると、以下のとおり。 1: 1 3: 1,3 6: 1,2,3…

Project Euler - Problem 11

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91…

Project Euler - Problem 10

10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい.ちょっとかかります。 take_while が Array を返すからかと思い、避けてみたましたが、そういうわけでもなく。 単純に 200万まで素数を列挙するのが大変なようです。 …

Project Euler - Problem 9

ピタゴラスの三つ組(ピタゴラスの定理を満たす整数)とはa

Project Euler - Problem 8

以下の1000桁の数字から5つの連続する数字を取り出して その積を計算する。そのような積の中で最大のものの値はいくらか 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 858615607891129494954595…

Project Euler - Problem 7

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり、6番目の素数は 13 である。 10001 番目の素数を求めよ。require 'prime' iter = Prime.each 10000.times{ iter.next } p iter.next # => 104743

Project Euler - Problem 6

最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。 1^2 + 2^2 + ... + 10^2 = 385 (1 + 2 + ... + 10)^2 = 3025 これらの数の差は 3025 - 385 = 2640 となる。 同様にして、最初の100個の自然数について和の二乗と二乗の和の差を求めよ…

Project Euler - Problem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。 では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。ようは 1 .. 20 の最小公倍数ってことか。 mathn 様々。 require '…

Project Euler - Problem 2

フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。再帰使ったら(速度的に)負けだと思ってる…

Project Euler - Problem 1

http://odz.sakura.ne.jp/projecteuler/ の和訳にお世話になっています。 10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。 同じようにして、1,000 未満の 3 か 5 の倍数になっている数字…

Project Euler - Problem 4

左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、 最大のものは 9009 = 91 × 99 である。 では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。回文数の判定は手抜き。 そしてその他もほぼ定義…

Project Euler - Problem 3

13195 の素因数は 5、7、13、29 である。 600851475143 の素因数のうち最大のものを求めよ。ライブラリって偉大。 require 'prime' p 600851475143.prime_division.sort_by{|x, n| x }.last[0] # => 6857

MyGame ハック

Ruby/SDLラッパーの MyGame がコンパクトだったので自分流にハックしてみた。 基本的に本家のパクリ アニメーション機能を実装してない テストが中途半端 (C0 coverage 50%) mygame/boot 相当のものがない GitHub - mygame2 http://github.com/arikui1911/my…

テスティングライブラリ TinyTest

http://d.hatena.ne.jp/arikui1911/20090108/1231394335 をちょっと見直して作り直し。嬉しいこと: テストが書けた C0 coverage 100% 1.8.7 でも動くようにできた GitHub - TinyTest http://github.com/arikui1911/tinytest/tree/master 追記: 1.8.6 でも動…

Ruby/SDL -- SDL::CollisionMap.bounding_box_check

のドキュメントが無い。インスタンスメソッドのほうはちゃんと乗ってるんだけどね…。

rd-mode.l

xyzzyのruby-mode(のruby-doc.l)や、RDtool添付のruby-mode.elを参考にしながらスクラッチした。書くものがある程度でかくなる、なんかしっくりこない。我ながらLisp感に欠けるという感想を持った。こなれてないなぁ。 おつとめ Element の色付け メジャーモ…