問題の説明:
ウサギのウサギ、3ヶ月の誕生のペアは、ウサギので、すべて、3ヶ月ごとに生のウサギに生まれています。。。
pythonを使用してシミュレート:
1 #!は/ usr / binに/のpython3 2 インポートランダム 3 インポート弦 4 5 6 クラスAPairOfRabbits(): 7 デフ __init__ (自己): 8 self.age = 1 9 self.malename = '' .join(random.sample( string.ascii_letters、5 )) 10 self.femalename = '' .join(random.sample(string.ascii_letters、4 )) 11 self.childs = [] 12 self.parent = なし 13 DEFgetParentInfo(自己): 14 であれば(なし== self.parent): 15 戻りなし 16 他: 17 プリント(" ParentsName:%sの"%のself.parent.getName()) 18 デフgetChildsInfo(自己): 19 のための子供で:self.childs 20 プリント(" ChildsName:%S "%child.getName()) 21 プリント("" ) 22 デフ情報(自己): 23 プリント(' %sおよび%S:年齢%D '%(self.malename、self.femalename、self.age)) 24 self.getParentInfo() 25 self.getChildsInfo() 26 27 DEF 自己(伝播): 28 self.childs .append(APairOfRabbits()) 29 self.childs [-1 ] .setParent(自己) 30 デフのgetName(自己): 31 戻り self.malename + " - " + self.femalename 32 DEF growUpOfMonth(自己): 33 自己。年齢+ = 1 34 の場合(0 ==(self.age%3 )): 35 self.propagate() 36 37 デフのsetParent(自己、親): 38 = self.parent 親 39 DEF のgetParent(自己): 40 リターンself.parent 41 DEF getChilds (自己): 42 リターンself.childs 43 44 クラスRabbitsFamily(): 45 デフ __init__ (自己): 46 self.rootRabbits =のAPairOfRabbits() 47 DEF dfsUpdateState(自己、親= なし): 48 もしなし== 親: 49 親= self.rootRabbits 50 のための子でparent.getChilds(): 51 self.dfsUpdateState(子) 52 parent.growUpOfMonth() 53 DEF dfsShowState(自己、親= なし): 54 もし =なし= 親: 55 親= self.rootRabbits 56 parent.info() 57 のための子でparent.getChilds(): 58 self.dfsShowState(子) 59 60rabbitsFamily = RabbitsFamily() 61 のための I における範囲(55 ): 62 rabbitsFamily.dfsUpdateState() 63 rabbitsFamily.dfsShowState()