Spaces:
Sleeping
Sleeping
File size: 3,056 Bytes
c5f142e 8770c71 c5f142e c75c67c 14ee4f9 c5f142e 66f6715 c5f142e c75c67c b5c9769 14ee4f9 c75c67c 605e60a b5c9769 c75c67c c5f142e c75c67c 517dd48 14ee4f9 517dd48 c5f142e 2a4abe5 649728a 66f6715 c5f142e 649728a c5f142e 8770c71 66f6715 8770c71 173ebdd 8770c71 c0a104f |
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
# Function to modify the generated number according to the rules
def modify_number(number):
modified_number = ''
for digit in number:
if digit not in '01': # Change any digit that is not 0 or 1 to 1
modified_number += '1'
else:
modified_number += digit
return modified_number
# Function to create the grid based on the boolean string
def create_grid(boolean_string):
if len(boolean_string) != 16:
st.error("The generated string is not 16 digits long.")
return None
# Convert string to a list of integers
grid = np.array([int(bit) for bit in boolean_string]).reshape(4, 4)
# Create a colormap for the grid
cmap = ListedColormap(['white', 'black'])
# Plot the grid
fig, ax = plt.subplots(figsize=(2, 2)) # Shrink the graph size
ax.matshow(grid, cmap=cmap)
# Add grid lines and remove ticks
ax.set_xticks(np.arange(-0.5, 4, 1), minor=True)
ax.set_yticks(np.arange(-0.5, 4, 1), minor=True)
ax.grid(which='minor', color='gray', linestyle='-', linewidth=2)
ax.tick_params(left=False, bottom=False, labelleft=False, labelbottom=False)
return fig
# Function to interpolate between start and end values
def interpolate_value(start_value, end_value, position, max_position):
difference = end_value - start_value
interpolated_value = start_value + (difference * (position / max_position))
return int(interpolated_value)
st.title("4x4 Boolean Grids with Interpolated Slider")
# Slider for selecting the position, starting at 0
max_slider_value = 10
position = st.slider("Select a position", 0, max_slider_value, 0)
# Define the start and distinct end values for each of the four numbers
start_value = 111111111111111
end_values = [0, 1111111100000000, 1111111111111111, 11111111]
# Interpolate each value based on the slider position
interpolated_values = [
interpolate_value(start_value, end_values[0], position, max_slider_value), # Number 1
interpolate_value(start_value, end_values[1], position, max_slider_value), # Number 2
interpolate_value(start_value, end_values[2], position, max_slider_value), # Number 3
interpolate_value(start_value, end_values[3], position, max_slider_value) # Number 4
]
# Display the interpolated numbers correctly
st.write(f"Interpolated Numbers:")
for i, value in enumerate(interpolated_values):
st.write(f"Number {i+1}: {value}")
# Convert the interpolated numbers to boolean strings
boolean_strings = [modify_number(str(value).zfill(16)) for value in interpolated_values]
# Create grids for each number and display them in a row
cols = st.columns(4)
for i, boolean_string in enumerate(boolean_strings):
with cols[i]:
st.write(f"Grid for Number {i+1}:")
st.write(modify_number(str(11).zfill(16)))
fig = create_grid(boolean_string)
if fig:
st.pyplot(fig)
|