ejherran

Amigos recursivos

Jul 8th, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. class Member:
  5.    
  6.     def __init__(self, name, email):                    # Constructor
  7.         self.name = name
  8.         self.email = email
  9.         self.friends = []
  10.    
  11.     def addFriend(self, m):
  12.         self.friends.append(m)
  13.    
  14.     def listFriends(self, l=0, s=[]):                   # l => Nivel. s => Lista acumuladora.
  15.         if(len(s) <= l):
  16.             s.append(self.name)
  17.         else:
  18.             s[l] += "\t"+self.name
  19.        
  20.         for f in self.friends:
  21.             f.listFriends(l+1, s)
  22.            
  23.         if(l==0):
  24.             return self.toTable(s)
  25.    
  26.     def toTable(self, s):                               # Maquilla la lista de amigos en formato tabla
  27.        
  28.         res = ["--- "+s[0]+" ---\n"]
  29.         del s[0]
  30.        
  31.         i = 0
  32.         for c in s:
  33.             i += 1
  34.             res.append('Nivel '+str(i)+':\t'+c)
  35.        
  36.         return "\n".join(res)
  37.        
  38. def main():
  39.    
  40.     # Crear miembros
  41.    
  42.     a = Member('a', '[email protected]')      # Raiz          Nivel 0
  43.    
  44.     b = Member('b', '[email protected]')      # Amigos de a   Nivel 1
  45.     c = Member('c', '[email protected]')      
  46.     d = Member('d', '[email protected]')
  47.    
  48.     e = Member('e', '[email protected]')      # Amigos de b   Nivel 2
  49.     f = Member('f', '[email protected]')      
  50.    
  51.     g = Member('g', '[email protected]')      # Amigos de c   Nivel 2
  52.     h = Member('h', '[email protected]')      
  53.    
  54.     i = Member('i', '[email protected]')      # Amigos de d   Nivel 2
  55.    
  56.     j = Member('j', '[email protected]')      # Amigos de e   Nivel 3
  57.     k = Member('k', '[email protected]')      
  58.     l = Member('l', '[email protected]')
  59.    
  60.     m = Member('m', '[email protected]')      # Amigos de i   Nivel 3
  61.     n = Member('n', '[email protected]')      
  62.    
  63.     o = Member('o', '[email protected]')      # Amigos de k   Nivel 4
  64.    
  65.     p = Member('p', '[email protected]')      # Amigos de o   Nivel 5
  66.     q = Member('q', '[email protected]')      
  67.    
  68.     # Anidar Miembros
  69.    
  70.     a.addFriend(b)                  # Nivel 1
  71.     a.addFriend(c)
  72.     a.addFriend(d)
  73.    
  74.     b.addFriend(e)                  # Nivel 2
  75.     b.addFriend(f)
  76.    
  77.     c.addFriend(g)
  78.     c.addFriend(h)
  79.    
  80.     d.addFriend(i)
  81.    
  82.     e.addFriend(j)                  # Nivel 3
  83.     e.addFriend(k)
  84.     e.addFriend(l)
  85.    
  86.     i.addFriend(m)
  87.     i.addFriend(n)
  88.    
  89.     k.addFriend(o)                  # Nivel 4
  90.    
  91.     o.addFriend(p)                  # Nivel 5
  92.     o.addFriend(q)
  93.    
  94.     print a.listFriends()
  95.    
  96.     return 0
  97.  
  98. if __name__ == '__main__':
  99.     main()
Advertisement
Add Comment
Please, Sign In to add comment