Ruby

Ruby で png 画像を自力生成(その2)

前回 png 画像を生成してみた続き。 こんなの。 コードはこんな感じ(画像データの生成部分のみ)。前回エントリを参照。 width, height = 400, 400 raw_data = [] height.times do |h| ob = [] width.times {|w| ob << [0, 0, ((w - width / 2) ** 2 + (h -…

Ruby で png 画像を自力生成できるらしいですよ

このところ脳みそが腐って全然プログラミングとかできないのだが、Ruby 愛はちっとも減じていないので、他人のブログをパクってエントリを書きます。「パクって」はいい言葉じゃないですね。とにかく唐突に「png ruby」でぐぐってみましたら、Ruby コミッタ…

paiza オンラインハッカソン vol.6 をやってみた

これも挑戦。使用言語は Ruby。どれも超簡単なので簡潔に。 六村リオ 問題。結果。コード。 operations = [] gets.to_i.times {operations << gets.split.map(&:to_i)} water = coffee = 0.0 operations.each do |op, q| case op when 1 then water += q whe…

paiza オンラインハッカソン vol.5 をやってみた

使用言語は Ruby です。画像クリックで詳細が出ます。 手紙の暗号を解読 簡単。コード。 st = gets result = "" 0.step(st.length - 1, 2) {|i| result += st[i]} puts result 会社の入社試験 超簡単。こんな入社試験、ある筈がないですね。コード。 num = g…

paiza オンラインハッカソン vol.4 をやってみた

またまた挑戦してみました(ヒマ人^^;)。使用言語は Ruby です。画像クリックで詳細が出ます。 ミッション1 こりゃ簡単すぎるだろう。コード。 data = [] gets.to_i.times {data << gets.to_i} puts data.inject(&:+) ミッション2 これも超簡単。コード。 d…

paiza オンラインハッカソン vol.2 をやってみた

またまた Ruby でやってみました。 とりあえず何の工夫もないもの 誰でもすぐに考えそうな方法でやってみました。つまりは総当り。 全然ダメですね。詳しい結果はこちら。コード。 height, width = gets.split.map(&:to_i) @window = [] height.times {@wind…

絵文字フィボナッチ

どんな言語かわからないですよね。 🐱 = [] 🍇, 🍉 = 0, 1 while 🍉 < 1000 🍇, 🍉 = 🍉, 🍇 + 🍉 🐱 << 🍇 end p 🐱 #=>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987] Ruby です😄 おわかりでしょうがフィボナッチ😆

Unicode の全絵文字

# * 0 1 2 3 4 5 6 7 8 9 © ® ‼ ⁉ ™ ℹ ↔ ↕ ↖ ↗ ↘ ↙ ↩ ↪ ⌚ ⌛ ⌨ ⏏ ⏩ ⏪ ⏫ ⏬ ⏭ ⏮ ⏯ ⏰ ⏱ ⏲ ⏳ ⏸ ⏹ ⏺ Ⓜ ▪ ▫ ▶ ◀ ◼ ◽ ◾ ☀ ☁ ☂ ☃ ☄ ☎ ☑ ☔ ☕ ☘ ☝ ☠ ☢ ☣ ☦ ☪ ☮ ☯ ☸ ☹ ☺ ♀ ♂ ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ♠ ♣ ♥ ♦ ♨ ♻ ♿ ⚒ ⚓ ⚔ ⚕ ⚖ ⚗ ⚙ ⚛ ⚜ ⚠ ⚡ ⚪ ⚫ ⚰ ⚱ ⚽ ⚾ ⛄ ⛅ ⛈ ⛎ ⛏ ⛑ ⛓ ⛔ ⛩…

Ruby FFI でエラトステネスの篩

これまで Ruby と C言語で「エラトステネスの篩」を書いたので、Ruby FFI で融合させてみました。Ruby FFI で簡単に Ruby から C言語の関数を呼ぶことができます。Linux Mint 18.2, Ruby 2.3.3 で確認しました。Ruby FFI を使うには libffi が必要ですが、Li…

最長共通部分列(Ruby)

文字列の「部分列」とは、文字列から任意の文字を取り除いたものをいう。文字列 X と Y があって、文字列 Z が X と Y 両方の部分列になっている場合、Z を X, Y の「共通部分列」という。共通部分列の最長のものが、「最長共通部分列」である。たとえば文字…

Ruby で迷路作成(コンソール版)

ここでグラフィカルな迷路を生成してみたのですが、やっぱりコンソール版も欲しいよねということで作りました。 こんな感じ。****************************************** * * * * * * **** * * * ***** * ***** * *** ******* **** * * * * * * * * * *****…

Swift のクロージャと Ruby の lambda

ここで Swift におけるクロージャの使い方が説明されています。こちらで同じ内容のコードを再掲するとこんな感じでしょうか。Swift 4.0。 func f(_ a: Int, _ b: Int, _ closure: (Int, Int) -> Int) -> Int { return closure(a, b) } print(f(1, 2, {a, b i…

RubyGem 'oekaki' でアナログ時計を作ってみた

グラフィック機能のデモの定番である時計です。Gem 'oekaki' についてはこちら。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura oekaki_sample16.rb require 'oekaki' Oekaki.app title: :clock do pal…

paiza オンラインハッカソン vol.1 をやってみた

前回のエントリでやったのがおもしろかったので、最初からやってみた。いつもながら Ruby です。 結果。 まあ悪くないのだけれど…。いや、これは苦しみました。最初はソートしてバイナリサーチというアルゴリズムを考えていたのだけれど、バグに悩まされて挫…

paiza Online Hackathon をやってみた

もうとっくに応募は締め切られているけれど、とにかく Ruby でやってみました。 結果。 やったね!コードです。 need = gets.to_i company = gets.to_i number, cost = [], [] company.times {|i| number[i], cost[i] = gets.split.map(&:to_i)} h = {} comp…

GTK+ で落書き 13(Ruby)

自作の Gem 'oekaki' を使っています。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura require 'oekaki' Width, Height = 500, 400 ColorMax = 65536 R = 20 class Star def initialize(ob) @x, @y = r…

斜方投射の数値計算と描画(Ruby)

4次のルンゲ−クッタ法の練習としてやってみました。斜方投射(斜め上にものを投げるということです)じゃ全然威力を発揮しないのですが、とりあえず動くかどうかだけ確かめました。描画は gnuplot でやっています。 runge_kutta_sample1.rb require 'numo/gn…

「なぜ関数プログラミングは重要か」解読(Ruby)

なぜ関数プログラミングは重要か Rubyを使って「なぜ関数プログラミングは重要か」を読み解く(改定)─ 前編 ─ 但し後編の予定なし メモです。 melborne 氏のブログを参考に lambda のみで実装。 関数合成に関してはここを参考にしたが、これではうまくない…

Linux Mint には Ruby がデフォルトで入っている

Linux Mint 18.2 で確認。 $ ruby -v ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] Ubuntu 17.04 にはまだデフォルトでは入っていないようだ。

Ruby の型注釈のオレオレ記法

Ruby が型を明示的に書かないのはすごくラクだし気に入っているのだけれど、複雑な処理をするメソッドなどでは型注釈があった方がわかりやすい場合もあります。なので、コメントで型注釈をする仕方を自分で決めてみました。 ●引数(self も含む) -> メソッ…

Ruby で循環小数を扱う

以前にも同様の試みをしたのですが(参照)、コードを始めから書き直しました。以前のは何か自分でもよくわからない、面倒なことをしているので。作ったのは Rational#to_rec_decimal と String#to_r で、前者は Rational(分数)を(String で表される)循…

Ruby で Python の for else みたいなの

繰り返しを実行して break(あるいは return)されなかったら何かを実行するって時々欲しいのですけれど、Ruby では Python の for else みたいな構文がないのですよね。なので throw ~ catch を使って大域脱出したりするのだけれど、どうにかできないかと思…

GTK+ で落書き 12(Ruby)

三角形の内心・外心・重心・垂心・傍心 自分で求めた公式を使って、三角形の内接円と外接円を Ruby で描いてみました。 描画には自作の Gem 'oekaki' を使っています。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - C…

OpenGL で正多面体を回転させてみる その2(Ruby)

前回のエントリの隠面消去バージョンです。 5つのウィンドウが同時に立ち上がるのは同じです。Windows ではたぶんこのままでは動きません。コードは下のリンク先にあります。 OpenGL で正多面体を回転させる · GitHub

OpenGL で正多面体を回転させてみる(Ruby)

Ruby 用に OpenGL を手軽に使うライブラリ「miniopengl.rb」を書いたので、その例として 5つの正多面体すべてを回転させてみました。 正多面体のデータはここより頂戴しました。ありがとうございます。polyhedrons_obj.zip をダウンロードして解凍し、フォル…

Ruby のサンプルコードについて

結城先生が仰っていることは大事なことだと思います。いちばん大変なのは初心者のときです。とにかく簡単なコードを動かす(つまりは 'Hello World!')のがわからない。僕はプログラミングに関してまわりに誰も聞く人がいなかったし今もいないので、(いまで…

RubyGem 'Oekaki' ver.0.1.0 Release

RubyGem 'oekaki'のヴァージョン 0.1.0 をリリースしました。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura 新しいメソッド Tool#clear, Tool#get_window_size, Event#window_changed を追加しました…

GTK+ で落書き 11(Ruby)

スクリーンセーバーみたいなものを Ruby で描いてみました。円が大きくなったり小さくなったりしながら落下していきます。自画自賛ですけれど、これ結構好きです。描画には自作の Gem 'oekaki' を使っています。 oekaki | RubyGems.org | your community gem…

GTK+ でスクロールするテキスト・ウィンドウを作る(Ruby)

Ruby で GTK+ を使ってテキストを表示させるウィンドウを作ってみました。Gem 'gtk2' を使っています。 window = ScrolledTextWindow.open 5.times do |i| window.write "send #{i}" window.write " ok!\n" sleep(rand(2) + 1) end window.close これでこん…

フロイド−ワーシャル・アルゴリズム(Ruby)

フロイド−ワーシャル・アルゴリズムは、グラフの全点から全点へのすべての最短経路を求めます。重みは負値を許しますが、負閉路は許しません。上のようなグラフは次のようなハッシュで表現されます。頂点を表わすオブジェクトは何でもかまいません。 g = {a:…