ETAPAS

ETAPA 7 (9/11) – E os vencedores são…

A sétima e última etapa do BXCOMP foi realizada na quarta-feira (9/11), e teve a participação de 18 equipes das vinte escritas. A etapa especialmente contou com um placar que mostrava as posições das equipes no campeonato em tempo real, com o objetivo de aumentar o clima de competitividade, visto que a pontuação da etapa anterior não fora divulgada antes da realização da última etapa.

O primeiro desafio, “O Jogo da Captura”, foi o mais complexo da etapa. Nele, os participantes tinham como tarefa implementar para uma versão específica do jogo de damas a jogada que capturasse o maior número de peças possíveis, além de exibir o caminho o qual a peça percorreu. O desafio envolvia conceitos de “BackTracking” e “Função de Avaliação” para a solução. Nenhuma submissão correta foi feita para o desafio, o que indica que os participantes souberam gerenciar bem o tempo da etapa para a resolução dos problemas propostos, visto que este seria o que demandaria a maior parte de tempo da etapa.

O segundo desafio proposto, “Artes”, tinha como objetivo cortar uma placa de madeira, a fim de obter pedaços menores, da forma que o custo fosse o menor possível, visto que cada corte tem seu custo base e o seu custo final é calculado com os cortes já realizados. A solução do desafio consistia de um algoritmo guloso de forma que os cortes de maior custo deveriam ser realizados primeiro assim tendo um multiplicador menor. O número de submissões para o desafio foi razoável e 3 das 6 equipes que submeteram o submeteram o acertaram.

O terceiro desafio proposto, “A Lista de Steiner”, tinha como objetivo verificar se um número é palíndromo ou não quando representado em um intervalo específico de bases numéricas. Era o desafio menos complexo da etapa, sendo a principal dificuldade a conversão para bases numéricas maiores do que 10, em que se deve utilizar caracteres especiais na representação dos números. Apesar de ser o desafio mais fácil da etapa, somente duas equipes conseguiram resolver o mesmo. Acreditamos que o motivo foi o quarto desafio aparentar ser mais fácil do que realmente era, o que levou as equipes a focarem nele.

O quarto e último desafio proposto, “Evitando a má sorte”, tinha como objetivo, com base nos número de sacos de batata doce e no número de batatas que eles continham, dizer quem não pegaria primeiro a última batata de algum dos sacos. Esse foi o desafio que teve o maior número de submissões e foi resolvido corretamente por apenas uma equipe. A solução envolvia pensar na lógica do problema e não ficar tentando calcular a quantidade exata de batatas retiradas a cada passo. O maior alvo de atenção era verificar se o número de sacos de batata era par e o caso especial no qual os sacos começam com 1 batata cada.

Ao final da etapa, ocorreu a cerimônia de encerramento do campeonato que contou com a ilustre presença dos professores Daniel Cordeiro, Fábio Nakano, Ivandré Paraboni, Luciano Digiampietri, os representantes da Lexis Nexis, Caio e Brian, assim como da tutora do grupo PET-SI Sarajane. Estes dirigiram algumas palavras aos competidores, parabenizando-os pelo empenho durante todo o campeonato. Por fim, ocorreu a entrega de medalhas e dos prêmios para os vencedores. As equipes vencedoras do VI BXComp foram: Tilt, Armored Dawgs e Codi Builders, respectivamente em primeiro, segundo e terceiro lugar.

Agradecemos aos participantes, a empresa Lexis Nexis e aos professores pelo apoio na realização com sucesso de mais um campeonato! E que venha o VII BXCOMP!


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

O Jogo da Captura
Artes
A Lista de Steiner
Evitando a má sorte

ETAPA 6 (19/10) – PONTOS EM DOBRO! SURPRESAS EM DOBRO!

A sexta e penúltima etapa do BXCOMP foi realizada na quarta-feira(19/10), e contou com a presença de 16 das vinte equipes inscritas. No início da etapa a tutora do grupo PET-SI, a Prof.ª Dr.ª Sarajane, comentou com os alunos sobre a empresa LexisNexis – apoiadora cultural da atividade e tema desta etapa – bem como sua área de atuação. Os alunos também foram informados de que haveria uma surpresa ao final da etapa e que, por isso, deveriam salvar os desafios resolvidos. Foram propostos três desafios, todos em inglês. Foram eles: Encryption, Optimization e Sentiment Analysis.

