« 花粉症日記 |Main| 甜茶日記 »

« PythonでRubyっぽいmap | Python | Haskell In Python ver. 0.01 »

Jythonでハノイの塔の可聴化

Jythonを使うと5行でMIDIが鳴らせる。
>>> import javax.sound.midi.MidiSystem as MidiSystem
>>> synthe = MidiSystem.getSynthesizer()
>>> synthe.open()
>>> c = synthe.channels[0]
>>> c.noteOn(48, 127)
ding(n)で指定した音が0.25秒なるようにしてみる。
>>> def ding(n):
...     c.noteOn(n, 127)
...     sleep(0.25)
...     c.noteOff(n)
...
>>> ding(80)
ハノイの塔を解く。
>>> def hanoi(numPlate, frm, to, via):
...     if numPlate == 1:
...             move(frm, to)
...     else:
...             hanoi(numPlate - 1, frm, via, to)
...             move(frm, to)
...             hanoi(numPlate - 1, via, to, frm)
...
>>> def move(frm, to):
...     print frm, "=>", to
...
>>> hanoi(4, 1, 3, 2)
1 => 2
1 => 3
2 => 3
1 => 2
3 => 1
3 => 2
1 => 2
1 => 3
2 => 3
2 => 1
3 => 1
2 => 3
1 => 2
1 => 3
2 => 3
ハノイの塔の解法を音楽にする。 ソからミを経由してドへ。
>>> def move(frm, to):
...     ding(frm)
...     ding(to)
...
>>> hanoi(4, 55, 48, 52)
「jython -Dpython.security.respectJavaAccessibility=false」で起動したJythonを使っています。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/526

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.