| 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) |
|
|