ETAPAS

ETAPA 7 (06/NOV) – FINAL!!!

Depois de quase dois meses de campeonato chegamos ao fim de mais um BXCOMP. Nós da organização agradecemos a participação de todos e esperamos que vocês tenham se divertido tanto quanto nós. Agradecemos também a presença dos professores Fábio, Flávio, Ivandré e Luciano que entregaram as medalhas aos grandes vencedores. Deixamos aqui registrado também nossa gratidão à empresa Quantica que nos apoiou esse ano e que gentilmente cedeu a premiação (quatro kindles) para a equipe campeã.

Quanto aos desafios, tivemos três. O “container” era o mais difícil deles e não é para menos, afinal ele foi adaptado da etapa paulistana da Maratona de Programação ACM 2013 (veja todos os desafios da maratona aqui). O “Attendance” mesmo estando em inglês foi corretamente solucionado por todas as equipes presentes. Por fim temos o “vida” que mesmo tendo a lógica simples exigia tempo para ser codificado. Veja as soluções propostas no fim deste post.

Parabenizamos as equipes “Só de Zuera”, “O Quarteto Fantástico” e “Arctic Koalas” por alcançarem o pódio do campeonato.

Clique aqui para visualizar as fotos tiradas nessa etapa!

Clique aqui para visualizar o ranking final do campeonato!

——————————————————————–

Desafios da etapa e propostas de solução

Etapa Quantica (30/out) – while(Scanner.hasnext()){}


A etapa Quantica do III BXComp ocorreu na quarta-feira (30/10) e contou com a participação de 11 equipes. Mais uma vez tivemos uma etapa “temática” sobre a empresa que apoia o III BXComp, tivemos três desafios, um grande número de submissões erradas, sendo que apenas 3 equipes conseguiram resolver ao menos algum desafio:

A equipe O Quarteto Fantástico se destacou e conseguiu resolver 2 desafios, enquanto isso as equipes Federais e Só de Zuera conseguiram resolver um dos desafios. A maior dificuldade era lidar com a entrada, já que não tinhamos definido uma quantidade de casos de teste ou condição de parada no enunciado dos desafios. As equipes tentaram desde não colocar laço nenhum até colocar um laço infinito (while(true)), no primeiro caso apenas o primeiro caso de teste era resolvido, e na segunda após resolver todos os casos o programa tentava ler uma entrada que simplesmente não existia acarretando uma exceção! O mais recomendado seria utilizar um laço do tipo while(scanner.hasNext()){} que leria a entrada completamente, e quando não houvesse mais entrada a condição se tornaria falsa e o programa terminaria.

O primeiro desafio, Aluno_Engajado, obteve 16 submissões e apenas uma correta, feita pela equipe O Quarteto Fantástico.

O segundo desafio, Cafe, teve 12 submissões, dentre elas três corretas, feitas pelas equipes O Quarteto Fantástico, Federais e Só de Zuera.

O terceiro desafio não teve nenhuma solução aceita, e 8 tentativas. A equipe Só de Zuera foi a que chegou mais perto de resolver o desafio, resolveu toda a lógica do desafio mas usou um laço infinito o que retornou um Runtime Error no final da execução.

Semana que vem teremos a Etapa Final do III BXComp, com a premiação da equipe campeã e a entrega de medalhas para as 3 melhores colocadas! contamos com a presença de todos!!

Clique aqui para visualizar as fotos tiradas nessa etapa!

——————————————————————–

Desafios da etapa e propostas de solução

ETAPA 5 (23/OUT) – IT’S A TRAP! NO, MANY TRAPS IN OWL CITY!

A quinta etapa do III BXComp ocorreu na quarta-feira(23/10) e contou com a participação de 11 equipes. Por conta do período de inscrições para o nosso processo seletivo, que vai até o dia 28/10, os calouros se depararam com uma etapa, digamos, “temática”. Três exercícios com histórias passando, direta ou indiretamente, por temas envolvendo processos seletivos.

Se na etapa passada os calouros enfrentaram quatro desafios a serem resolvidos, hoje, ao abrirem o .java… Nada. Nem um scanner implementado. No máximo, uma mensagem de boa sorte. Contudo, essa não foi a maior das dificuldades enfrentadas pelos competidores nesta etapa, que teve como destaques as equipes “Só de Zuera” e “Gnus da Savana”, que submeteram dois exercícios corretamente. Assim, a equipe “Só de Zuera” disparou no ranking geral, abrindo uma vantagem de 8 pontos, e a equipe “Gnus da Savana” entrou na zona das três equipes mais bem-colocadas. Outras quatro equipes resolveram um dos exercícios.

O primeiro desafio, Processo Seletivo, foi o mais dificultoso da etapa, tanto que nenhuma equipe a conseguiu submeter dentro dos 120 minutos. A lógica do problema em si não era tão complexa. Os programadores deveriam fazer um código que calculasse a média ponderada dos candidatos e retornasse, por ordem decrescente de média final, os três candidatos mais bem colocados no processo seletivo. No entanto os competidores tiveram que prestar atenção em diversos detalhes do enunciado, principalmente no que se dizia às regras para o “candidato passar no processo seletivo”. A entrada e saída dos casos de teste também foi outro ponto que gerou certa dificuldade aos participantes, visto que em um dos casos de teste havia somente dois candidatos e nenhuma nota atribuída a eles. Vale ressaltar que, para essa situação, não havia processo seletivo por número insuficiente de candidatos inscritos, tal como estava no enunciado.

O segundo desafio, Insensibilidade, foi o desafio que mais teve submissões das três, sendo que ela foi resolvida por cinco equipes. Seu problema consistia em fazer o cálculo do “nível de insensibilidade” de uma determinada coruja, e isso era feito calculando o quadrado da distância entre a posição de um objeto e a posição adivinhada pela coruja, somando-se esses valores para obter o resultado esperado. No caso deste exercício, a entrada e a saída eram os pontos onde o competidor deveria se atentar mais. Cada caracter impresso de uma forma diferente do dado no enunciado geraria uma “Wrong Answer” por parte do corretor dos códigos, já que a “Presentation Error” aparece somente em casos onde o número de espaços em branco não corresponde com a da saída esperada. Alguns dos competidores tiveram dificuldades nesse ponto do desafio.

O terceiro desafio, Prizza, foi solucionado por três equipes, e a sua resolução também era simples. Dada uma “pizza” circular (ou seja, a última fatia é adjacente à primeira e vice-versa), o código feito pela equipe deveria imprimir o maior número possível de fatias de pizza de brócolis que poderiam ser comidas consecutivamente (cada fatia de pizza de brócolis era representada pelo número zero). O ponto mais trabalhoso do desafio era o de fazer uma lista circular que representasse a propriedade da pizza dada no enunciado.

Como foi possível perceber, a etapa de hoje foi marcada por diversos detalhes nas quais os competidores deveriam prestar máxima atenção para obterem sucesso. Além disso, nesta etapa foi exigido aos competidores, em todos os exercícios, o tratamento dos espaços em branco da saída, o que ocasionou num número razoável de submissões com “Presentation Error”. Em cada desatenção, os participantes poderiam cair em pequenas “armadilhas”, muitas vezes difíceis de serem percebidas, tornando-se difícil sair delas.

Esperamos que todos preparem-se para a Etapa Quantica, que será especial e será uma boa chance para as equipes darem um “boost” em suas respectivas classificações, visto que a etapa terá a sua pontuação acrescida em 50%. Bons estudos, e até a próxima semana!

Clique aqui para visualizar as fotos tiradas nessa etapa!

___________________________________

Desafios da etapa e propostas de solução

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

ETAPA 4 (16/OUT) – PONTES INDECIFRÁVEIS

A quarta etapa do III BXComp ocorreu na quarta-feira(16/10) e contou com a participação de 10 equipes. Após duas semanas sem etapas, as equipes foram surpreendidas com 4 desafios a serem resolvidos, porém a quantidade de problemas e o clima frio e chuvoso não foram capazes de comprometer o desempenho das equipes, que conseguiram resolver no mínimo dois desafios cada. A única que equipe que resolveu apenas 1 desafio foi a “Federais”, que não pontuou porque apenas um integrante compareceu a etapa. O destaque ficou para as equipes Arctic Koalas, Só de Zuera, Sigma, GM³, Quarteto Fantástico e Os Tentação, que empataram com um total de 3 desafios solucionados. Infelizmente, nenhuma equipe resolveu o grande desafio do dia “Caminho das Pontes”, fazendo com que nenhuma equipe ganhasse vantagem significativa na pontuação.

O primeiro desafio, Caminhos das Pontes, apesar do enunciado extenso e de aparentar enorme complexidade, não possuía muita dificuldade na resolução. O desafio constituía-se basicamente de ler o número de pilares (N), número de pontes(M) e montar uma matriz de M x 3 para mapear os valores em cada um dos casos de testes. Feito isso, o próximo passo era basicamente ler todos os números de buracos de todos os caminhos possíveis a partir do pilar que se estava no momento e pegar o caminho com menor número de buracos e somar esse valor em uma variável responsável por contar o número total de buracos, repetindo o processo de acordo com sua nova posição atual até que a posição represente o final do desfiladeiro (N+1).

O segundo desafio, Emoticons, pedia às equipes para que identificassem o número de frases em um texto em que se tinha o aparecimento de emoticons. A pegadinha nesse exercício é que não se pedia para contar o número total de emoticons presentes no texto, apenas o número de linhas que tinham um quantidade de emoticons maior ou igual a 1.

O terceiro desafio pedia uma simples referência de um número com uma cidade. Foi o exercício mais fácil da tarde, todos os participantes conseguiram. O único problema que podia ser enfrentado era a falta de acentos nos nomes das cidades, algumas equipes submeteram respostas erradas por isto.

O quarto desafio cobrava o cálculo de uma política de impostos. Este problema tinha um método sc.useLocale(). Este método muda as configurações do scanner e foi usado para padronizar a entrada e a saída do programa, uma vez que sem ele a entrada seria com números separados por vírgulas e a saída seria com números separados por pontos. Este exercício não teve muitos problemas.

A próxima etapa ocorrerá na semana que vem no dia 23/10. Contamos com a presença de todos o/

Clique aqui para visualizar as fotos tiradas nessa etapa!

___________________________________

Desafios da etapa e propostas de solução

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

ETAPA 3 (26/SET) – AL CAPONE ESTÁ TE MANDANDO UM SMS

A terceira etapa do III BXComp ocorreu na quinta-feira(26/09) e contou com a participação de 12 equipes. Apesar de algumas pegadinhas nos desafios, as equipes já se demonstraram “vacinadas” a certos problemas (leia-se manipulação de Strings) e parece  que já entenderam o ritmo da competição.

Havia dois desafios: telefone e fugitivo; o primeiro tratava de uma “simples” conversão de letras para números seguindo o padrão de um telefone comum o maior problema poderia ser a manipulação de Strings, mas a etapa anterior ajudou para que os competidores já estivessem preparados para isso, por isso foi o desafio que as equipes submeteram e terminaram primeiro. No começo do desafio foi constatado pela organização que o código fornecido havia um erro na estrutura de repetição While (deveria ser estritamente menor) sem isso gerava “runtime error”. As submissões erradas enviadas antes do aviso que foram inválidas por dar esse erro, foram analisadas e desconsideradas na pontuação final.

O segundo desafio, era sobre o fugitivo Al Capone que andava em 4 direções distintas, e não poderia fugir do raio específico próximo a delegacia em nenhum momento, sim… isso mesmo… nenhum momento, e foi nesse detalhe que muitas equipes pecaram, caso ele saísse, o programa deveria dar uma mensagem específica, porém o teste deveria ser executado até o final, mesmo se ele voltasse a distancia permitida, o alerta deveria ser dado.  No meio da etapa foi alertado à organização sobre uma diferença da escrita de saída informada no enunciado referente a mensagem, o problema foi alertado aos participantes sem gerar problemas maiores.

Gostaríamos de parabenizar a equipe Arctic Koalas pelo primeiro lugar e completando o pódio a equipe Tempo de Execução em segundo lugar e equipe Só de Zuera em terceiro lugar.

Bom, seguindo o cronograma do campeonato, agora teremos uma pausa de duas semanas nas etapas e voltaremos no dia 16/10 com todo gás e cheio de surpresas.  Estudem, preparem-se e Boa Sorte :)

Clique aqui para visualizar as fotos tiradas nessa etapa!

___________________________________

Desafios da etapa e propostas de solução

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

ETAPA 2 (18/SET) – if(Problema.equals(“String”))

Ao som da Bateria Bandida, começou a segunda etapa do BXComp 2013. Apesar de ter atrapalhado as equipes no começo da etapa, este não foi o maior desafio: as Strings estavam lá para atormentar a vida dos competidores.

Os 3 desafios da etapa envolviam a manipulação de Strings: o primeiro desafio, “Números Primos”, os calouros deviam fazer a soma de números primos que viriam em uma String de entrada; já em “Dígitos Falhos”, era necessário retirar de um número, as ocorrências do dígito fornecido na entrada; por último, “Frequência” exigia que os competidores verificassem em uma String, qual era a letra que mais ocorria na mesma.

Algumas equipes não submeteram nenhuma solução para um desafio da etapa e nenhuma conseguiu solucionar os três desafios propostos. Apenas uma equipe submeteu a resolução para o problema “Frequência”, mas, infelizmente, não estava correta. Apesar disso, gostaríamos de parabenizar a equipe Só de Zuera, que conseguiu resolver dois desafios.
Mas calma! O Campeonato está só no começo! Observamos as dificuldades mais comuns entre as equipes e, para ajudá-los, seguem algumas dicas que podem ser muito úteis nas próximas etapas:

  • Os problemas exigiam a manipulação de String. Por isso, não deixem de estudar a biblioteca de String do java. Nessa etapa, por exemplo, poderia-se usar os seguintes métodos da classe String: equals, replace, replaceAll split;

  • Também poderia-se usar o método parseInt da classe Integer para converter uma String em um número. Isso era necessário para fazer verificar se o número fornecido na entrada era primo, no caso do desafio “Números Primos”, por exemplo;

  • Outra coisa importante para se saber é a diferença entre String vazia e String nula. String vazia seria quando utilizamos System.out.println(“”) e String nula, quando fazemos String x=null;

  • É importante ler as especificações do enunciado! Algumas equipes receberam “Presentation Error” como resposta porque não pularam a linha, conforme era solicitado no enunciado, após a saída do último caso de teste dos “Dígitos Falhos”;

  • Por último, notamos que muitas equipes tentaram converter uma String em um inteiro no “Dígitos Falhos”. O problema foi que o desafio foi testado tendo como entrada números grandes, que não cabem em um inteiro (e dariam Runtime Error), como “23454324543423” que, inclusive, encontrava-se no enunciado. Não era necessário converter a String em um inteiro, mas caso a equipe desejasse, poderia ser feito convertendo-a para Long, por exemplo, que conteria o número.

Conforme avisamos na semana passada, essa etapa valia 12 pontos, sendo dados 4 pontos para cada desafio que a equipe acertasse.

Aproveitem as dicas e se preparem para a próxima etapa! Não deixem de conferir também a solução que propusemos para os desafios.

Até lá :)

Clique aqui para visualizar as fotos tiradas nessa etapa!

___________________________________

Desafios da etapa e propostas de solução

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

ETAPA 1 (11/SET) – Começou!!!

A primeira etapa do III BXComp ocorreu na quarta-feira (11/09) e contou com a participação de todas as equipes inscritas, com exceção da equipe Ultimo.prox que teve apenas um representante. As equipes foram instruídas sobre a forma de manipular o sistema BOCA, regras gerais do campeonato e de utilização do laboratório. Em seguida os calouros responderam um questionário de auto avaliação e expectativas quanto ao campeonato.

Em seguida, deu-se início à etapa e as equipes tiveram de resolver dois problemas denominados “Bissexto” e “Jogo da Velha”. No primeiro, os participantes deveriam desenvolver um algoritmo que verifica se um conjunto de anos é bissexto. O segundo desafio solicitava que os competidores definissem o vencedor de uma partida de jogo da velha com base em uma matriz 3×3 preenchida com “X” e “O”.

As equipes se saíram muito bem, mas não antes de verem “Runtime Error” algumas vezes. A principal dúvida foi quanto ao uso da classe Scanner. O seu método hasNext() não permitia que o programa encerrasse durante os testes das equipes, isso é normal. Quando se testa durante o desenvolvimento do algoritmo a entrada vem do teclado, e por isso o software sempre está aguardando por mais linhas de entrada. Já durante os testes do sistema BOCA, a leitura é feita de um arquivo de texto, que eventualmente acaba e encerra a execução do algoritmo normalmente. Sugerimos que para a continuidade do campeonato vocês estudem um pouco sobre a classe Scanner e as diversas formas de fazer a leitura de uma entrada.

Vocês podem conferir a resolução de cada desafio proposta pela organização nos links no final desse post.

Por ser a primeira etapa ela valeu 2 pontos, 1 para cada desafio resolvido. Não foram consideradas submissões erradas nem tempo de resolução. Mas a partir da próxima etapa esses fatores serão cruciais para a classificação, e as etapas passarão a valer 12 pontos. Até a próxima quarta!

Clique aqui para visualizar as fotos tiradas nessa etapa!

___________________________________

Desafios da etapa e propostas de solução

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