Tags: coding
Rating:
All the coding challenges (`clockwork_guardian`, `dragon_flight`, `dragon_fury`, `enchanted_cipher`, `summoners_incantation`) in the given URL, I will post here the final code:
## Clockwork Guardian
```python
from collections import deque
import ast
def shortest_safe_path(grid):
    rows, cols = len(grid), len(grid[0])
    directions = [(0,1), (1,0), (0,-1), (-1,0)]  # Right, Down, Left, Up
    # Find the exit position
    exit_pos = None
    for r in range(rows):
        for c in range(cols):
            if grid[r][c] == 'E':
                exit_pos = (r, c)
                grid[r][c] = 0  # Treat 'E' as a walkable path
    if not exit_pos:
        return -1  # No exit found
    # BFS Initialization
    queue = deque([(0, 0, 0)])  # (row, col, steps)
    visited = set()
    visited.add((0, 0))
    while queue:
        r, c, steps = queue.popleft()
        # If we reach the exit, return the shortest path length
        if (r, c) == exit_pos:
            return steps
        # Explore neighbors
        for dr, dc in directions:
            nr, nc = r + dr, c + dc
            if 0 <= nr < rows and 0 <= nc < cols and (nr, nc) not in visited:
                if grid[nr][nc] == 0:  # Only move to open paths
                    queue.append((nr, nc, steps + 1))
                    visited.add((nr, nc))
return -1 # No path found
# Read input dynamically (input the grid as a list of lists)
grid_input = input("Enter the grid (as a list of lists): ")
# Convert the input string into a list of lists
grid = ast.literal_eval(grid_input)
# Run the function and print the shortest path
print(shortest_safe_path(grid))
```
## Dragon Flight
```python
# Read input lines into variables.
input1 = input()  # e.g., "5 3" (number of segments and operations)
input2 = input()  # e.g., "10 -2 3 -1 5" (initial wind effects)
# Parse inputs
N, Q = map(int, input1.split())  # Number of segments (N) and operations (Q)
arr = list(map(int, input2.split()))  # Initial wind effects
# Read Q lines of operations dynamically
queries = [input().strip() for _ in range(Q)]
class SegmentTree:
    class Node:
        def __init__(self, value):
            self.total = value
            self.best_prefix = value
            self.best_suffix = value
            self.best_sum = value
    def __init__(self, arr):
        self.n = len(arr)
        self.tree = [None] * (4 * self.n)
        self.build(arr, 0, 0, self.n - 1)
    def build(self, arr, node, start, end):
        if start == end:
            self.tree[node] = self.Node(arr[start])
        else:
            mid = (start + end) // 2
            left_child = 2 * node + 1
            right_child = 2 * node + 2
            self.build(arr, left_child, start, mid)
            self.build(arr, right_child, mid + 1, end)
            self.tree[node] = self.merge(self.tree[left_child], self.tree[right_child])
    def merge(self, left, right):
        merged = self.Node(0)
        merged.total = left.total + right.total
        merged.best_prefix = max(left.best_prefix, left.total + right.best_prefix)
        merged.best_suffix = max(right.best_suffix, right.total + left.best_suffix)
        merged.best_sum = max(left.best_suffix + right.best_prefix, left.best_sum, right.best_sum)
        return merged
    def update(self, index, value, node=0, start=0, end=None):
        if end is None:
            end = self.n - 1
        if start == end:
            self.tree[node] = self.Node(value)
        else:
            mid = (start + end) // 2
            left_child = 2 * node + 1
            right_child = 2 * node + 2
            if index <= mid:
                self.update(index, value, left_child, start, mid)
            else:
                self.update(index, value, right_child, mid + 1, end)
            self.tree[node] = self.merge(self.tree[left_child], self.tree[right_child])
    def query(self, l, r, node=0, start=0, end=None):
        if end is None:
            end = self.n - 1
        if r < start or l > end:
            return self.Node(float('-inf'))  # Nodo nulo para combinaciones
        if l <= start and end <= r:
            return self.tree[node]
        mid = (start + end) // 2
        left_child = 2 * node + 1
        right_child = 2 * node + 2
        left_result = self.query(l, r, left_child, start, mid)
        right_result = self.query(l, r, right_child, mid + 1, end)
        return self.merge(left_result, right_result)
# Construct segment tree
seg_tree = SegmentTree(arr)
# Process operations dynamically
outputs = []
for query in queries:
    parts = query.split()
    if parts[0] == 'U':
        i, x = int(parts[1]) - 1, int(parts[2])
        seg_tree.update(i, x)
    elif parts[0] == 'Q':
        l, r = int(parts[1]) - 1, int(parts[2]) - 1
        result = seg_tree.query(l, r)
        outputs.append(str(result.best_sum))
# Print all query results
print("\n".join(outputs))
```
## Dragon Fury
```python
from itertools import product
from typing import List
# Input the text as a single string
input_list = input()  # Example: "shock;979;23"
input_int = input()
# Write your solution below and make sure to encode the word correctly
damage_values = eval(input_list)
damage = int(input_int)
def quest(xss, x):
    for combination in product(*xss):  # generate all possible combinations
        if sum(combination) == x:
            return list(combination)  # return the first valid combination
print(quest(damage_values, damage))
```
## Enchanted Cipher
```python
import math
# Input the text as a single string
input_text = input()
input_shift_groups = input()
input_shift_values = input()
# Write your solution below and make sure to encode the word correctly
shift_values = eval(input_shift_values)
def quest(text, values):
    spaces = 0
    result = ""
    for i in range(len(input_text)):
        if input_text[i] == ' ':  # ignore whitespaces
            spaces += 1
            result += ' '
            continue
        shift_index = math.floor((i-spaces)/5)  # calculate shift value index
        newchar = chr((ord(input_text[i]) - shift_values[shift_index] - ord('a')) % 26 + ord('a'))  # decode character
        result += newchar
    return result
print(quest(input_text, shift_values))
```
## Summoners Incantation
```python
# Input the text as a single string
input_text = input()  # Example: "shock;979;23"
# Write your solution below and make sure to encode the word correctly
def quest(input_text):
    input_list = eval(input_text)
    if len(input_list) == 0:
        return 0
    if len(input_list) == 1:
        return nums[0]
    include = 0  # max sum including the current element
    exclude = 0  # max sum excluding the current element
    for token in input_list:
        new_include = exclude + token
        exclude = max(include, exclude)
        include = new_include
return max(include, exclude)
print(quest(input_text))
```