Skip to content

SLICE FOR ROTATING AND SHIFTING

Python
#!/usr/bin/env python3
"""
SLICE FOR ROTATING AND SHIFTING
Circular rotations and element shifting
"""

print("=== Rotate List Left ===")
data = [1, 2, 3, 4, 5, 6, 7, 8]
rotate_by = 3

# Rotate left: move first n elements to end
rotated_left = data[rotate_by:] + data[:rotate_by]
print(f"Original:      {data}")
print(f"Rotate left 3: {rotated_left}")

print("\n=== Rotate List Right ===")
# Rotate right: move last n elements to beginning
rotated_right = data[-rotate_by:] + data[:-rotate_by]
print(f"Original:       {data}")
print(f"Rotate right 3: {rotated_right}")

print("\n=== Circular Queue Simulation ===")
queue = ['A', 'B', 'C', 'D', 'E']
print(f"Initial queue: {queue}")

# Dequeue (remove first) and enqueue (add to end)
removed = queue[0]
queue = queue[1:] + ['F']
print(f"After dequeue '{removed}' and enqueue 'F': {queue}")

print("\n=== Shift Elements ===")
numbers = [10, 20, 30, 40, 50]

# Shift right (insert 0 at start, remove last)
shift_right = [0] + numbers[:-1]
print(f"Original:     {numbers}")
print(f"Shift right:  {shift_right}")

# Shift left (remove first, append 0)
shift_left = numbers[1:] + [0]
print(f"Shift left:   {shift_left}")

print("\n=== Caesar Cipher Rotation ===")
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
shift = 3

# Rotate alphabet by 3 (Caesar cipher key)
rotated_alphabet = alphabet[shift:] + alphabet[:shift]
print(f"Original: {alphabet}")
print(f"Shifted:  {rotated_alphabet}")

# Encrypt a message
message = "HELLO"
encrypted = ''.join(rotated_alphabet[alphabet.index(c)] for c in message)
print(f"\nMessage:   {message}")
print(f"Encrypted: {encrypted}")

print("\n=== Rotate for Animation ===")
frames = ['[    ]', '[=   ]', '[==  ]', '[=== ]', '[====]']

for i in range(8):
    # Rotate animation frames
    frame_index = i % len(frames)
    rotated = frames[frame_index:] + frames[:frame_index]
    print(f"Frame {i}: {rotated[0]}")