O primeiro desafio proposto, Encryption, foi o que teve o maior número de submissões corretas. Os competidores precisavam elaborar um programa para encriptação de uma frase utilizando um esquema que a dividia em linhas e colunas e obtinha a mensagem codificada concatenando os caracteres de cada coluna, formando palavras. Apesar de ser o desafio com o maior número de submissões corretas da etapa, também foi o desafio com maior número de submissões com erradas devido à concatenação indevida gerada a partir de um sutil erro de lógica. A implementação submetida por algumas equipes fazia a leitura a mais da string que, dependendo do caso de teste, acaba concatenando caracteres vazios. Essa concatenação não gerava diferenças visuais em relação à saída esperada, porém, por conta do tipo char se tratar de um tipo primitivo em Java, eles possuem um valor correspondente na tabela ASCII e por isso provocavam diferenças nas variáveis, inclusive no comprimento da string que era concatenada. As equipes que tiveram êxito nesse desafio fizeram uso de alguma estrutura condicional para evitar a concatenação além dos limites da palavra ou usaram concatenação com objetos String ao invés do tipo primitivo char. Além disso, também houve submissões que falharam por conta da exibição na saída, na maioria dos casos foi esquecido da quebra de linha entre os casos de teste, gerando Presentation Error.

O segundo desafio proposto foi o Optimization, nele era proposta a implementação de um programa que divide os preços de borracha entre diferentes fábricas com o objetivo de obter o menor custo final possível. Os preços seguiam uma regra pré-definida pelo fornecedor de forma que o preço final de uma certa quantidade de borracha que um único cliente compra é maior do que o preço final da mesma quantidade quando comprada por vários clientes diferentes. Apesar da lógica não parecer muito óbvia, a implementação podia ser feita de maneira bastante concisa e elegante, usando de uma estratégia gulosa (confira a resolução oficial abaixo).

Por fim, o terceiro desafio, Sentiment Analysis, envolvia a verificação e organização de tweets pelo humor, conforme uma heurística fornecida no próprio problema. Além disso, era preciso agrupar os tweets através das hashtags – marcações que definiam o seu tema – indicando quais eram os usuários que escreveram os tweets mais positivos e mais negativos para cada um dos diferentes temas. A solução exigia mais trabalho na implementação devido à leitura da entrada. Apenas uma equipe, Tilt, submeteu corretamente o desafio e, portanto, foi a única equipe a solucionar todos os desafios da etapa especial.

Ao final da etapa, foi dito que as três primeiras equipes que resolveram corretamente o desafio Encryption poderiam ganhar um prêmio dado pela LexisNexis. Cada uma das três equipes recebeu uma frase codificada que seria utilizada como entrada do programa para obter a localização do prêmio. As três equipes que resolveram mais rápido o desafio Encryption foram ForDummies, Missing Files e Nome Daora. Parabéns às equipes que concorreram ao prêmio, em especial à equipe Nome Daora que foi a ganhadora ao encontrar a localização mais rapidamente.
Esperamos vocês na última etapa! 🙂


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Encryption
Optimization
Sentiment Analysis

ETAPA 5 (05/10) – Mais aventuras e desafios!

A quinta etapa do BXCOMP 2016 foi realizada na quarta-feira (05/10), e contou com a presença de dezesseis das vinte equipes inscritas. No começo da atividade, a equipe Computreta foi anunciada como a vencedora do concurso cultural “PET-SI revela que …”, e como recompensa, um de seus integrantes estourou o balão que deu início à etapa do campeonato.

