File size: 2,627 Bytes
ae46e18
 
 
8f39283
 
 
 
 
 
 
 
ae46e18
8f39283
 
 
 
 
ae46e18
8f39283
 
ae46e18
8f39283
 
 
 
 
 
 
 
 
 
 
 
ae46e18
8f39283
ae46e18
 
8f39283
 
 
ae46e18
8f39283
 
ae46e18
8f39283
 
 
ae46e18
8f39283
 
 
 
 
 
 
 
 
 
 
 
 
ae46e18
 
8f39283
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import streamlit as st
import numpy as np

# Helper functions for number theory-based emoji placement
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

def fib_sequence(n):
    fib_seq = [0, 1]
    while fib_seq[-1] + fib_seq[-2] <= n:
        fib_seq.append(fib_seq[-1] + fib_seq[-2])
    return fib_seq[2:]  # Exclude first two numbers for this use case

# Expanded set of emojis for landscape elements
emoji_set = ["🌲", "🌳", "πŸƒ", "🌲", "🌿", "πŸ„", "🏠", "🏰", "πŸ—Ό", "πŸ›€οΈ", "🌊", "🏞️", "🌁", "🌾", "🏜️", "🏝️", "πŸ›–", "πŸ›€οΈ", "πŸ›£οΈ", "πŸ•οΈ", "πŸŒ‹", "⛰️", "🧱", "🌡", "🍁", "🌼", "🌻", "🌺", "🏑", "πŸ—ΊοΈ"]

# Locations and emoji grid maps initialization
def initialize_locations(size):
    """Initialize different locations with unique emoji grids."""
    # Placeholder for location initialization logic
    # Randomly fill grids with emojis from emoji_set for each location
    np.random.seed(42)  # Optional: for reproducible emoji distributions
    locations = {
        'forest edge': np.random.choice(emoji_set, (size, size)),
        'deep forest': np.random.choice(emoji_set, (size, size)),
        # Additional locations can be added here
    }
    return locations

# Directions for movement
directions = {"North": (-1, 0), "South": (1, 0), "West": (0, -1), "East": (0, 1)}

# Movement and emoji map update functions
def move_emojis(locations, current_location, direction):
    """Shift emojis in the specified direction with wrap-around for the current location."""
    dx, dy = directions[direction]
    locations[current_location] = np.roll(locations[current_location], shift=(dx, dy), axis=(0, 1))
    return locations

# Streamlit application setup
def main():
    st.title("Explore the Emoji World")

    size = st.sidebar.slider("Grid Size", 5, 40, 10)
    if 'locations' not in st.session_state:
        st.session_state.locations = initialize_locations(size)
    
    current_location = st.sidebar.selectbox("Select location", options=list(st.session_state.locations.keys()))
    emoji_map = st.session_state.locations[current_location]
    map_str = "\n".join(["".join(row) for row in emoji_map])
    st.text(map_str)

    direction = st.sidebar.selectbox("Move direction", ["None", "North", "South", "East", "West"])
    if direction != "None":
        st.session_state.locations = move_emojis(st.session_state.locations, current_location, direction)
        st.experimental_rerun()

if __name__ == "__main__":
    main()