Ruby

「コマ大数学科」を Ruby で

izu-mix.comプログラミングで解けそうな問題だけ解いています。 #001 フィボナッチ数列 問題: 15段の階段を上るとき、1段上るか、2段上るか、2通りの方法を組み合わせて登ると、何通りの登り方があるか。 コード。 def fib(n) return 1 if n == 1 return 2 …

Ruby の callcc(継続)

Ruby 2.2 から非推奨になってしまった callcc(継続)ですが…。callcc は goto みたいなものです。 callcc {|cnt| ..} とあるとき、継続 cnt が call されると、callcc {|cnt| ..} の「後へ」処理が移ります。メソッド call に引数があった場合は、それが ca…

Python のリスト内包表記と Ruby の map

内包表記は Ruby は map でいけるんじゃね?という話。pythonの内包表記を少し詳しく の例を使ってみる。例えば Python で [i for i in range(10)] というのは (0...10).map(&:itself) とか。まあこれは Array.new(10, &:itself) とか 10.times.to_a とかも…

Ruby/SDL でゲームパッドを使う

ゲームパッドで四角が動き回ります。Aボタンでビームの発射、Bボタンで一時停止、selectボタンで終了。sdl_sample7.rb require 'sdl' Width, Height = 300, 300 SDL.init(SDL::INIT_VIDEO | SDL::INIT_JOYSTICK | SDL::INIT_AUDIO) screen = SDL::Screen.ope…

Ruby の新しい演算子候補 / 標準添付ライブラリ 'thwait'

*>って Ruby の新しい演算子として使えることない? 右側代入とか。同様に +> とか /> とかも使えそう。 ~> とかもいけそうだけれど、-> とまちがえやすそう。関係ないけれど、早く Guild 使ってみたいな。笹田さん、がんばって下さい。 Thread の話。いくつ…

Ruby の Module 覚え書き

module Example def a output "inner" end def output(st) puts st end end include Example output "outer" #=>"outer" a #=>"inner" include すればモジュール内のメソッドがふつうに使える。 module Example def a output "inner" end def output(st) put…

Ruby のクラスメソッド、特異クラスのインスタンス変数

Ruby Gold合格できました。感想と振り返り - 気軽に楽しくプログラムと遊ぶ ここでちょっとオッと思ったのでメモ。 class MyClass @v = 1 def foo @v #=>nil end class << self @v = 2 # 特異クラスへのメソッド定義はクラスメソッド定義 def foo @v #=>1 en…

Qiita のデザインパターンまとめがおもしろかった

