ブックマーク / mametter.hatenablog.com (7)

  • カロリーメイトリキッドのQuineを書きました - まめめも

    縁あって、カロリーメイトリキッドのプロモーション用にちょっとした Ruby プログラムを書かせてもらいました。 www.otsuka.co.jp ↑のリンクを開いて、cd .Quine したところにある CML_quine.rb がそれです。 cat CML_quine.rb とすると中身が見えます。ruby CML_quine.rb すると動きます。 CalorieMate-Liquid-Quine 実行してみましたか?サイト上で気楽に実行できるので、ぜひ試してみてください。 これがどういうプログラムなのか、簡単に解説しておきます *1 。 ローカルでの遊び方 サイト上で ruby CML_quine.rb をするだけでも楽しめますが、自分のパソコンに保存するとより楽しめます。 まず、cat CML_quine.rb した中身をまるごとコピーしてください。 n=2;で始まる行の頭から、'

    カロリーメイトリキッドのQuineを書きました - まめめも
  • ruby 0.62 のソースコードを復活させた - まめめも

    RubyKaigi の後夜祭で、akr さんが「327 種類の Ruby をビルドする方法 〜0.49 から 2.6.0-preview2 まで〜」という発表をされていました。 RubyKaigi 2018 After Party で話したスライドです: 「327 種類の Ruby をビルドする方法 ~0.49 から 2.6.0-preview2 まで ~」https://t.co/J5MXgM2PNN— Tanaka Akira (@tanaka_akr) 2018年6月4日 その中で、ruby-0.62.tar.gz と ruby-0.63.tar.gz のファイルは「gzip 形式じゃないといわれて展開できない」ということで、ビルド対象から外されていました。 いろいろやって、めでたくこの 2 ファイルを復活させることに成功しました。そのプロセスを書きます。 なお、壊れていたファイルも

    ruby 0.62 のソースコードを復活させた - まめめも
  • Quine Tweet: 自分自身へのリンクを持つ再帰的ツイート - まめめも

    This tweet is recursive. https://t.co/bZISaPd3Ts— Quine Tweet (@quine_tweet) 2016年9月19日 「このツイートはありません」となっていますが、URL をクリックすれば自分自身に飛べます。 以下、このツイートが生まれるまでの経緯を長々と書きます。 問題設定 そのツイート自身の URL を埋め込んだツイートを作ります。ツイートの URL はツイートをした後でないと決まらないし、ツイート文面を後から更新する手段はない(と思う)ので、単純ですが意外に難しい問題です。 調査 ご存知のように、現在のツイートの URL は次のような形式です。 https://twitter.com/<username>/status/<id>username はそのままなので、id を事前に予測できれば解決です。*1 調べてみるとこの id

    Quine Tweet: 自分自身へのリンクを持つ再帰的ツイート - まめめも
  • Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも

    ウソみたいな当の話。Ruby でファミコンエミュレータを書いてみました。 気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現すれば、実速が達成されることになりますね! 試してみたい人はこんなふうに実行してください。 $ gem install ffi $ git clone http://github.com/mame/optcarrot.git $ cd optcarrot $ bin/optcarrot examples/Lan_Master.nesSDL2 か SFML が適切にインストールされている必要があります。Debian/Ubuntu なら apt-get install libsdl2-dev で。 Ru

    Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも
  • RubyKaigi 2010 発表予告 (と山手 quine 英語版) - まめめも

    今月末の RubyKaigi 2010 で、「超絶技巧 Ruby プログラミング」という発表をする予定です。2 日目の 13:30-14:00 、大ホールでの発表です。 主にこのブログで紹介しているコードたちを紹介する予定です。その背景の意外な深遠さや、それを可能にする Ruby の素晴らしさも語れたらいいなあと思っています。 発表言語は日語なのでスライドくらいは英語に、と思って、去年の暮れに書いた 山手 quine の英語版を作りました。 z=27;eval$s=%w!c,s=["H+{K}8k->dXNpv-cD~@?(zhAi~>JOv<-;A(]oH+MFKs*+KOB825i$%QX9~P=HC{iIlj*Sh# v=3U62LhUXhtnCx^{F=nuTtGG}@85_(xVvIWQ|Vllp[Gt22x&`^K3*ui;IW@O9-(`Z6V_T.E]%WHXYGa{O9

    RubyKaigi 2010 発表予告 (と山手 quine 英語版) - まめめも
  • メジャーな数学関数を自力計算する - まめめも

    三角関数や対数などの近似計算の方法を短い Ruby コードでご紹介。だいたいマクローリン展開です。 子供のころ何気なく sin とか log とか使っていて、ふと「コンピュータはどうやってこの値を計算してるんだろう」と思ったものです。そんな昔の自分に見せてあげたいエントリ。と言っても、今時のコンピュータは FPU 持ってるんでこんな計算してませんが。 なお、ちゃんとテストしてません。 三角関数 0 に近い方が精度高いです。99 とか 98 とかは適当に大きな数字。 def sin(x) r, f = 0, 1 1.step(99, 2) do |i| r += x ** i / f f *= -(i+1)*(i+2) end r end def cos(x) r, f = 0, 1 0.step(98, 2) do |i| r += x ** i / f f *= -(i+1)*(i+2)

    メジャーな数学関数を自力計算する - まめめも
  • ruby-minisat とパズルのソルバ - まめめも

    minisat という SAT ソルバの ruby バインディングを作ってみました。1.8.5 と 1.9.0 で動作確認してます。 http://dame.dyndns.org/misc/misc/ruby-minisat-1.14.0.tar.bz2 例えば という SAT 問題を解くときはこんな風にします。 require "minisat" solver = MiniSat::Solver.new # 問題定義 a = solver.new_var b = solver.new_var solver << [a, b] << [-a, b] << [a, -b] # 解の探索 p solver.solve #=> true (satisfiable) # 解の表示 p solver[a] #=> true p solver[b] #=> true リテラルの配列で表現した clau

    ruby-minisat とパズルのソルバ - まめめも
  • 1