Spaces:
Build error
Build error
| import gradio as gr | |
| import numpy as np | |
| def transpose_cipher(text, key): | |
| # Convert the key to a list of integers | |
| key_list = [int(k) for k in key.split()] | |
| # Calculate the number of columns | |
| num_cols = len(key_list) | |
| # Calculate the number of rows | |
| num_rows = -(-len(text) // num_cols) # Ceiling division | |
| # Initialize the matrix with spaces | |
| matrix = [[' ' for _ in range(num_cols)] for _ in range(num_rows)] | |
| # Fill the matrix with the text | |
| index = 0 | |
| for row in range(num_rows): | |
| for col in range(num_cols): | |
| if index < len(text): | |
| matrix[row][col] = text[index] | |
| index += 1 | |
| # Transpose the matrix based on the key | |
| transposed_matrix = ['' for _ in range(num_rows)] | |
| for col in range(num_cols): | |
| for row in range(num_rows): | |
| transposed_matrix[key_list[col] - 1] += matrix[row][col] | |
| # Join the transposed matrix into a single string | |
| return ''.join(transposed_matrix) | |
| # Create the Gradio interface | |
| with gr.Blocks() as demo: | |
| # Input components with tooltips and instructions | |
| text_input = gr.Textbox( | |
| label="Text to Encrypt", | |
| placeholder="Enter your text here", | |
| info="Enter the text you want to encrypt." | |
| ) | |
| key_input = gr.Textbox( | |
| label="Key", | |
| placeholder="Enter the key (space-separated integers)", | |
| info="Enter the key as a sequence of space-separated integers. The key should be a permutation of the column indices." | |
| ) | |
| # Output component | |
| encrypted_output = gr.Textbox(label="Encrypted Text") | |
| # Button to trigger the encryption | |
| encrypt_button = gr.Button("Encrypt") | |
| # Define the event listener | |
| encrypt_button.click(fn=transpose_cipher, inputs=[text_input, key_input], outputs=encrypted_output) | |
| # Launch the Gradio app | |
| demo.launch(show_error=True) |