Python

Ruby は「痒いところに手が届く」か

qiita.comいや、Python すばらしいですね。どこまで Ruby でできるか、試してみました。なお、使った Ruby のバージョンは 2.7.0 です。 3値以上の比較 1 == 2 == 3 # -> False 1 < 2 < 3 < 4 # -> True いやー、これは Ruby ではできないですね。なお、Ruby…

みんな大好き FizzBuzz(Ruby, Python)

外部イテレータ FizzBuzz。 a = ["Fizz", "Buzz", "FizzBuzz"] h = {0=>a[2], 3=>a[0], 6=>a[0], 9=>a[0], 12=>a[0], 5=>a[1], 10=>a[1]} g = Enumerator.new do |y| loop.with_index(1) do |_, i| y << (h[i % 15] || i.to_s) end end p g.take(20) #=>["1"…

コッホ曲線を描く(Python, Ruby)

自己相似図形であるコッホ曲線を Python と Ruby で描いてみました。 Python では手軽にタートル・グラフィックスが使えるので、これを利用するのが簡単です。 3次のコッホ曲線を描きます。 from turtle import * def draw(length, depth): if depth == 0: f…

Python の for else って地味に便利と Rubyist が思う

ので、遊びで Ruby で実装してみました。each_with_proc(pc, *args) で、ふつうの each のループが終ったあとに proc オブジェクト pc が pc.call(*args) されます。ブロックから break で抜けた場合は proc は呼ばれません。 module Enumerable def each_wi…

Python の Turtle でヒルベルト曲線

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

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 -…

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

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

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…

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

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…

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

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

Linux Mint 17.2 で IRuby と jupyter notebook(IRuby notebook)を使う

IRuby を使おうと思ったのですが、できるまでにかなり苦労したのでメモ。 環境は Linux Mint 17.2. Ruby 2.2.3.まず、iPython を入れないといけないので、Python のインストールが必要です。僕は既に virtualenv を使って Python 3.4 をインストールしていま…

Python の os.walk もどきを Ruby で

Python に os.walk という関数があって、よく Python の入門書で自慢されているので、遊びで Ruby でマネしてみました。あるディレクトリ以下を再帰的にトラバースします。ただし、Python の実装そのままではなくて、面倒なのでマネだけにしてあります。同じ…

ディレクトリの保存

コピー先のディレクトリにコピー元のディレクトリ乃至ファイルがない場合、コピー先に再帰的にコピーします。コピー元になくても、コピー先のディレクトリ乃至ファイルを削除することはありません。また、ファイルが変更されているかは考慮しません。つまり…

Python 3.4 に matplotlib を入れる

T_NAKA さんのブログを拝見していたら(参照)、Python で簡単に数学の関数グラフが描けるようである。これはいいというので、自分も試してみました。コードはこんなに簡単。 from numpy import * import pylab as plt x = linspace(-10, 10, 100) y = x plt…

たらい回し関数

小飼弾さんのブログの過去記事(参照)を読んでいて、「たらい回し」関数ってのの存在を知りました。コードを読んでいて何の意味があるのだろうと思っていたら、関数呼び出しのベンチマークに使う有名な関数なのですね。Wikipedia に書いてありました。 竹内…

Python の内包表記とRuby のブロック

Pythonista が Ruby に優越感を抱くのに、内包表記の存在がある。内包表記は select + map でいけるし、日本人としてはあまり読みやすいとは思えない(内包表記は英語だと語順が自然)ので、Ruby 風に書くと確かに冗長だけれども、Ruby には採用しないみたい…

Python のスライスを Ruby で実装(その2)

Pythonのリストのスライスに同等のメソッドをRubyで実装 - Camera Obscura 上の記事では Python のスライスを Ruby の Array に対して実装しましたが、ほんの少しの修正で完全に String にも適用できます。いわゆる「ダック・タイピング」ですね。なので、モ…

Pythonのリストのスライスに同等のメソッドをRubyで実装

Python にはリスト(Ruby の配列)のスライスと呼ばれる操作があります。 >>> a = [0, 1, 2, 3] >>> a[0 : 2] [0, 1] みたいなやつです。Python のお勉強に、これと同等のメソッドを Ruby で実装してみました。Array#slice は既に存在するので、pickup とい…

virtualenv で Python 3.4 にNumPy を入れる

$ sudo apt-get install python3.4-devが必要です。あとは source bin/activate で環境に入ったあと、 $ pip install numpyで OK です。ついでに $ pip install scipyで SciPy もインストール。Linux Mint 17.2 で確認しました。参考: Python - Ubuntu 12.0…

メソッドを変数に入れて呼び出す(Ruby)

メソッドを変数に入れて呼び出すのは、Python では簡単。 def b(): print("test") a = b a() #=>"test" これは Ruby でもできる。Ruby がおもしろいのは、推奨されない手法を使うのが多少面倒になっていること。Object#send メソッドを使う。 a = def b puts…

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

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

Linux Mint で複数のバージョンの Python を使う

Linux Mint(あるいは Ubuntu)には最初から Python が入っています。Linux Mint 17.2 には複数のバージョンの Python が入っているので、virtualenv を使って複数のバージョンを切り替えられるようにしてみます。まず $ python として [Tab] キーを二回押す…