You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be
Posted by usa on 9 Nov 2012 ruby 1.9 系列で使用しているハッシュ関数について、ハッシュ飽和攻撃によってサービスを停止させることができる脆弱性が報告されました。 この脆弱性は 1.8.7 に対して公表された CVE-2011-4815 とは異なるものです。 全ての ruby 1.9 ユーザーは、この問題に対するセキュリティフィックスが含まれた ruby-1.9.3 patchlevel 327 に更新することが推奨されます。 影響 綿密に構築された文字列の並びをサーバーに対して送信することにより、そのサーバーがこの文字列の並びを文字列をキーとした Hash オブジェクトの生成に利用する場合、サービス停止攻撃が成立します。 例えば、信頼できない送信元から送られた JSON データを解釈する Web アプリケーションなどがこの脆弱性の影響を受けます。 詳細 こ
Blogopolisを見ていると,計算幾何について学んでみたくなります。ということで,凸包を求めるプログラムを作ってみました。 今回は,包装アルゴリズム(package wrapping algorithm)を使っています。以前,cairoを使ってみたことがあるので,今回も利用します。 wrapping.rb 包装アルゴリズムについては,以下を参考にしました。 凸包の計算と多角形の面積計算 『アルゴリズムC〈第2巻〉探索・文字列・計算幾何』 # -*- coding: utf-8 -*- require 'my_canvas' # 線分p1p2と水平な直線がなす角度を求める(0〜360) def theta(p1, p2) dx = p2[0] - p1[0]; ax = dx.abs dy = p2[1] - p1[1]; ay = dy.abs t = (ax + ay == 0) ?
関数型言語ラブな人は、Rubyでもカリー化したくなってくると思います(特にHaskellラブな人はその傾向が強いように思います)。ということで、こんなメソッドを書いてみました。 module Kernel def curry(sym, *a1) f = sym.respond_to?(:call) ? sym : method(sym) lambda do |*a2| f.call(*(a1 + a2)) end end end 使い方はこんな感じです。mapの例を見てください。あぁ何て美しいのでしょう。 def add(a, b) a + b end p curry(:add, 2)[3] # => 5 p curry(method(:add), 2)[3] # => 5 p curry(lambda {|a, b| a * b}, 2)[3] # => 6 p (1 .. 10).ma
■ Ruby 手習い tree コマンドをつくる 応用編では、Ruby の機能を使って便利な使えるツールを作っていきます。 プログラムの書き方やスクリプトの書き方を文法から勉強しただけでは、作るというときに目的を達成できないことがあります。 プログラミング/スクリプティングに役立つ考え方や、実現方法についても扱っていきます。 ここでは、Ruby の便利な「組み込みクラス」の「Dir クラス」を使います。 ディレクトリとそのディレクトリに所属するファイルを手軽に扱えるので、ぜひ活用してください。 また、プログラミングのテクニックとして、 =再帰的処理= を扱っていきます。 これで、 =ディレクトリ= をうまく扱えるようになります。 目的として tree というコマンドを作成します。 実行例(sample0.txt)は、tree.rb を使った Ruby のソースコードのディレクトリ構造です。
昨日までに書いていたグラフはコストとかそういうの考えていなかったんだけど、ダイクストラをやろうということでコストも考えることにしました。ダイクストラでedgeとそこまでの距離のhashを作りながら、そこまでのを記憶しておくhashも用意。最短路を探す時にはそれを逆向きに再帰で探していきます。 # -*- coding: utf-8 -*- require 'pp' class Graph def initialize(edges=[]) @edges = edges @nodes = Hash.new{|h,k| h[k] = []} @weights = Hash.new{|h,k| h[k] = {}} end def add_edge(edge) @edges.push edge unless @edges.index(edge) end def add_node(u, v) add
■ Ruby で 8 Queen パズル 8 Queen は、コンピュータで扱うのも有名な題材になっています。 多くの参考文献にとり上げられているのでどこかで目にしていると思います。 ここでは、Ruby を使ってこの題材を扱ってみたいと思います。 ぜひ自分で作成してみてください。 パズル 8 Queen ヒント ソースコード 解説 スレッドを使う ■ パズル 8 Queen チェスの「Queen」は、将棋の「飛車」と「角」を合わせた効き筋をもっています。 このため「縦」「横」「ななめ」に自由に動けます。 ここで、チェスの盤上(8 Queen の場合には 8 x 8 の盤を想定)に、それぞれの Queen が、他の Queen の効き筋にぶつからないように、8 個の Queen を配置します。 この配置の方法は、いくつあるでしょうか? 次のものが実際の解答の一つです。 +--+--+--+-
例えば、Twitterから同時にデータを取得するような例とかを考える。自分で結構考えてみたけど、処理が同時には走らない。どの辺がおかしいのかよくわからん。。。 #!/usr/bin/ruby -Ke require 'rubygems' require 'thread' require 'enumerator' require 'pp' require 'hpricot' require 'mechanize' require 'kconv' require 'yaml' gem 'twitter4r', '>=0.3.0' require 'twitter' $KCODE='e' class Friend attr_accessor :name attr_accessor :source attr_accessor :agent attr_accessor :following attr
勘違い id:ujihisa兄さんのレスにしたがって書いてみましたが動きません。どしてかなぁ なんだかどえらい間違いをしている気がします。あほの子 class Queens 中略 def calc(i=0) @answer = 0 calc(0) end def calc(i) if i == @boardSize # print(" show_ans;[") # @boardSize.times{|k| printf("%s,",@matrix[k])} # print("]\n") @answer +=1 else @boardSize.times{|k| if check(i,k) @matrix[i] = k calc(i+1) end } end end 中略 end 後略 ああ!関数のデフォルト値! やっぱりあほの子だったらしい私。id:faultierにいさんからツッコミがは
Open code-statistics: Language is selected by the extension of the file. See the list of supported languages to know the extension of your language. Problem Print integers 1 to 100, but replace multiples of 3 with "Fizz" and multiples of 5 with "Buzz" and multiples of both with "FizzBuzz" For longer description, see: http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-g
86世代の方たちがテスト期間中にライフゲームの実装をしていたのでたのしそーだなーと指をくわえてみていました。暇になったのでRubyでやってみよーの巻。詳しい問題設定などは下記 どう書く:どう書く?org Wikipedia:ライフゲーム - Wikipedia 実装 なんだかendまるけになってしまたよ(´・ω・`) require "curses" class Cells attr_reader :height, :width def initialize(height, width) @height = height @width = width @array = Array.new(height + 2) { Array.new(width + 2, 0) } end def []=(i,j,x) @array[i + 1][j + 1]=x end def [](i, j) @ar
どう書く?org #5581 久々にどう書くorgに投稿してみた。1個1個セルの周り調べてくのも面白みがないなと思って、生きてるセルの周りをスコア付けしてくやり方でやってみた。 生きてるセルに+10し、生きてるセルの周りに+1していく。最終的にスコアが3(まわりに3つの生きてるセルがある)のセルは次世代で誕生するセルと判断。スコアが12もしくは13の(今の世代で生きてるセルで、まわりに2つもしくは3つの生きてるセルがある)のセルは次世代も維持するセルと判断。 テストはWikipediaのライフゲームのページから振動型(ブリンカー、ヒキガエルなど)を試しただけで、テストコードすら書いてない。だからもしかしたら間違ってるかもしれない。許せ。 require 'curses' module LifeGame class World def initialize(map) @map = map e
今年もうちでクリスマスパーティーをやる。 クリスマスパーティーにはプレゼント交換。 で、誰が誰にプレゼントを渡すのかを決めるわけだが、人間がサイコロなどで乱数をつくって決めるのは、実は難しい。 そこで今日の出題。 クリスマスパーティーでプレゼント交換を行う。 全員、誰かにプレゼントを一つあげ、誰かからプレゼントを一つもらう。 参加者は、自分と同じグループに属している人にはプレゼントをあげない。 どのグループにも属さない人や、複数のグループに属する人はいない。 この条件を満たすようなプレゼント交換が等確率で出るような、プレゼント交換方法生成プログラムを実装せよ わかりにくいと思うので、グループについて解説。 例えば。私と杏子と穴田さんと出部さんの四人で行うとする。私と杏子は「鍋谷夫妻」というグループに属しており、穴田さんは「穴田さん」というグループ、出部さんは「出部さん」というグループに属し
クリスマスパーティーでプレゼント交換を行う。 全員、誰かにプレゼントを一つあげ、誰かからプレゼントを一つもらう。 参加者は、自分と同じグループに属している人にはプレゼントをあげない。 どのグループにも属さない人や、複数のグループに属する人はいない。 この条件を満たすようなプレゼント交換が等確率で出るような、プレゼント交換方法生成プログラムを実装せよ http://d.hatena.ne.jp/Nabetani/20061217#p1 という問題が面白そうだったのでやってみました。もう締め切りはすぎているのですがテストを書いたという人は見受けられないので曝しておきます。 問題をやる際にまず考えたのが、最近流行のテストをどう書くか?ということでした。特に等確率であることをきっちり検証するにはどうやればいいのだろうということで悩みました。(というより悩み中です) 先にテストを書いたからか実装は素
Quiz FAQ Is Ruby Quiz Still Active? Yes, but it's under new management and this is no longer the site for the current challenges. After running three years worth of quizzes, I retired as quizmaster and passed the project on to some loyal fans. New quizzes are still posted to the Ruby Talk mailing list so look for them there if you want to participate. The rest of these questions are left as they w
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く