Linux Mint 18 (Ubuntu 16.04) でサスペンド復帰後にキー入力ができなくなる

現在自分の使っている PC は VAIO Fit 15E mk2 VJF1521 ですが、Linux Mint のサスペンド復帰後にキー入力が利かなくなるという不具合をずっと抱えていました。それを解決したのでやり方を記しておきます。自分がいま使っている OS は Linux Mint 18 ですが…

Python の Turtle でヒルベルト曲線

タートルグラフィックスは再帰的な図形を描くのに適しています。Python では組み込みで簡単にタートルグラフィックスが利用できるので(参照)、ヒルベルト曲線を描いてみました。5次のヒルベルト曲線です。 コードは以下です。驚くほど簡単ですね。 from tu…

Windows と Linux のデュアルブート時に時計がずれるのを修正する

Windows と Linux では時間の取り扱い方がちがうので、デュアルブートしている場合は時刻がずれる場合があります。具体的にいうと Linux は UTC(協定世界時)を採用しており、Windows のシステムでは localtime を採用しているからです。どちらを修正するこ…

GTK+でヒルベルト曲線(Ruby)

前記事の Ruby/GTK+ 用のモジュールを使って、ヒルベルト曲線を描いてみました。Ruby/Tk 版(参照)と殆ど同じです。 require './mygtk' class Draw def initialize(n, slot) @lgth = Width / 2 ** n @y = (Width - @lgth * (2 ** n - 1)) / 2 #見栄えを整え…

GTK+でお絵かきしてみた(Ruby)

Ruby だけだと遊びで線を引く程度のことも簡単でないので、Ruby で GTK+ を使ってシンプルにお絵かきするだけのモジュールを書いてみました。できるのは、点を打つ、線を引く、長方形を描く、円(楕円、弧)を描く、多角形を描く、文字の表示、画像の取得と…

gnuplot で陰関数の表示(Ruby)

Python の matplotlib の plot_implicit による陰関数の描画がどうも信用ならないので、gnuplot でやってみることを考えた。しかし gnuplot 自体には陰関数を直接描画する機能はないので、工夫が必要となる。gnuplot で陰関数を描く 基本的には上サイトでや…

Python で陰関数のグラフの表示

ここを参考にしました。関数は id:mathnb さんの出題されたものです(参照)。コードはこんな感じ。plot_implicit というのが陰関数の表示なのでしょうね。 from sympy import * x, y = symbols("x y") f = x ** 6 + 3 * x ** 4 * y ** 2 + 6 * x ** 4 * y -…

2抜きを許したストラックアウトの抜き方(Ruby)

1 2 3 4 5 6 7 8 9 ストラックアウトといって 3×3 のボードに玉をぶつけて数字を抜いていく遊びがありますね。その抜き方は何通りあるでしょうといえば、9!(9の階乗)通りとすぐ求められてつまらないので、2抜きを許します。つまり、ひとつの玉で同時に、隣…

Python に連立方程式を解かせる

定点を通る球の接平面 - オベリスク備忘録 上では手計算で解いたのですが、Python で機械的に解けるようなので。Sympy というライブラリを使っています。おお、すごい。これ、ライブラリはどうやっているのかな。 ※参考 Pythonを使って一瞬で連立方程式を解…

スニーカーの靴紐の通し方についての問題(Ruby)

問題: スニーカーに靴紐を通すのに、左右に6個づつ、計12個の穴があるとします。色いろな通し方がありますが、左右の穴に交互に紐を通していった場合、紐が交差してできる点の数の最大値はいくらになるでしょうか。なお、一番上の穴から通し始めて、最後も…

野良 Gem 'Utils'

RubyGems.org には上げていませんが、Bundler を使って GitHub からインストールできる Gem(野良Gem)です。Gemfile に gem "utils", github: 'obelisk68/utils'を追加して、$ bundle install でインストールされます。詳細は下。 GitHub - obelisk68/utils…

Ruby のメタプログラミングでカウンターを作る

Ruby はインクリメントやデクリメントがないのですが、遊びでカウンターを作ってみました。メタプログラミングを使って、呼び出されるたびに step(デフォルトは 1)だけ増える数を与えるメソッドを生成します。「メソッド」というのが工夫したところです。…

