Advertisement
icarussiano

Untitled

Dec 10th, 2022 (edited)
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.79 KB | None | 0 0
  1. from functools import reduce
  2. class MaxValues:
  3.     def __init__(self):
  4.         # Inizializziamo una lista vuota per memorizzare la collezione di numeri interi positivi
  5.         self.collection = []
  6.  
  7.     def add_collection(self, numbers):
  8.         # Aggiungiamo la collezione di numeri alla nostra lista
  9.         self.collection.extend(numbers)
  10.  
  11.     def subl_k(self, k):
  12.         """
  13.        metodo che calcola tutte le sottolsite di lunghezza k di una lista
  14.        :param k:lunghezza delle sottoliste
  15.        :return: sottoliste
  16.        """
  17.         lists = []
  18.         for i in range(len(self.collection) + 1):
  19.             for j in range(i):
  20.                 if ((i - j) == k):
  21.                     lists.append(self.collection[j: i])
  22.         return lists
  23.  
  24.     def max_values(self):
  25.         """
  26.        funzione che trova il valore max di valori in una lista
  27.        tale che il loro bitwise AND e XOR sia diverso da 0
  28.        :return: il valore max
  29.        """
  30.         #calcolo lo xor della collezione
  31.         xor_all = reduce(lambda i, j: i ^ j, self.collection)
  32.         #calcolo l'and della collezione
  33.         and_all = reduce(lambda i, j: i & j, self.collection)
  34.         count = len(self.collection)
  35.         while (xor_all == 0 or and_all == 0):
  36.             count -= 1
  37.             for x in self.subl_k(count):
  38.                 xor_all = reduce(lambda i, j: i ^ j, x)
  39.                 and_all = reduce(lambda i, j: i & j, x)
  40.                 if (xor_all != 0 and and_all != 0):
  41.                     break
  42.         return count
  43.  
  44.     def add_new_collection(self, new_collection):
  45.       # Aggiungi una nuova collezione di numeri alla collezione esistente
  46.       self.collection.extend(new_collection)
  47.       # Ritorna il valore masssimo delle operazione AND e XOR
  48.       return self.max_values()
  49.  
  50.  
  51.  
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement