Python の宿題ここで答えます Part 2

■ このスレッドは過去ログ倉庫に格納されています
2009/11/16(月) 06:27:36
【Pythonスレッド基本ルール】
1:問題文は自己省略せずに、直接全部貼り付けてください。
2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。
3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。
4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。
5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。

【課題提示用テンプレ】
【 課題 】与えられた課題文をそのまま書きます 《必須》
【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》
【 期限 】提出期限、解答希望日があれば書きます
【 Ver  】希望するPythonバージョンがあれば書きます(必要があればOSも)
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
       丸投げでない場合は、途中までのソースとその経過報告、
       質問点、疑問点を書きます(なるべく丸投げにしてください)

【回答プログラムの掲載場所】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi

前スレ
http://pc12.2ch.net/test/read.cgi/tech/1153585095/
2011/01/11(火) 06:54:24
例(hanoi.py)のソースが下手すぎなので治してあげたよ

class Hanoi(object):
  def __init__(self, height):
    self.bars = [range(height, 0, -1), [], []]
    self.step = 0

  def __repr__(self):
    return 'step -> %d\nBAR1: %s\nBAR2: %s\nBAR3: %s' % (
      self.step, self.bars[0], self.bars[1], self.bars[2])

  def move(self, n, src, dst, work):
    ''' move n discs from src to dst using work '''
    if n == 1: # move sigle disc directly
      self.bars[dst].append(self.bars[src].pop())
      self.step += 1
      print self
    else: # move above (n - 1) discs to work, and move n th disc to dst
      self.move(n - 1, src, work, dst)
      self.move(1, src, dst, work)
      self.move(n - 1, work, dst, src)

if __name__ == '__main__':
  import sys
  try:
    height = int(sys.argv[1])
  except (IndexError, TypeError, ValueError), e:
    height = 3
  hanoi = Hanoi(height)
  print hanoi
  hanoi.move(height, 0, 1, 2)
2011/01/11(火) 07:03:32
なんかかなり酷くなったような…
2011/01/11(火) 07:15:11
dohanoiよりは好きだな
2011/01/12(水) 05:46:18
>>173のソースが下手すぎなので治してあげたよ
簡略版
http://codepad.org/YQed8SIr
クラス化版(微妙...)
http://codepad.org/eyLm0tzd
2011/01/12(水) 06:11:47
move 1 from A to C
move 2 from A to B
move 1 from A to C
move 3 from A to C
move 1 from A to C
move 2 from A to B
move 1 from A to C
move 4 from A to B
move 1 from A to C
move 2 from A to B
move 1 from A to C
move 3 from A to C
move 1 from A to C
move 2 from A to B
move 1 from A to C

なんか変
2011/01/12(水) 07:48:14
>>177
簡略版は修正前しか保存してなかったみたいだ,すまねぇ

簡略版の修正版
http://codepad.org/wEFpzHfy
2011/01/12(水) 07:56:39
クラス化版(テスト)
http://codepad.org/kiaIznYR
2011/01/12(水) 08:22:17
どうでもいいリファクタしてないで宿題やってやれよ
2011/01/12(水) 08:58:54
初めてのTkinter
http://codepad.org/OtCGyrps
2011/01/12(水) 09:22:11
一箇所修正

修正前
    except StopIteration, e:
      self.running = False

修正後
    except StopIteration, e:
      self.running = False
      self.kwClock.set('STOP')

にしてください
後者の方が安定します(謎
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況