|
import gradio as gr |
|
import util |
|
import re |
|
import random |
|
|
|
|
|
|
|
|
|
corpus = util.load_single_raw_text_file("mapudungun.easy.filtered") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
words = corpus.split() |
|
print(words) |
|
|
|
|
|
lexicon = set() |
|
for word in words: |
|
lexicon.add(word) |
|
|
|
filtered_lexicon = set() |
|
|
|
for word in lexicon: |
|
filtered_lexicon.add(word) |
|
|
|
|
|
|
|
print(len(filtered_lexicon)) |
|
|
|
def random_scramble(lexicon: set): |
|
lexicon = list(lexicon) |
|
|
|
word = random.choice(lexicon) |
|
|
|
|
|
word_chars = list(word) |
|
|
|
|
|
random.shuffle(word_chars) |
|
|
|
|
|
shuffled = ''.join(word_chars) |
|
|
|
return {'shuffled': shuffled, 'original': word} |
|
|
|
|
|
|
|
def scrambler_game(current_word, guess: str): |
|
""" |
|
If `guess` is the correct word, return 'Correct' and pick a new word. Otherwise, return 'Incorrect' |
|
Returns (correct_label, scrambled_word, current_word) |
|
""" |
|
if guess == current_word['original']: |
|
current_word = random_scramble(filtered_lexicon) |
|
return ('😀 ¡Correcto! 😀', current_word['shuffled'], current_word) |
|
else: |
|
return ('Incorrecto 😕', current_word['shuffled'], current_word) |
|
|
|
|
|
def new_word(): |
|
current_word = random_scramble(filtered_lexicon) |
|
return ('', current_word['shuffled'], current_word) |
|
|
|
|
|
with gr.Blocks(theme=gr.themes.Soft(), title="Inan Nemül") as unscramble: |
|
|
|
current_word = gr.State(random_scramble(filtered_lexicon)) |
|
|
|
gr.Markdown("# Inan Nemül") |
|
|
|
|
|
scrambled_textbox = gr.Textbox(label="Crucigrama", interactive=False, value=current_word.value['shuffled']) |
|
|
|
guess_textbox = gr.Textbox(label="Adivinar - Adivina la palabra y luego aprieta en 'enviar'") |
|
guess_button = gr.Button(value="Enviar") |
|
|
|
new_word_button = gr.Button(value="Nueva Palabra") |
|
|
|
output_textbox = gr.Textbox(label="Resultado", interactive=False) |
|
|
|
guess_button.click(fn=scrambler_game, inputs=[current_word, guess_textbox], outputs=[output_textbox, scrambled_textbox, current_word]) |
|
new_word_button.click(fn=new_word, inputs=[], outputs=[output_textbox, scrambled_textbox, current_word]) |
|
|
|
unscramble.launch(share=True) |
|
|