qiita.comおもしろかったので自己流にメモしておく。 Template Method 日記を書いて、複数のフォーマットで出力することを考える。日記の内容は、タイトルと何行かの本文、フォーマットは HTML とプレーンテキスト。 class Diary def initialize(title, text…

Sinatra で Code Viewer を作る(Ruby)

code_viewer.rb require 'sinatra' require 'sinatra/reloader' require 'rouge' set :bind, '192.168.11.150' set :port, 16524 suffixes = {"rb" => "Ruby", "html" => "HTML", "css" => "CSS", "erb" => "ERB", "c" => "C", "cpp" => "Cpp", "py" => "Pyt…

rbenv でバージョンを上げたときの注意(Ruby)

Gem が一切インストールされていないことになるので、該当ディレクトリで $ rbenv exec gem install bundler $ bundle installを実行。全 Gem が再インストールされる。

Ubuntu に Ruby/SDL を入れる

Ruby/SDL GitHub インストール まずはライブラリを入れる。 $ sudo apt-get install libsdl2-2.0 libsdl-sge-dev Bundler で Gem 'rubysdl' を入れる。何か Gem の場所がわからない。 $ bundle exec gem which sdl /home/tomoki/.rbenv/versions/2.3.4/lib/r…

ネット上の Sinatra 掲示板サンプルコードを動かしてみる(Ruby)

スクリーンショット。 yharaさんの作られたサンプル。 https://github.com/yhara/sinatbbs Sqlite3 が必要なので入れる。 $ sudo apt-get install sqlite3 libsqlite3-devgit clone。 $ git clone git://github.com/yhara/sinatbbs.git 実行。「bundle exec…

AOJ (Introduction to Algorithms and Data Structures)

AIZU ONLINE JUDGE: Programming Challenge ALDS1_1_A #挿入ソート gets ar = gets.split.map(&:to_i) n = ar.size putout = ->{puts ar.join(" ")} putout.() 1.upto(n - 1) do |i| v = ar[i] j = i - 1 while j >= 0 and ar[j] > v ar[j + 1] = ar[j] j -=…

AOJ (Introduction to Programming)

AIZU ONLINE JUDGE: Programming ChallengeITP1_1_A puts "Hello World" ITP1_1_B x = gets.to_i puts x ** 3 ITP1_1_C a, b = gets.split.map(&:to_i) puts "#{a * b} #{2 * (a + b)}" ITP1_1_D n = gets.to_i puts "#{n / 3600}:#{(n % 3600) / 60}:#{n % …

最短ヌクレオチド連鎖問題

require 'bundler/setup' require 'kaki/utils/nest_loop' class Codon include Comparable def initialize(st) @cd = st end attr_reader :cd def <=>(a) x, y = @cd, a.cd l = r = 0 l = if x[1..2] == y[0..1] 2 elsif x[2] == y[0] 1 else 0 end r = if …

挿入ソートのベンチマーク(Ruby)

Rubyっぽく書いたのと教科書の擬似コードをそのまま書いたものとの比較。 require 'benchmark' class Array def insertion_sort1 ar = self (size - 1).times do |i| key = ar[i + 1] j = ar.index {|x| x >= key} next if j >= i + 1 ar = ar[0...j] + [key…

Ruby GTK 覚え書き

これは使えそう。STDIN を必要なファイルディスクリプタにすればよい。 require 'bundler/setup' require 'gtk2' w = Gtk::Window.new w.set_size_request(200, 50) w.set_resizable(false) b = Gtk::VBox.new w.add(b) entry = Gtk::Entry.new entry.set_ed…

Enumerator への追加は deep copy されるのか(Ruby)

どうもそうなのではないかと思って確かめてみたら、やはりそうだった。これは助かる。 $ pry [1] pry(main)> e = Enumerator.new do |y| [1] pry(main)* a = ["aiueo", "Ruby"] [1] pry(main)* y << a [1] pry(main)* a[0] = "oeuia" [1] pry(main)* y << a …

計算機プログラムの構造と解釈 第二版(第二章)

計算機プログラムの構造と解釈 第2版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,Harold Abelson,Julie Sussman,Gerald Jay Sussman,和田英一出版社/メーカー: 翔泳社発売日: 2014/05/17メディア: 大型本この商品を含むブログ …

計算機プログラムの構造と解釈 第二版(第一章)

計算機プログラムの構造と解釈 第2版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,Harold Abelson,Julie Sussman,Gerald Jay Sussman,和田英一出版社/メーカー: 翔泳社発売日: 2014/05/17メディア: 大型本この商品を含むブログ …

SDL

Simple DirectMedia Layer - HomepageGitHub - rubygame/ruby-sdl-ffi: Ruby-FFI binding to SDL multimedia libraries. (Still in alpha) GitHub - jacius/nice-ffi: Nice-FFI: Convenience layer atop Ruby-FFIこれちゃんと動く。 しろま日記 : Linux - Ub…

お絵かきサーバーsample

draw_server0.rb require 'bundler/setup' require 'gtk2' require 'socket' w = Gtk::Window.new w.set_size_request(400, 400) w.set_resizable(false) w.set_app_paintable(true) w.realize drawable = w.window gc = Gdk::GC.new(drawable) colormap = G…

Gosu + Chipmunk + RMagick

Ruby Chipmunk Integration Gem 'gosu-examples' が参考になる。bundle exec gosu-exapmles で OK! chipmunk_and_rmagick.rb を実行するとよい。chipmunk_and_rmagick.rb のコピペ。 # Encoding: UTF-8 # Based on the C Demo3 demonstration distributed wi…

Ruby で遅延ストリーム(コピペ)

お気楽Rubyプログラミング入門/番外編 遅延評価と遅延ストリーム 下はこのページのコードをまとめたもの(コピペ)。lazystream.rb # # lazystream.rb : 遅延ストリーム # # Copyright (C) 2017 Makoto Hiroi # # 遅延評価 class Delay def initialize(&func…

dRuby サンプル

dRuby はネットワーク上で Ruby のオブジェクトを遠隔操作するものです。ここからコピペしてやってみる。ただし元サイトが右クリックでコピペできないようにしているので、コードをそのまま写しておきます。Linux Mint 18.2, Ruby 2.3.3 で確認。 druby_serv…

スプライン曲線(メモ)

3次スプライン補間(PDF) Ruby - 3次スプライン補間! - mk-mode BLOG http://d.hatena.ne.jp/mscp/20091228/1261968512 Ruby実用例 〜スプライン補間〜 - [物理のかぎしっぽ] setup diary(2012-02-18) 直接は関係ないが、Ruby で GSL(GNU Scientific Li…

Ruby で ODE(Open Dynamics Engine) メモ

物理エンジン ODE(Open Dynamics Engine)と RubyGoogle検索 GitHub - ged/ruby-ode: A Ruby binding for the Open Dynamics Engine™ Ruby-FFIでODEを動かす実験 - ハード屋のヨコ好き rubyで3D物理シミュレーション - urekatのスカンク日記3

method_missing の謎(Ruby)

irb(main)> class A irb(main)> def method_missing(m, *args) irb(main)> p m irb(main)> p args irb(main)> end irb(main)> end => :method_missing irb(main)> b = A.new => #<A:0x00000001f18870> irb(main)> b.nyao(:a) :nyao [:a] => [:a] irb(main)> b.nyao = "pu" :nyao=</a:0x00000001f18870>…

OpenStruct のコードリーディング(Ruby)

~/Documents/Ruby/コードリーディング/ostruct.rb の一部 class OpenStruct def initialize(hash=nil) #Hash{@table} @table = {} if hash hash.each_pair do |k, v| k = k.to_sym @table[k] = v end end end attr_reader :table def modifiable #@modifiabl…

Ruby の Fiber

Fiber は結構複雑なのです。Fiber.yield がなければ、Fiber は resume で呼び出される proc オブジェクトみたいなもの。ただし、1回しか呼び出せない。 f = Fiber.new do |st| st.upcase end p f.resume("tokyo") #"TOKYO" p f.resume("tokyo") #a.rb:6:in `…