Nessa etapa foram propostos três desafios: Piratas, Aventureiro Gastronômico e Mercador de Runas. O primeiro desafio, considerado o de maior dificuldade, poderia ser resolvido de várias maneiras. Nele os competidores tinham que elaborar um programa com o objetivo de dizer se era possível chegar ao tesouro com segurança. Uma solução eficiente é através da realização de duas buscas: enquanto o navio estiver no mar, busque por terra ou tesouro; enquanto a tripulação estiver na terra, busque pelo tesouro. As buscas podem ser feitas com uso de recursão, recebendo como parâmetro as coordenadas x, y. As mesmas são marcadas como visitadas e, em seguida é realizada uma chamada recursiva para os vizinhos de (x,y). Somente uma equipe submeteu soluções para esse problema, mas nenhuma delas foi aceita.

O segundo desafio, Aventureiro Gastronômico, consiste em desenvolver um programa que, dadas as posições de restaurantes e farmácias ao longo de uma rodovia, calcule a distância mínima de cada restaurante até a farmácia mais próxima e que determine qual dessas distâncias era a menor. Por apresentar um menor nível de dificuldade em relação ao primeiro desafio, ele foi resolvido pela maioria das equipes.

O terceiro desafio, Mercador de Runas trata-se de um exercício, na qual os competidores precisam implementar uma solução que, dado um conjunto de símbolos rúnicos, descubra o valor numérico neste representado. O número de submissões corretas para este desafio se iguala ao do Aventureiro Gastronômico. Nesta etapa, a maioria das equipes teve um bom desempenho, resolvendo pelo menos um dos desafios propostos.

Novos desafios nos aguardam na próxima etapa! E como diz a escritora Clarice Lispector, “um pouco de aventura liberta a alma cativa do algoz cotidiano” 🙂


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Piratas
Aventureiro Gastronomico
Runas

ETAPA 4 (28/09) – QUATRO DESAFIOS?!

A quarta etapa do BXCOMP 2016 foi realizada na quarta-feira (28/9), e contou com a presença da maioria das equipes inscritas. No início da etapa foi proposto um concurso cultural “PET-SI revela que …” e a equipe que vencesse poderia estourar o balão de início da quinta etapa.

Nessa etapa foram propostos quatro desafios pela primeira vez na competição deste ano: Código Da Vinci, Triângulo, Sábio das duas matrizes e Quem quer dinheiro? . Alguns desafios tiveram problemas na leitura e impressão da saída, por não seguirem os padrões da etapa anterior. As equipes que utilizaram nextLine() tiveram problemas na leitura gerando um erro em tempo de execução por tentar ler uma linha que não existia, enquanto que as equipes que utilizaram nextInt() ou next() não tiveram problemas.

O primeiro desafio, Código Da Vinci, consistia em encontrar uma senha dado uma sequência de números e caso ele fosse palíndromo subtrair uma unidade e então inverter o resultado. Assim como já ocorreu em outras etapas a solução poderia envolver a função charAt(). O segundo desafio, Triângulo, foi o mais resolvido pelas equipes e seu objetivo era dado três medidas dizer se ele poderia formar um triangulo e, se fosse possível, classificar ele em isósceles, equilátero ou escaleno. O terceiro e quarto desafios, respectivamente Sábio das duas matrizes e Quem quer dinheiro?, envolviam trabalhar com matrizes e eram mais trabalhosos quando comparado aos dois primeiros por ter de verificar mais condições e podendo conter um grande número de laços de repetição.

No geral, apenas algumas equipes não conseguiram resolver nenhum desafio, porém, a etapa teve seu peso no campeonato reduzido devido aos problemas ocorridos. Salientamos que é importante adotar como estratégia dividir os desafios entre os membros da equipe e evitar de ficar no mesmo desafio até que ele seja resolvido. Uma boa quinta etapa para todos!


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Código Da Vinci
Triangulo
Sabio das duas matrizes
Quem quer dinheiro?

ETAPA 3 (21/09) – FALTOU A ENTRADA

A terceira etapa do BXCOMP 2016 foi realizada na quarta-feira (21/9), e contou com a presença de dezenove das vinte equipes inscritas, além disso, no começo da etapa, a tutora do grupo PET-SI, Sarajane Marques Peres, recepcionou os alunos e agradeceu a participação e colaboração de todos no campeonato. Ao final da etapa as equipes receberam as camisetas do campeonato.

Nesta etapa, foram propostos três desafios: Bhaskara, Fatorial e Coelhos. Esses desafios propunham a aplicação de programação para resolver problemas matemáticos e exigiam atenção especial para ler a entrada e montar a saída.

O primeiro desafio, Bhaskara, mostrou-se o desafio mais difícil dessa etapa, consistia em identificar os coeficientes de uma equação de segundo grau, passa-los como parâmetro para uma função fornecida no arquivo java e apresenta as raízes da equação. A maior dificuldade do desafio era a leitura da entrada, já que os coeficientes não possuíam ordem ou posição predefinida. Além disso, diversas equipes esqueceram de apresentar as raízes em ordem crescente.

O segundo desafio, Fatorial, foi o desafio mais resolvido, pedia ao competidor realizar um programa que imprimisse os números fatoriais que compõem um inteiro. Por fim o terceiro desafio, Coelhos, consistia em mostrar o mês em que uma certa quantidade de coelhos era atingida, no entanto, os coelhos se multiplicavam de seguindo a sequência de Fibonacci.

Os competidores enfrentaram algumas dificuldades na impressão das saídas dos desafios, tentando separar os números que compunham o fatorial por espaços e evitar espaços extras ao fim e, no Bhaskara, separar os casos de teste com uma linha em branco e não imprimir uma quebra de linha após o último caso de teste. É importante ressaltar que a formatação das saídas dos desafios deve estar igual ao exemplo de saída exibida no enunciado.

Nenhum dos arquivos java fornecidos para os competidores continha método de leitura da entrada. Recomendamos conhecer como funcionam os métodos da classe Scanner, já que a leitura da entrada pode não ser mais fornecida nas próximas etapas.

Sugerimos que as equipes elaborem uma estratégia que otimize o tempo de resolução, como dividir os desafios entre os membros e ler todos os desafios antes de começar a resolvê-los, pois os desafios não estão ordenados de acordo com seus respectivos níveis de dificuldade.

Lembrando que cada desafio submetido corretamente vale 4 pontos para a equipe e, nesta etapa, foram consideradas as submissões erradas, como também o tempo de resolução dos desafios, esses dois itens são importantes para o critério de desempate no ranking do campeonato. A próxima etapa ocorrerá dia 28/09.


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Bhaskara
Fatorial
Coelhos

ETAPA 2 (14/09) – GOTTA RESOLVE’EM ALL!

A segunda etapa do BXCOMP 2016 aconteceu na quarta-feira, dia 14 de setembro, e contou com a presença das vinte equipes inscritas. No início da etapa os competidores foram relembrados de que, a partir dessa, cada etapa vale 12 pontos e os outros critérios avaliados, como tempo e submissões erradas, serão contabilizados.

Nessa etapa foram propostos três desafios, Gotta catch’em all, Tesouro e Números amigos. O primeiro desafio foi resolvido pela maioria das equipes, nesse precisava-se calcular quantos dias durariam a aventura do professor Francis, estando atento ao comportamento de seu Blastoise e a faixa de segurança estipulada por ele. O erro que mais aconteceu nesse desafio estava relacionado à faixa de segurança estipulada pelo professor. Conforme dito no exercício, o último dia de aventura era aquele que, após a refeição do Blastoise, restasse menos de um quilograma de ração. Muitas das soluções enviadas não consideravam o último dia quando restava exatamente um quilograma de ração. Contudo, as equipes perceberam esse erro e o corrigiram. Os outros erros não estavam diretamente ligados ao desafio.

Havia mais de uma forma de resolver o segundo desafio, a forma indicada pela tarefa era identificar o padrão e eliminar as repetições. A maioria das equipes que resolveu esse desafio seguiu a forma indicada, identificando que a primeira letra do trecho repetido era a segunda vogal contada a partir do final da palavra original. Como na palavra “sanduiche”, a segunda vogal contada a partir do final é a letra “i”, então, a ferramenta que captava com erros, captava “sanduiche” como “sanduicheiche”. Contudo, identificar que as repetições iniciavam com vogais e procurar por repetições começadas em vogais era uma forma de resolver também.
Na resolução do terceiro desafio era necessário percorrer os valores dentro dos limites e verificar as somas dos seus divisores garantindo que as mesmas estivessem dentro do limite e fosse maior que o valor para assegurar que o valor fosse contado apenas uma vez e posteriormente verificar se a soma dos divisores da soma dos divisores era igual ao número testado.

