Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from functools import reduce
- class MaxValues:
- def __init__(self):
- # Inizializziamo una lista vuota per memorizzare la collezione di numeri interi positivi
- self.collection = []
- def add_collection(self, numbers):
- # Aggiungiamo la collezione di numeri alla nostra lista
- self.collection.extend(numbers)
- def subl_k(self, k):
- """
- metodo che calcola tutte le sottolsite di lunghezza k di una lista
- :param k:lunghezza delle sottoliste
- :return: sottoliste
- """
- lists = []
- for i in range(len(self.collection) + 1):
- for j in range(i):
- if ((i - j) == k):
- lists.append(self.collection[j: i])
- return lists
- def max_values(self):
- """
- funzione che trova il valore max di valori in una lista
- tale che il loro bitwise AND e XOR sia diverso da 0
- :return: il valore max
- """
- #calcolo lo xor della collezione
- xor_all = reduce(lambda i, j: i ^ j, self.collection)
- #calcolo l'and della collezione
- and_all = reduce(lambda i, j: i & j, self.collection)
- count = len(self.collection)
- while (xor_all == 0 or and_all == 0):
- count -= 1
- for x in self.subl_k(count):
- xor_all = reduce(lambda i, j: i ^ j, x)
- and_all = reduce(lambda i, j: i & j, x)
- if (xor_all != 0 and and_all != 0):
- break
- return count
- def add_new_collection(self, new_collection):
- # Aggiungi una nuova collezione di numeri alla collezione esistente
- self.collection.extend(new_collection)
- # Ritorna il valore masssimo delle operazione AND e XOR
- return self.max_values()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement