<jupyter_start><jupyter_text><jupyter_code>class Stack:
  def __init__(self):
    self.__datos=[]
  
  def is_empty(self):
    return len(self.__datos)== 0
  
  def get_top(self):
    return self.__datos[-1]

  def pop (self):
    return self.__datos.pop()
  
  def push (self, valor):
    self.__datos.append(valor)

  def get_lenght(self):
    return len(self.__datos)

  def to_string(self):
    for ele in self.__datos [-1 : :-1]:
      print(f" { ele } ")

pila1=Stack()
for c in "System.out.println((({[[)}":
  if c in "({[":pila1.push("@")
  elif c in ")]}": pila1.pop()

print(f"La pila está vacia? {pila1.is_empty()}")
print(f"La pila tiene {pila1.get_lenght()} elementos")
pila1.to_string()
#En este ejemplo, la cadena está "desbalanceada", pero si se ponen las llaves correctamente, la pila quedará vacía
print("------------------------------")
#En el siguiente ejemplo, la cadena sí está balanceada y la pila queda vacía.
pila2=Stack()
for c in "System.out.println(){}[]":
  if c in "({[":pila2.push("@")
  elif c in ")]}": pila2.pop()

print(f"La pila está vacia? {pila2.is_empty()}")
print(f"La pila tiene {pila2.get_lenght()} elementos")
pila2.to_string()<jupyter_output>La pila está vacia? False
La pila tiene 4 elementos
 @ 
 @ 
 @ 
 @ 
------------------------------
La pila está vacia? True
La pila tiene 0 elementos
{'fraction_non_alphanumeric': 0.19775280898876405, 'fraction_numerical': 0.01348314606741573, 'mean_word_length': 3.2412698412698413, 'pattern_counts': {'":': 6, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '83452', 'license': 'MIT', 'n_tokens_mistral': 525, 'n_tokens_neox': 518, 'n_words': 138, 'path': 'Tarea_2_Pilas.ipynb', 'repo_name': 'ItzeelFonseca/daa_2021_1', 'size': '1335'}