No geral, os erros mais comuns, não estavam diretamente relacionados aos desafios, foram quanto a apresentação da resposta, Presentation Error, e durante a execução, Runtime Error. O primeiro deles por conta da última quebra de linha necessária, a questão era resolvida se as respostas fossem impressas utilizando System.out.println, que por si só já quebra a linha ao final do conteúdo da mesma. Era preciso adicionar outra quebra de linha apenas para aquelas equipes que imprimiram a resposta utilizando System.out.print. Já o segundo erro aconteceu por dois motivos: Nome da classe/arquivo e laço de testes. A classe que anexamos ao desafio no BOCA está com o nome com o qual ela deve ser submetida. Classes com nomes errados ou com nome diferente do arquivo .java gerarão erro, esse mesmo erro acontece quando é enviada a solução de um desafio com outro selecionado no BOCA. Muitos grupos esqueceram de atualizar os contadores de testes, por conta disso, ao fim da entrada, o programa tentava utilizar novamente o Scanner, o que causava um erro.

Parabéns a todas equipes pelo desempenho e boa sorte nas próximas etapas!


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Gotta catch’em all
Tesouro
Números amigos

ETAPA 1 (31/08) – FOI DADA A LARGADA!

Aconteceu na última quarta-feira de agosto (31/08), a primeira etapa do BXComp 2016. A etapa contou com a presença de todas as equipes inscritas no campeonato e também com a ilustre presença dos professores Alexandre Freire, Daniel Cordeiro, Ivandré Paraboni e Luciano Digiampietri. Antes do começo do campeonato, os professores mencionados conversaram com os alunos e ressaltaram a importância da participação dos calouros no campeonato. Em seguida, os petianos explicaram como é realizada cada etapa e falaram sobre a utilização do sistema BOCA.

Na etapa, foram propostos os seguintes desafios: “Decodificando” e “Quem está ganhando? ”. O primeiro tinha como objetivo utilizar o arranjo de números para descobrir a posição das letras que faziam parte da mensagem secreta. Já o segundo desafio buscava mostrar quem liderava o quadro de medalhas Olímpicas, com base na quantidade de medalhas que os atletas de cada país haviam conquistado.

Na resolução do primeiro desafio era necessário utilizar o método toCharArray ou o método charAt, ambos da classe String. Esses métodos são bastante comuns e conhece-los ajudará no decorrer do campeonato. Quanto as respostas, os erros mais comuns estavam relacionados à apresentação delas, geralmente com espaços a mais, falta ou excesso de quebras de linha. Lembrando que os desafios são julgados esperando a saída da forma exata como foi especificada no desafio.

Na resolução do segundo desafio era necessário identificar os casos não tratados pelo código fornecido. Esses eram relativos aos casos de empate, principalmente no caso da leitura de um empate antes de ler o país que deveria ser o líder. Algumas dicas importantes para a próxima etapa são:

• Ler e entender a resolução dos desafios (presentes logo abaixo).
• Ler todos os desafios e os códigos entregues antes de começar a resolve-los, a ordem de resolução pode influenciar em seu desempenho.
• Testar o código em sua máquina pode te ajudar a perceber quais são os erros.
• Buscar entender bem o problema e todos os seus casos de teste é essencial para a resolução do desafio.

Por fim, é importante ressaltar que nessa etapa cada desafio correto enviado valeu 1 ponto e que a quantidade de submissões erradas e o tempo de resolução não foram considerados. Porém, a partir da próxima etapa esses critérios serão utilizados para o desempate. A próxima etapa valerá 12 pontos. Boa Sorte!


Seguem abaixo os links com uma das possíveis soluções de cada desafio:

(Clique no nome do desafio para baixá-lo)

Decodificando
Ganhou