class InMemoryDatabase: def _init_(self): self.database = {} def set(self, timestamp, key, field, value): if key not in self.database: self.database[key] = {} self.database[key][field] = value def compare_and_set(self, timestamp, key, field, expected_value, new_value): if key in self.database and field in self.database[key]: current_value = self.database[key][field] if current_value == expected_value: self.database[key][field] = new_value return "true" return "false" def compare_and_delete(self, timestamp, key, field, expected_value): if key in self.database and field in self.database[key]: current_value = self.database[key][field] if current_value == expected_value: del self.database[key][field] return "true" return "false" def get(self, timestamp, key, field): if key in self.database and field in self.database[key]: return self.database[key][field] return None def scan(self, timestamp, key): if key in self.database: fields = sorted(self.database[key].keys()) return ", ".join([f"{field}({self.database[key][field]})" for field in fields]) return "" def scan_by_prefix(self, timestamp, key, prefix): if key in self.database: fields = sorted(filter(lambda f: f.startswith(prefix), self.database[key].keys())) return ", ".join([f"{field}({self.database[key][field]})" for field in fields]) return "" # Example usage: db = InMemoryDatabase() queries = [ ["SET", "0", "A", "BC", "4"], ["SET", "10", "A", "BD", "5"], ["SET", "20", "A", "C", "6"], ["SCAN_BY_PREFIX", "30", "A", "B"], ["SCAN", "40", "A"], ["SCAN_BY_PREFIX", "50", "B", "B"] ] for query in queries: operation = query[0] if operation == "SET": db.set(*query[1:]) elif operation == "COMPARE_AND_SET": print(db.compare_and_set(*query[1:])) elif operation == "COMPARE_AND_DELETE": print(db.compare_and_delete(*query[1:])) elif operation == "GET": print(db.get(*query[1:])) elif operation == "SCAN": print(db.scan(*query[1:])) elif operation == "SCAN_BY_PREFIX": print(db.scan_by_prefix(*query[1:]))