TOPIC

PROBLEM 2338 - URI Fórum 1.0

URI Online Judge asked 4 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Lucas Berg replied 4 years ago

    Achei aonde estava o meu erro com a sua saída, valeu bitfreeze ! xD

    -> uDebug e a antiga Toolbox fazem falta em alguns problemas mesmo ...

    MOD
  • Unknown replied 4 years ago

    O uDebug faz falta, não?

    morse code code
    sos
    a h f sef r s e okl a io g  nstu u mx  l e
  • Lucas Berg replied 4 years ago

    Alguém que recebeu Accepted poderia testar essa entrada e me dizer o resultado ?

    3
    ===.===...===.===.===...=.===.=...=.=.=...=.......===.=.===.=...===.===.===...===.=.=...=.......===.=.===.=...===.===.===...===.=.=...=
    =.=.=...===.===.===...=.=.=
    =.===.....===.=.=.=.....===.=.===.=.....===.=.=...=...=.=.===.=.....===.===.=.....=.=.=.=.....=.=.....=.===.===.===...===.=.===...=.===.=.=.....===.===.....===.=...===.===.===.....=.===.===.=.....===.===.=.===.....=.===.=...=.=.=...===...=.=.===.....=.=.=.===.....=.===.===...===.=.=.===.....===.=.===.===.....===.===.=.=.....
    MOD
  • Fernando Posser replied 4 years ago

    Tentei resolver, mas não encontrei aonde pode estar havendo o erro... Segue abaixo o código em Python

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    alfabeto = {
        '=.===': "a",  # .-
        '===.=.=.=': 'b',  # -...
        '===.=.===.=': 'c',  # -.-.
        '===.=.=': 'd',  # -..
        '=': 'e',  # .
        '=.=.===.=': 'f',  # ..-.
        '===.===.=': 'g',  # --.
        '=.=.=.=': 'h',  # ....
        '=.=': 'i',  # ..
        '=.===.===.===': 'j',  # .---
        '===.=.===': 'k',  # -.-
        '=.===.=.=': 'l',  # .-..
        '===.===': 'm',  # --
        '===.=': 'n',  # -.
        '===.===.===': 'o',  # ---
        '=.===.===.=': 'p',  # .--.
        '===.===.=.===': 'q',  # --.-
        '=.===.=': 'r',  # .-.
        '=.=.=': 's',  # ...
        '===': 't',  # -
        '=.=.===': 'u',  # ..-
        '=.=.=.===': 'v',  # ...-
        '=.===.===': 'w',  # .--
        '===.=.=.===': 'x',  # -..-
        '===.=.===.===': 'y',  # -.--
        '===.===.=.=': 'z'  # --..
    }
    
    def verifica_separador(s):
        i = 0
        while True:
            if s[i] == '.':
                i += 1
            else:
                return i
    
    def traduz(conjunto):
        if conjunto in alfabeto:
            return alfabeto[conjunto]  # retorna a letra
        else:
            print("O CONJUNTO NÃO FOI ENCONTRADO NO ALFABETO----->>", conjunto)
    
    def translate(lista):
        palavra = ''  # armazena a frase traduzida continuamente
        simbolo = ''  # armazena o simbolo e a cada letra traduzida e zerado e armazenado um novo simbolo
        for linha in lista: # percorre os elementos da lista
            i = 0
            while i <= len(linha) - 1: #  enquanto o incrementador for menor ou igual a quantidade de linhas
                if linha[i] == '=': #  se o elemento for simbolo valido
                    simbolo += linha[i] #  incrementa a variavel simbolo com o valor do elemento
                    i += 1 #  incrementa o incrementador
                elif linha[i] == '.':  # senão for um simbolo valido pode ser um possivel separador
                    if linha[i + 1] == '.': # se o proximo caractere tambem for . entao e um separador
                        palavra += traduz(simbolo)  # traduz o simbolo já formado e armazena a letra na palavra
                        separador = verifica_separador(linha[i:])  # verifica quantos . tem o separador
                        simbolo = ''  # zeramos simbolo para receber o proximo
                        i += separador #  pulamos para o proximo simbolo
                        if separador > 3:  # se o separador for maior que 3 então adicionados um espaço, pois é outra palavra
                            palavra += ' '
                    else:  #  se o proximo caractere nao for um . entao nao e um separador
                        simbolo += linha[i]
                        i += 1
                if i == len(linha):
                    palavra += traduz(simbolo)
                    simbolo = ''
        return palavra
    
    entrada = int(input())
    #  abc::  =.===...===.=.=.=...===.=.===.=
    #  def::  ===.=.=...=...=.=.===.=
    if entrada > 1 or entrada < 10:
        linhas = []
        for i in range(0, entrada):
            linhas.append(input())
    
    print(translate(linhas))
  • Unknown replied 4 years ago

    As entradas utilizadas para validação das soluções seguem as especificações descritas na página do problema.

    A descrição do problema afirma que a primeira linha conterá um número de 1 a 10, portanto a não ser que haja um erro nas entradas de validação, você deve considerar a afirmação como verdadeira. Por este motivo, para testar a solução não se devem inserir dados em desacordo com a descrição.

    Se precisar de ajuda para identificar o problema no código, pode postá-lo aqui, entre tags **

    **, e poderemos sugerir entradas que evidenciem o erro e o ajudem a corrigi-lo.

  • Fernando Posser replied 4 years ago

    Olá, boa tarde.

    Desenvolvi a solução do problema, fiz vários testes, mas no momento em que submeti houve 20% de erro. Acredito que seja por conta de um caso de teste especificado na Saída do problema: "A primeira linha de cada entrada contém o número de casos de teste (t)(1 <= t <= 10)."

    Pois bem, caso o valor que será inserido para testar a solução caia fora desse teste, o que deve ser feito? Pergunto isso pois o problema não especifica nada.

    Att,