YコンビネータとZコンビネータ(Ruby)

qiita.comこの記事がおもしろかったので色いろぐぐっていたら、すばらしくわかりやすいサイトがあった。d.hatena.ne.jpわかりやすいので、いっぱいブクマがついております。以下これを参考にして、メモしておきます。 まずラムダ式であるが、 f(x) = x * 2と…

いわゆる「ビュフォンの針」の同心円バージョンについて

いつも拝読している「完全無欠で荒唐無稽な夢」というブログがあるのですが、そのコメント欄にこんなことが書いてありました。 こんにちは ^^ またお願いなんですが…^^; ビュフォンの針:平行線の間隔の半分の長さの針が平行線と交わる確率が1/πというもので…

Ruby の「ふしぎに気まぐれな構文」と言われるものについて

Tiny Prolog in Ruby (Extra Lesson)空白に注意してコードを読んでみて下さい。 irb(main):001:0> def a; 1; end => :a irb(main):002:0> b = 2; c = 3 => 3 irb(main):003:0> a +b +c ArgumentError: wrong number of arguments (1 for 0) from (irb):1:in …

Shift_JIS のファイルを読み込んで UTF-8 で処理(Ruby)

Linux ではエンコーディングはふつう UTF-8 を使いますが、Windows は Shift_JIS なので、Windows 用に Shift_JIS で作成したファイルを、Linux の Ruby でふつうに UTF-8 で処理する。例。 text = File.open("hoge.txt", "r:Shift_JIS") {|io| io.read.enco…

cairo と Ruby で遊んでみる(2)

水平投射です。 require 'bundler/setup' require 'cairo' require './gifanime' include Math W = 600; H = 300 V0 = 10.0; A = 0.75; G = 5.0 v = lambda {|n| - A ** n * sqrt(2 * G * H)} t = lambda do |n| if n.zero? sqrt(2 * H / G) else ar = [1] n…

Swift でたらい回し関数

以前 Ruby と Python と C でいわゆる「たらい回し関数」のベンチマークをやってみましたが(参照)、Swift 3.0 でもやってみました。コードは以下。無様ですがお許しを。 import Glibc func tak(_ x: Int,_ y: Int,_ z: Int) -> Int { if x <= y { return y…

Swift によるオブジェクト指向ジャンケン・プログラム

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング作者: 小森裕介,アクロクエストテクノロジー株式会社出版社/メーカー: 技術評論社発売日: 2004/12/01メディア: 単行本購入: 10人 クリック: 217回この商品を含む…

Linux Mint(Ubuntu)で Swift を使ってみる(その2)

swift.orgLinux でも Swift が使えるようになったので、まずは Docker を使って Linux Mint 17.2 に導入してみたのですが(参照)、Docker なんぞを使うと却って面倒なので、お手軽にやってみました。上の公式サイトに書いてあるとおりにやっただけです。正…

nil による NoMethodError を回避する(Ruby)

Ruby のメソッドで例外に nil を返すものは多く、NoMethodError が出て処理が止まることがあります。面倒なので回避するメソッド Object#nil_trans を書きました。self が nil 以外のときは self をそのまま返し、nil のときは引数(デフォルトは空文字列)…

Ruby で Generator の実装

Python に Generator というのがあります。Ruby では Enumerator でほぼ同じことができますが、引数の与え方がいまひとつよくわかりません。でというわけでもないのですが、勉強のために頑張って Fiber で実装してみました。Generator#args で引数を与えます…

Python の内包表記と Ruby の each_with_object

kiito.hatenablog.comこの記事は勉強になりました。Python の内包表記で def create_url_table(urls) return {url: get_title(url) for url in urls if 'google' not in url} と書くのを、Ruby の each_with_object を使うと def create_url_table(urls) url…

HTML5の markタグ

aaaaa強調するbbbbb aaaaa<mark>強調する</mark>bbbbb

cairo と Ruby で遊んでみる

cairo は二次元画像を描くためのライブラリです。これと Ruby でちょっと GIFアニメを作って遊んでみました。 cairo は Linux ならたぶん最初から入っているようです。Linux Mint 17.2 には既に入っていたので、それを使いました。 Ruby で cairo を使うには…

Rubyは末尾呼び出し最適化をサポートしている

Ruby でこれはスタックオーバーフローします。 def add(n, a = 0) return a if n.zero? add(n - 1, n + a) end puts add(10000) #=>a.rb:2:in `add': stack level too deep (SystemStackError) 例えばこう対策します。 obelisk.hatenablog.com 上のとおり以…

構造体を継承する(Ruby)

アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで作者: Tom Stuart,笹田耕一,笹井崇司出版社/メーカー: オライリージャパン発売日: 2014/09/18メディア: 大型本この商品を含むブログ (9件) を見る上の本を読んでいたところ…

外部イテレータで素数生成(Ruby)

標準添付ライブラリに Prime がありますが、自分でやってみました。めっちゃ素朴な実装です(数が大きくなると急速に遅くなります)。 gen_primes = Enumerator.new do |y, i = 2| loop do catch do |jp| 2.upto(i - 1) {|j| throw(jp) if (i % j).zero?} y <…

Linux Mint(Ubuntu)で Swift を使ってみる

Swift ってよさそうな言語だけれど、Apple のみかと思っていたら、一応 Ubuntu でも動くのですね。インストールは以下のサイトを参考にしました。 gihyo.jpDocker を使ってやってみました。Linux Mint 17.2 で動作確認。 $ sudo docker pull swiftdocker/swi…

Scheme(Gauche)でフィボナッチ数列

こんな感じでしょうか。 (define (sub a b co n) (if (= co n) a (begin (print a) (sub (+ a b) a (+ co 1) n)))) (define (fibonatti n) (print (sub 1 1 1 n))) (fibonatti 10) Scheme って while 文も for 文もないのですね。繰り返しは do 文でやるか、…

Linux Mint(Ubuntu)でScheme(Gauche)を使う

先日 Scheme 処理系はとして Guile を入れてみたのですが、どうも Gauche の方がメジャーみたいですね。ということで入れてみました。 $ sudo apt-get install gaucheついでに $ sudo apt-get install rlwrapをしておくといいかも知れない。$ rlwrap gosh で…

シンプソンの公式による数値積分(Ruby)

Rubyによる情報科学入門作者: 久野靖出版社/メーカー: 近代科学社発売日: 2008/12メディア: 単行本 クリック: 5回この商品を含むブログ (13件) を見る f(x) = x^2 を [1, 10] の区間で数値積分してみます。ここでは区間を100分割します。ちなみに、正しい答…

1変数方程式を数値計算で解く(Ruby)

Rubyによる情報科学入門作者: 久野靖出版社/メーカー: 近代科学社発売日: 2008/12メディア: 単行本 クリック: 5回この商品を含むブログ (13件) を見る方程式 f(x) = 0 を ある区間 [a, b] において、f(x) が単調増加、連続、f(a) 0 であるとして、数値計算で…

Linux Mint(Ubuntu)で Guile(Scheme)を使う

Linux Mint 17.2 で確認しました。Guile は Scheme の実装のひとつです。処理系は「ソフトウェアの管理」で guile-2.0 と guile-2.0-dev を入れました。バージョンは多少古く、guile 2.0.9 が入ります。 $ guile で対話型インタプリタが起動します。 tomoki@…

どれくらいの再帰呼び出しでスタックオーバーフローになるか

d.hatena.ne.jp上のサイトで実験しているのに、Ruby と Python を追加しました。 OSは Linux Kernel 3.19.0、メモリは 7.7GB。Python 3.4 ctr = 0 def testfunc(): global ctr ctr += 1 print ("%sth function call." % (ctr)) testfunc() testfunc() Ruby 2…

末尾再帰をスタックオーバーフローせずに実行する(Ruby)

あるプログラムを書いていて、再帰がいわゆる「スタックオーバーフロー」するのに悩まされました。結局そのプログラムはカスだったのですが、スタックオーバーフローをおもしろい方法で回避することを知ったので、メモしておきます。まず、1 から n までを単…

Ruby の第一級関数としての Proc

不完全にしてかなり言葉足らずな比較プログラミング言語学 - 西尾泰和のはてなダイアリーはてなブックマーク- 不完全にしてかなり言葉足らずな比較プログラミング言語学 - 西尾泰和のはてなダイアリー たまたま上のブログ記事を読んでいて、次のような記述が…

Linux Mint(Ubuntu)で Logicool のマウスを使う

Linux その他で使おうと、Logicool のマウスを買いました。Logicool ロジクール ワイヤレスマウス M235r ブルー出版社/メーカー: ロジクール発売日: 2013/02/01メディア: Personal Computersこの商品を含むブログを見る ワイヤレスマウスなので、小さい受信…

単純なソートのおさらい(Python)

以前に Ruby でバブルソート、選択ソート、挿入ソートを実装してみました(参照)が、Python でもやってみました。リストの(浅い)コピーってどうやるのかと思った。それから、Python は Ruby とちがって「モンキーパッチ」ができないのですね。あと、range…

Ruby/Tk と Green Shoes

ここで Ruby/Tk を使って作られている GUI は、Green Shoes ならばどう書けるか考えた。いちばん簡単には require 'bundler/setup' require 'green_shoes' Shoes.app width: 150, height: 100 do button("イヌ") {puts "わんわん"} para "吾輩はイヌである" …

「rscの日記」さんが紹介されていた問題を解く(Ruby)

またまた「rscの日記」さんが紹介されていた問題を Ruby で解いてみました。問題はこちらです。 A~Eの5人はある事業所に勤務する派遣社員である。この5人のある月曜日から金曜日までの出勤状況について次のことがわかっているとき、正しくいえるのはどれ…

Green Shoes で落書きパッドを作る

阿呆な落書きパッドを作りました。マウスのドラッグで描き、スペースキーで画面を保存します。スクリーンショットを行うシステムのコマンドを使っているので、Linux(gnome)専用です。 require 'bundler/setup' require 'green_shoes' Shoes.app width: 600…

Green Shoes で動くものを作る

クリックして生成された円が動き回ります。ぶつかると完全弾性衝突をします。端に到達すると跳ね返ります。ここの JavaScript で書かれたプログラムとほぼ同じように動作します。JavaScript 版の方はこちらで実行できます。遊んでみて下さい。 require 'bund…

RMagick を使ってGIFアニメ(Ruby)

メソッド gifanme(delay, dir) です。dir は素材画像の入っているディレクトリ、delay は待ち時間(1/100秒単位)です。gifanime.gif という名前で出力されます。アニメーションされる順番はディレクトリ内のファイルのアルファベット辞書順になります。例え…

カジノゲーム「クラップス」のシミュレーション(Ruby)

ギャンブルのゲームで「クラップス」というのがあるそうで、カジノではとても盛り上がるらしいです。T_NAKA さんのブログ(参照)でこの「クラップス」のシミュレーションをやってあったのを拝見して、おもしろそうなので自分も Ruby でやってみました。T_NA…

ブロックと proc(Ruby)

ひとつのメソッドでブロックを使っても、 proc を引数にしても実行できる。 def output(&bk) bk.call end output {puts "test1"} a = proc {puts "test2"} output(&a) bk.call は yield でもいい。

OpenGLの座標系覚書き

OpenGL の五つの座標系 ローカル座標系(オブジェクト座標系、ボディ座標系、モデリング座標系) ワールド座標系 視点座標系(ビュー座標系) 投影面座標系(クリップ座標系、表示範囲) ウィンドウ座標系(スクリーン座標系、ビューポート) 我々がコマンド…

OpenGL のラッパーモジュール Opal を書いた(Ruby)

Ruby で OpenGL 遊びをしているうち、同じことを繰り返し書くのに飽きたので、せっかく Ruby を使っているのだから少しだけ Ruby っぽくするラッパーモジュール「オパール Opal」を書いた。Gem 'OpenGL' は、C言語のコードを移植するには便利なのだが。なお…

ライブラリ作成覚書(Ruby)

ちょっと考えてみた。デザインパターンっぽいのだけれど、何だろう。 module App class A def display=(st) puts st end def <<(st) puts st end def output(st) puts st end end def self.exec(&bk) A.new.instance_eval(&bk) end end App.exec do |x| x.di…

OpenGLで三次元表示(Ruby)

詳しくはこちら。下は画像キャプチャして GIFアニメにしたもの。ぐるぐる回っています。