Загрузка данных
import sys
import time
import random
import string
import hashlib
class MessageValidator:
def __init__(self):
self.message = "Hello World!"
self.validators = []
self._register_validators()
def _register_validators(self):
self.validators.append(self._check_not_empty)
self.validators.append(self._check_type)
self.validators.append(self._check_length)
self.validators.append(self._check_ascii)
self.validators.append(self._check_no_newlines)
self.validators.append(self._check_capitalization)
def _check_not_empty(self, msg):
return msg is not None and len(msg) > 0
def _check_type(self, msg):
return isinstance(msg, str)
def _check_length(self, msg):
return 5 <= len(msg) <= 100
def _check_ascii(self, msg):
return all(ord(c) < 128 for c in msg)
def _check_no_newlines(self, msg):
return "\n" not in msg and "\r" not in msg
def _check_capitalization(self, msg):
return msg[0].isupper()
def validate(self):
for validator in self.validators:
if not validator(self.message):
raise ValueError("Validation failed: " + validator.__name__)
return True
class CharacterAnalyzer:
def __init__(self, text):
self.text = text
def count_letters(self):
return sum(1 for c in self.text if c.isalpha())
def count_uppercase(self):
return sum(1 for c in self.text if c.isupper())
def count_lowercase(self):
return sum(1 for c in self.text if c.islower())
def count_spaces(self):
return sum(1 for c in self.text if c.isspace())
def count_punctuation(self):
return sum(1 for c in self.text if c in string.punctuation)
def count_vowels(self):
vowels = "aeiouAEIOU"
return sum(1 for c in self.text if c in vowels)
def count_consonants(self):
vowels = "aeiouAEIOU"
return sum(1 for c in self.text if c.isalpha() and c not in vowels)
def get_frequency(self):
freq = {}
for c in self.text:
freq[c] = freq.get(c, 0) + 1
return freq
def get_unique_chars(self):
return set(self.text)
def get_char_positions(self, char):
return [i for i, c in enumerate(self.text) if c == char]
def summary(self):
return {
"letters": self.count_letters(),
"uppercase": self.count_uppercase(),
"lowercase": self.count_lowercase(),
"spaces": self.count_spaces(),
"vowels": self.count_vowels(),
"consonants": self.count_consonants(),
"unique": len(self.get_unique_chars()),
}
class ChecksumCalculator:
def __init__(self, data):
self.data = data
def md5(self):
return hashlib.md5(self.data.encode()).hexdigest()
def sha1(self):
return hashlib.sha1(self.data.encode()).hexdigest()
def sha256(self):
return hashlib.sha256(self.data.encode()).hexdigest()
def crc32_simulated(self):
checksum = 0
for c in self.data:
checksum = (checksum * 31 + ord(c)) % (2**32)
return checksum
def simple_sum(self):
return sum(ord(c) for c in self.data)
def xor_checksum(self):
result = 0
for c in self.data:
result ^= ord(c)
return result
class Encoder:
def __init__(self):
self.encoding_map = {}
self._build_map()
def _build_map(self):
for i in range(128):
self.encoding_map[i] = i
def encode_binary(self, text):
return " ".join(format(ord(c), "08b") for c in text)
def encode_hex(self, text):
return " ".join(format(ord(c), "02x") for c in text)
def encode_octal(self, text):
return " ".join(format(ord(c), "03o") for c in text)
def encode_base64_simulated(self, text):
alphabet = string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/"
result = ""
data = [ord(c) for c in text]
while len(data) % 3 != 0:
data.append(0)
for i in range(0, len(data), 3):
n = (data[i] << 16) | (data[i+1] << 8) | data[i+2]
result += alphabet[(n >> 18) & 63]
result += alphabet[(n >> 12) & 63]
result += alphabet[(n >> 6) & 63]
result += alphabet[n & 63]
return result
def encode_rot13(self, text):
result = ""
for c in text:
if c.isalpha():
base = ord('A') if c.isupper() else ord('a')
result += chr((ord(c) - base + 13) % 26 + base)
else:
result += c
return result
class Decoder:
def __init__(self):
pass
def decode_binary(self, text):
result = ""
for chunk in text.split():
result += chr(int(chunk, 2))
return result
def decode_hex(self, text):
result = ""
for chunk in text.split():
result += chr(int(chunk, 16))
return result
def decode_octal(self, text):
result = ""
for chunk in text.split():
result += chr(int(chunk, 8))
return result
def decode_rot13(self, text):
return Encoder().encode_rot13(text)
class StringReverser:
def __init__(self, text):
self.text = text
def reverse(self):
return self.text[::-1]
def reverse_words(self):
return " ".join(self.text.split()[::-1])
def reverse_each_word(self):
return " ".join(w[::-1] for w in self.text.split())
def reverse_manually(self):
result = ""
for i in range(len(self.text) - 1, -1, -1):
result += self.text[i]
return result
def reverse_recursive(self, s=None):
if s is None:
s = self.text
if len(s) <= 1:
return s
return self.reverse_recursive(s[1:]) + s[0]
class PalindromeChecker:
def __init__(self, text):
self.text = text
def is_palindrome(self):
cleaned = self._clean(self.text)
return cleaned == cleaned[::-1]
def _clean(self, text):
return "".join(c.lower() for c in text if c.isalnum())
def is_palindrome_case_sensitive(self):
cleaned = "".join(c for c in self.text if c.isalnum())
return cleaned == cleaned[::-1]
def longest_palindrome_substring(self):
n = len(self.text)
if n == 0:
return ""
longest = ""
for i in range(n):
for j in range(i, n):
sub = self.text[i:j+1]
if sub == sub[::-1] and len(sub) > len(longest):
longest = sub
return longest
class WordCounter:
def __init__(self, text):
self.text = text
def count_words(self):
return len(self.text.split())
def count_chars(self, include_spaces=True):
if include_spaces:
return len(self.text)
return len(self.text.replace(" ", ""))
def count_lines(self):
return len(self.text.splitlines()) or 1
def average_word_length(self):
words = self.text.split()
if not words:
return 0.0
return sum(len(w) for w in words) / len(words)
def longest_word(self):
words = self.text.split()
if not words:
return ""
return max(words, key=len)
def shortest_word(self):
words = self.text.split()
if not words:
return ""
return min(words, key=len)
def word_frequency(self):
freq = {}
for w in self.text.split():
freq[w] = freq.get(w, 0) + 1
return freq
class Sorter:
@staticmethod
def bubble_sort(arr):
a = arr[:]
n = len(a)
for i in range(n):
for j in range(0, n - i - 1):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
return a
@staticmethod
def selection_sort(arr):
a = arr[:]
n = len(a)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if a[j] < a[min_idx]:
min_idx = j
a[i], a[min_idx] = a[min_idx], a[i]
return a
@staticmethod
def insertion_sort(arr):
a = arr[:]
for i in range(1, len(a)):
key = a[i]
j = i - 1
while j >= 0 and a[j] > key:
a[j+1] = a[j]
j -= 1
a[j+1] = key
return a
@staticmethod
def merge_sort(arr):
if len(arr) <= 1:
return arr[:]
mid = len(arr) // 2
left = Sorter.merge_sort(arr[:mid])
right = Sorter.merge_sort(arr[mid:])
return Sorter._merge(left, right)
@staticmethod
def _merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
@staticmethod
def quick_sort(arr):
if len(arr) <= 1:
return arr[:]
pivot = arr[len(arr)//2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return Sorter.quick_sort(left) + middle + Sorter.quick_sort(right)
class Searcher:
@staticmethod
def linear_search(arr, target):
for i, x in enumerate(arr):
if x == target:
return i
return -1
@staticmethod
def binary_search(arr, target):
lo, hi = 0, len(arr) - 1
while lo <= hi:
mid = (lo + hi) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
lo = mid + 1
else:
hi = mid - 1
return -1
@staticmethod
def find_all(arr, target):
return [i for i, x in enumerate(arr) if x == target]
class MathUtils:
@staticmethod
def gcd(a, b):
while b:
a, b = b, a % b
return a
@staticmethod
def lcm(a, b):
return abs(a * b) // MathUtils.gcd(a, b) if a and b else 0
@staticmethod
def factorial(n):
if n < 0:
raise ValueError("negative")
result = 1
for i in range(2, n + 1):
result *= i
return result
@staticmethod
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
@staticmethod
def is_prime(n):
if n < 2:
return False
if n < 4:
return True
if n % 2 == 0:
return False
i = 3
while i * i <= n:
if n % i == 0:
return False
i += 2
return True
@staticmethod
def primes_up_to(n):
return [x for x in range(2, n + 1) if MathUtils.is_prime(x)]
@staticmethod
def power(base, exp):
result = 1
for _ in range(exp):
result *= base
return result
@staticmethod
def sqrt_newton(n):
if n < 0:
raise ValueError("negative")
if n == 0:
return 0.0
x = n / 2.0
for _ in range(100):
x = (x + n / x) / 2.0
return x
class StatisticsCalculator:
def __init__(self, data):
self.data = data
def mean(self):
if not self.data:
return 0
return sum(self.data) / len(self.data)
def median(self):
if not self.data:
return 0
s = sorted(self.data)
n = len(s)
if n % 2 == 1:
return s[n//2]
return (s[n//2 - 1] + s[n//2]) / 2
def mode(self):
if not self.data:
return None
freq = {}
for x in self.data:
freq[x] = freq.get(x, 0) + 1
max_freq = max(freq.values())
return [k for k, v in freq.items() if v == max_freq]
def variance(self):
if len(self.data) < 2:
return 0
m = self.mean()
return sum((x - m) ** 2 for x in self.data) / len(self.data)
def std_dev(self):
return self.variance() ** 0.5
def minimum(self):
return min(self.data) if self.data else None
def maximum(self):
return max(self.data) if self.data else None
def range_value(self):
if not self.data:
return None
return max(self.data) - min(self.data)
class NumberConverter:
@staticmethod
def to_binary(n):
if n == 0:
return "0"
negative = n < 0
n = abs(n)
result = ""
while n > 0:
result = str(n % 2) + result
n //= 2
return "-" + result if negative else result
@staticmethod
def to_hex(n):
digits = "0123456789abcdef"
if n == 0:
return "0"
negative = n < 0
n = abs(n)
result = ""
while n > 0:
result = digits[n % 16] + result
n //= 16
return "-" + result if negative else result
@staticmethod
def to_octal(n):
if n == 0:
return "0"
negative = n < 0
n = abs(n)
result = ""
while n > 0:
result = str(n % 8) + result
n //= 8
return "-" + result if negative else result
@staticmethod
def from_binary(s):
result = 0
for c in s:
result = result * 2 + int(c)
return result
@staticmethod
def from_hex(s):
digits = "0123456789abcdef"
result = 0
for c in s.lower():
result = result * 16 + digits.index(c)
return result
class CaesarCipher:
def __init__(self, shift):
self.shift = shift % 26
def encrypt(self, text):
result = ""
for c in text:
if c.isupper():
result += chr((ord(c) - ord('A') + self.shift) % 26 + ord('A'))
elif c.islower():
result += chr((ord(c) - ord('a') + self.shift) % 26 + ord('a'))
else:
result += c
return result
def decrypt(self, text):
return CaesarCipher(26 - self.shift).encrypt(text)
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if self.is_empty():
raise IndexError("empty stack")
return self.items.pop()
def peek(self):
if self.is_empty():
raise IndexError("empty stack")
return self.items[-1]
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if self.is_empty():
raise IndexError("empty queue")
return self.items.pop(0)
def front(self):
if self.is_empty():
raise IndexError("empty queue")
return self.items[0]
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
class LinkedList:
class Node:
def __init__(self, value):
self.value = value
self.next = None
def __init__(self):
self.head = None
self.length = 0
def append(self, value):
node = LinkedList.Node(value)
if self.head is None:
self.head = node
else:
current = self.head
while current.next:
current = current.next
current.next = node
self.length += 1
def prepend(self, value):
node = LinkedList.Node(value)
node.next = self.head
self.head = node
self.length += 1
def to_list(self):
result = []
current = self.head
while current:
result.append(current.value)
current = current.next
return result
class BinaryTree:
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = BinaryTree.Node(value)
else:
self._insert(self.root, value)
def _insert(self, node, value):
if value < node.value:
if node.left is None:
node.left = BinaryTree.Node(value)
else:
self._insert(node.left, value)
else:
if node.right is None:
node.right = BinaryTree.Node(value)
else:
self._insert(node.right, value)
def inorder(self):
result = []
self._inorder(self.root, result)
return result
def _inorder(self, node, result):
if node:
self._inorder(node.left, result)
result.append(node.value)
self._inorder(node.right, result)
def height(self):
return self._height(self.root)
def _height(self, node):
if node is None:
return 0
return 1 + max(self._height(node.left), self._height(node.right))
class Matrix:
def __init__(self, rows, cols, fill=0):
self.rows = rows
self.cols = cols
self.data = [[fill] * cols for _ in range(rows)]
def set(self, r, c, value):
self.data[r][c] = value
def get(self, r, c):
return self.data[r][c]
def add(self, other):
result = Matrix(self.rows, self.cols)
for i in range(self.rows):
for j in range(self.cols):
result.data[i][j] = self.data[i][j] + other.data[i][j]
return result
def multiply(self, other):
result = Matrix(self.rows, other.cols)
for i in range(self.rows):
for j in range(other.cols):
total = 0
for k in range(self.cols):
total += self.data[i][k] * other.data[k][j]
result.data[i][j] = total
return result
def transpose(self):
result = Matrix(self.cols, self.rows)
for i in range(self.rows):
for j in range(self.cols):
result.data[j][i] = self.data[i][j]
return result
class Graph:
def __init__(self):
self.adjacency = {}
def add_vertex(self, v):
if v not in self.adjacency:
self.adjacency[v] = []
def add_edge(self, u, v):
self.add_vertex(u)
self.add_vertex(v)
self.adjacency[u].append(v)
self.adjacency[v].append(u)
def bfs(self, start):
visited = set()
order = []
queue = [start]
visited.add(start)
while queue:
node = queue.pop(0)
order.append(node)
for neighbor in self.adjacency.get(node, []):
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
return order
def dfs(self, start):
visited = set()
order = []
self._dfs(start, visited, order)
return order
def _dfs(self, node, visited, order):
visited.add(node)
order.append(node)
for neighbor in self.adjacency.get(node, []):
if neighbor not in visited:
self._dfs(neighbor, visited, order)
class Pipeline:
def __init__(self):
self.stages = []
def add_stage(self, func):
self.stages.append(func)
return self
def run(self, value):
for stage in self.stages:
value = stage(value)
return value
class OutputFormatter:
def __init__(self):
self.prefix = ""
self.suffix = ""
self.uppercase = False
self.lowercase = False
def with_prefix(self, p):
self.prefix = p
return self
def with_suffix(self, s):
self.suffix = s
return self
def upper(self):
self.uppercase = True
return self
def lower(self):
self.lowercase = True
return self
def format(self, text):
result = self.prefix + text + self.suffix
if self.uppercase:
result = result.upper()
if self.lowercase:
result = result.lower()
return result
class Timer:
def __init__(self):
self.start_time = None
self.end_time = None
def start(self):
self.start_time = time.time()
def stop(self):
self.end_time = time.time()
def elapsed(self):
if self.start_time is None or self.end_time is None:
return 0.0
return self.end_time - self.start_time
class RandomGenerator:
def __init__(self, seed=None):
self.rng = random.Random(seed)
def random_int(self, lo, hi):
return self.rng.randint(lo, hi)
def random_float(self):
return self.rng.random()
def random_choice(self, seq):
return self.rng.choice(seq)
def shuffle(self, seq):
result = list(seq)
self.rng.shuffle(result)
return result
def random_string(self, length):
letters = string.ascii_letters
return "".join(self.rng.choice(letters) for _ in range(length))
class ConfigLoader:
def __init__(self):
self.config = {}
def set(self, key, value):
self.config[key] = value
return self
def get(self, key, default=None):
return self.config.get(key, default)
def has(self, key):
return key in self.config
def remove(self, key):
if key in self.config:
del self.config[key]
class EventBus:
def __init__(self):
self.handlers = {}
def subscribe(self, event, handler):
if event not in self.handlers:
self.handlers[event] = []
self.handlers[event].append(handler)
def unsubscribe(self, event, handler):
if event in self.handlers:
self.handlers[event].remove(handler)
def publish(self, event, data=None):
if event in self.handlers:
for handler in self.handlers[event]:
handler(data)
class Cache:
def __init__(self, capacity=100):
self.capacity = capacity
self.store = {}
def get(self, key):
return self.store.get(key)
def put(self, key, value):
if len(self.store) >= self.capacity and key not in self.store:
first_key = next(iter(self.store))
del self.store[first_key]
self.store[key] = value
def contains(self, key):
return key in self.store
def clear(self):
self.store.clear()
class Ledger:
def __init__(self):
self.entries = []
def record(self, entry):
self.entries.append(entry)
def total(self):
return sum(self.entries)
def average(self):
if not self.entries:
return 0
return self.total() / len(self.entries)
def count(self):
return len(self.entries)
class StateMachine:
def __init__(self, states, initial):
self.states = states
self.current = initial
self.transitions = {}
def add_transition(self, from_state, to_state, trigger):
if from_state not in self.transitions:
self.transitions[from_state] = {}
self.transitions[from_state][trigger] = to_state
def trigger(self, event):
if self.current in self.transitions and event in self.transitions[self.current]:
self.current = self.transitions[self.current][event]
return True
return False
class Serializer:
@staticmethod
def to_key_value(text):
result = {}
parts = text.split()
for i, part in enumerate(parts):
result["part_" + str(i)] = part
return result
@staticmethod
def to_csv_row(values):
return ",".join(str(v) for v in values)
@staticmethod
def to_pipe_row(values):
return "|".join(str(v) for v in values)
def compose(*functions):
def composed(x):
for f in functions:
x = f(x)
return x
return composed
def identity(x):
return x
def constant(value):
def inner(_):
return value
return inner
def add(a, b):
return a + b
def multiply(a, b):
return a * b
def negate(x):
return -x
def square(x):
return x * x
def cube(x):
return x * x * x
def increment(x):
return x + 1
def decrement(x):
return x - 1
def double(x):
return x * 2
def halve(x):
return x / 2
def build_message_pipeline():
pipeline = Pipeline()
pipeline.add_stage(lambda s: s)
pipeline.add_stage(lambda s: s)
pipeline.add_stage(lambda s: s)
return pipeline
def build_analysis_report(text):
analyzer = CharacterAnalyzer(text)
counter = WordCounter(text)
checksum = ChecksumCalculator(text)
return {
"chars": analyzer.summary(),
"words": counter.count_words(),
"md5": checksum.md5(),
"sha256": checksum.sha256(),
"crc": checksum.crc32_simulated(),
"xor": checksum.xor_checksum(),
}
def demonstrate_sorting():
data = [5, 3, 8, 1, 9, 2, 7, 4, 6]
results = {
"bubble": Sorter.bubble_sort(data),
"selection": Sorter.selection_sort(data),
"insertion": Sorter.insertion_sort(data),
"merge": Sorter.merge_sort(data),
"quick": Sorter.quick_sort(data),
}
return results
def demonstrate_search():
data = list(range(20))
return {
"linear": Searcher.linear_search(data, 13),
"binary": Searcher.binary_search(data, 13),
"all_5": Searcher.find_all([1, 5, 2, 5, 3, 5], 5),
}
def demonstrate_math():
return {
"gcd": MathUtils.gcd(48, 18),
"lcm": MathUtils.lcm(4, 6),
"factorial": MathUtils.factorial(6),
"fibonacci": MathUtils.fibonacci(10),
"primes": MathUtils.primes_up_to(30),
"sqrt": MathUtils.sqrt_newton(144),
"power": MathUtils.power(2, 10),
}
def demonstrate_statistics():
stats = StatisticsCalculator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
return {
"mean": stats.mean(),
"median": stats.median(),
"mode": stats.mode(),
"variance": stats.variance(),
"std": stats.std_dev(),
"min": stats.minimum(),
"max": stats.maximum(),
"range": stats.range_value(),
}
def demonstrate_conversion():
return {
"bin": NumberConverter.to_binary(42),
"hex": NumberConverter.to_hex(255),
"oct": NumberConverter.to_octal(64),
"from_bin": NumberConverter.from_binary("101010"),
"from_hex": NumberConverter.from_hex("ff"),
}
def demonstrate_cipher():
cipher = CaesarCipher(3)
encrypted = cipher.encrypt("Hello World!")
decrypted = cipher.decrypt(encrypted)
return {
"encrypted": encrypted,
"decrypted": decrypted,
}
def demonstrate_structures():
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.prepend(0)
tree = BinaryTree()
for v in [5, 3, 7, 1, 4, 6, 8]:
tree.insert(v)
graph = Graph()
graph.add_edge("a", "b")
graph.add_edge("b", "c")
graph.add_edge("c", "d")
return {
"stack_pop": stack.pop(),
"queue_dequeue": queue.dequeue(),
"linked_list": ll.to_list(),
"tree_inorder": tree.inorder(),
"tree_height": tree.height(),
"bfs": graph.bfs("a"),
"dfs": graph.dfs("a"),
}
def demonstrate_matrix():
a = Matrix(2, 2)
a.set(0, 0, 1); a.set(0, 1, 2)
a.set(1, 0, 3); a.set(1, 1, 4)
b = Matrix(2, 2)
b.set(0, 0, 5); b.set(0, 1, 6)
b.set(1, 0, 7); b.set(1, 1, 8)
sum_m = a.add(b)
prod_m = a.multiply(b)
trans_m = a.transpose()
return {
"sum": sum_m.data,
"prod": prod_m.data,
"transpose": trans_m.data,
}
def demonstrate_encoder():
enc = Encoder()
text = "Hi"
return {
"binary": enc.encode_binary(text),
"hex": enc.encode_hex(text),
"octal": enc.encode_octal(text),
"base64": enc.encode_base64_simulated(text),
"rot13": enc.encode_rot13(text),
"decoded": Decoder().decode_binary(enc.encode_binary(text)),
}
def demonstrate_reverse():
r = StringReverser("Hello World")
return {
"reverse": r.reverse(),
"words": r.reverse_words(),
"each": r.reverse_each_word(),
"manual": r.reverse_manually(),
"recursive": r.reverse_recursive(),
}
def demonstrate_palindrome():
p = PalindromeChecker("A man a plan a canal Panama")
q = PalindromeChecker("hello")
return {
"is_pal": p.is_palindrome(),
"is_pal_q": q.is_palindrome(),
"longest": p.longest_palindrome_substring(),
}
def demonstrate_word_counter():
wc = WordCounter("the quick brown fox jumps over the lazy dog")
return {
"words": wc.count_words(),
"chars": wc.count_chars(),
"avg_len": wc.average_word_length(),
"longest": wc.longest_word(),
"shortest": wc.shortest_word(),
"freq": wc.word_frequency(),
}
def demonstrate_pipeline():
p = build_message_pipeline()
return p.run("Hello World!")
def demonstrate_formatter():
f = OutputFormatter()
f.with_prefix("[")
f.with_suffix("]")
return f.format("Hello World!")
def demonstrate_cache():
c = Cache(2)
c.put("a", 1)
c.put("b", 2)
c.put("c", 3)
return {
"a": c.get("a"),
"b": c.get("b"),
"c": c.get("c"),
}
def demonstrate_state_machine():
sm = StateMachine(["idle", "running", "done"], "idle")
sm.add_transition("idle", "running", "start")
sm.add_transition("running", "done", "finish")
sm.trigger("start")
first = sm.current
sm.trigger("finish")
return {
"after_start": first,
"after_finish": sm.current,
}
def demonstrate_event_bus():
bus = EventBus()
log = []
bus.subscribe("hello", lambda d: log.append(d))
bus.publish("hello", "Hello World!")
return log
def demonstrate_ledger():
led = Ledger()
for i in range(1, 11):
led.record(i)
return {
"total": led.total(),
"average": led.average(),
"count": led.count(),
}
def demonstrate_serializer():
return {
"kv": Serializer.to_key_value("Hello World"),
"csv": Serializer.to_csv_row([1, 2, 3]),
"pipe": Serializer.to_pipe_row([1, 2, 3]),
}
def demonstrate_functional():
f = compose(increment, double, square)
g = compose(negate, increment)
return {
"composed": f(3),
"negated": g(10),
"identity": identity("Hello"),
"constant": constant(42)("anything"),
}
def demonstrate_validation():
v = MessageValidator()
v.validate()
return v.message
def demonstrate_checksum():
c = ChecksumCalculator("Hello World!")
return {
"md5": c.md5(),
"sha1": c.sha1(),
"sha256": c.sha256(),
"crc": c.crc32_simulated(),
"sum": c.simple_sum(),
"xor": c.xor_checksum(),
}
def run_diagnostics():
results = {}
results["sort"] = demonstrate_sorting()
results["search"] = demonstrate_search()
results["math"] = demonstrate_math()
results["stats"] = demonstrate_statistics()
results["conv"] = demonstrate_conversion()
results["cipher"] = demonstrate_cipher()
results["struct"] = demonstrate_structures()
results["matrix"] = demonstrate_matrix()
results["enc"] = demonstrate_encoder()
results["rev"] = demonstrate_reverse()
results["pal"] = demonstrate_palindrome()
results["wc"] = demonstrate_word_counter()
results["pipe"] = demonstrate_pipeline()
results["fmt"] = demonstrate_formatter()
results["cache"] = demonstrate_cache()
results["sm"] = demonstrate_state_machine()
results["bus"] = demonstrate_event_bus()
results["ledger"] = demonstrate_ledger()
results["ser"] = demonstrate_serializer()
results["func"] = demonstrate_functional()
results["valid"] = demonstrate_validation()
results["check"] = demonstrate_checksum()
return results
def final_output():
message = "Hello World!"
validator = MessageValidator()
validator.message = message
validator.validate()
analyzer = CharacterAnalyzer(message)
stats = analyzer.summary()
counter = WordCounter(message)
words = counter.count_words()
checksum = ChecksumCalculator(message)
digest = checksum.md5()
pipeline = Pipeline()
pipeline.add_stage(identity)
pipeline.add_stage(identity)
pipeline.add_stage(identity)
result = pipeline.run(message)
formatter = OutputFormatter()
formatted = formatter.format(result)
timer = Timer()
timer.start()
timer.stop()
elapsed = timer.elapsed()
return formatted
def main():
diagnostics = run_diagnostics()
output = final_output()
print(output)
if __name__ == "__main__":
main()