No internet connection
  1. Home
  2. Exercícios do Beecrowd

Beecrowd - 1435 e 1478

Por Julio @Julio
    2023-10-26 21:25:52.456Z2023-10-26 22:24:09.556Z

    Olá,

    Gostaria de ajuda para saber como exatamente devo fazer o retorno da solução.

    Ja tenho mais de 20 envios e sempre me da erro de 'Presentation error ', já procurei diversas soluções para tratar a saida e sempre da errado. Vi que existe uma solução para C#, no entanto não encontrei nada sobe JavaScript.
    Nao sei se meus colegas estão tendo o mesmo problema, mas esse exercício ja me tomou tempo de mais só por causa da saida, sendo que a solução dos dois eu ja tenho, na minha maquina executando pelo .Node tudo funciona normalmente.

    Agradeço a ajuda.

    Matriz Quadrada I
    https://www.beecrowd.com.br/judge/pt/problems/view/1435

    Matriz Quadrada II
    https://www.beecrowd.com.br/judge/pt/problems/view/1478

    Resolvido no post #2, clique para visualizar
    • 10 respostas
    1. B
      Brenda Aniceto Bueno @Brenda
        2023-10-26 23:04:32.856Z2023-10-26 23:43:34.474Z

        Boa note, assim como você eu tinha feito de varias formas pelo VS e funcionou mas pelo beecrowd sempre deva o mesmo erro que o seu.
        Este código JavaScript resolve o problema 1435 Matriz Quadrada I no formato que o beecrowd aceita:

        Ele lê uma série de números, onde cada número N representa a ordem de uma matriz. Para cada N lido, o código gera uma matriz N x N seguindo as regras fornecidas no problema.

        O processo funciona da seguinte forma:

        O código lê a entrada do usuário, inicializa uma variável contador com o primeiro número da entrada e entra em um loop. Enquanto contador não for zero, o código executa as seguintes etapas:

        Para cada valor de i de 0 até metade de contador, o código constrói uma linha da matriz.
        Para cada valor de j de 0 até metade de contador, o código calcula um valor baseado na menor diferença entre i e j e adiciona 1. Esse valor representa os elementos da matriz.
        Os valores são formatados para terem dois caracteres, com um espaço à esquerda, se necessário.
        A linha da matriz é construída espelhando os valores da metade esquerda para a metade direita.
        A matriz completa é impressa no formato desejado, onde cada linha representa uma linha da matriz.
        Esse processo é repetido até que contador seja zero, momento em que o loop é encerrado.

        Espero que isso ajude a entender como o código está resolvendo o problema da matriz quadrada! Se tiver mais alguma dúvida ou precisar de ajuda adicional, estou à disposição.

        var input = require('fs').readFileSync('/dev/stdin', 'utf8');
        var lines = input.split('\n');
        let contador = parseInt(lines.shift());
        let vetor = [];
        let matriz = [];
        while (contador !== 0) {
          matriz = new Array(contador);
          for (let i = 0; i < contador / 2; i++) {
            vetor = new Array(contador);
            for (let j = 0; j < contador / 2; j++) {
              const value = Math.min(i, j) + 1;
              vetor[j] = value < 10 ? ` ${value}` : `${value}`; 
              vetor[contador - 1 - j] = vetor[j];
            }
            matriz[i] = ` ${vetor.join('  ')}`;
            matriz[contador - 1 - i] = matriz[i];
          }
          console.log(`${matriz.join('\n')}`);
        
          contador = parseInt(lines.shift());
          console.log('');
        }
        
        1. Julio @Julio
            2023-10-27 00:02:32.374Z

            Muito obrigado pela ajuda. Já estava entrando em desespero aqui.

            1. Em resposta aBrenda:
              MMarina Barbosa @marina_barbosa
                2023-10-29 03:04:43.699Z

                obg, tava sofrendo aqui por conta de espaços

                1. Em resposta aBrenda:
                  Hilton Rodrigo Mota @hrodrigomota
                    2023-11-03 00:19:24.668Z

                    Muito obrigado pela explicação, Brenda. Ajudou bastante!

                  • B
                    Em resposta aJulio:
                    Brenda Aniceto Bueno @Brenda
                      2023-10-26 23:22:13.585Z

                      A 1478 ficou desse jeito:

                      var input = require('fs').readFileSync('/dev/stdin', 'utf8');
                      var lines = input.split('\n');
                      
                      while(true){
                          var N =parseInt(lines.shift());
                          
                          if(N === 0){
                              break;
                          }
                          var matriz = [];
                          for(var i =0; i< N;i++){
                              matriz.push([]);
                              for(var j = 0; j < N; j++){
                                  matriz[i].push(Math.abs(i - j) + 1);
                              }
                          }
                          for(var i = 0; i < N; i++){
                            var row = '';
                              for(var j =0; j <N; j++){
                               row += matriz[i][j].toString().padStart(3, ' ');
                               if(j < N -1){
                                   row += ' ';
                               }
                          }
                          console.log(row);
                        }
                        console.log('');
                      }
                      
                      1. Nossa, valeu demais! Eu tinha feito bem parecido com o seu, mas estava adicionando os espaços "manualmente", sem esse padStart não estava indo de maneira alguma. Muito obrigado!

                      2. Em resposta aJulio:

                        Salvou aqui... Fiquei a tarde inteira quebrando cabeça e dava Presentation Error, no VS code rodava tranquilo. =(

                        1. BBrenda Aniceto Bueno @Brenda
                            2023-10-27 21:29:05.882Z

                            Isso aconteceu comigo também, por conta de um espaço 😓. O ruim do beecrowd é que ele da um erro genérico e fica difícil de indentificar.

                          • M
                            Em resposta aJulio:

                            Na 1478 eu tive problema com o tempo de execução, então ficou desse jeito:

                            var input = require('fs').readFileSync('/dev/stdin', 'utf8');
                            var lines = input.split('\n');
                            
                            let N;
                            let valor;
                            let stringLinha = '';
                            while (true){
                                N = parseInt(lines.shift());
                                if (N ===0){
                                    break;
                                }
                                
                                for(let i=0; i<N; i++){
                                    stringLinha = '';
                                    for(let j=0; j<N; j++){
                                        valor = Math.abs(i - j) + 1;
                            
                                        stringLinha += valor.toString().padStart(3, ' ');
                                        if(j < N -1){
                                            stringLinha += ' ';
                                        }
                                    }
                                    console.log(stringLinha);
                            
                                }
                                console.log('');
                            }
                            
                            1. Em resposta aJulio:

                              Estou a horas nessas questões kkk
                              Muito obrigado!