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を使っています。