From meidanis@manaus.ic.unicamp.br Tue Nov 25 06:52:06 2003 Date: Wed, 19 Nov 2003 06:42:41 -0200 (BRST) From: Joao Meidanis To: mc600@yahoogrupos.com.br Subject: Campeonato oficial LISP Pessoal, Muitos têm reclamado que fizemos apenas UM campeonato oficial. No intuito de remediar isso e fazer pelo menso uns dez, pegamos de novo todos os jogadores submetidos e compilamos e colocamos para rodar numa maquina mais rápida. Neste processo descobrimos o seguinte (alguns alunos foram até chamados na sala ontem) - O jogador 1411 fazia make-array sem :initial-element. Como consequência, o xlisp inicializada a matriz com NIL, enquanto o CMUCL (sistema em que estamos rodando os camps rápidos) inicializa com 0 (zero). O jogador começou a dar erros inexplicáveis por isso. Consetrtamos colocando :initial-element 0 no código. - O jogador 1664 não se previnia contra pegar o car de NIL numa certa função. Isto ocasionava travamaneot do campeonato, e ele teve que ser eliminado no camp oficial anterior, pois simplesmente não havia o que fazer. O aluno foi chamado e concordou em testar se o troço era NIL antes de pegar o car. Como resultado, seu jogador agora não trava mais. - O jogador 9837 cometeu uma verdadeira heresia: redefiniu a função intersection. Como resultado, funcionava para ele mas atrapalhava os demais que usavam tal função do sistema (incluindo 8146, 8619, 9775, 9841, 11104). NUNCA redefinam funções do sistema! Foi consertado mudando o nome da função dele para my-intersection, que é o correto a fazer se você quer redefinir algo do sistema. Observe que o mecanismo de pacotes não protege contra isso, pois todos importamt as funções do sistema com (lisp::use-package 'lisp) logo as funções do sistema ficam visíveis e propensas a modificação. - O jogador 9775 tinha ficado de fora do camp ofifial anterior provavelmente porque foi perjudicado pelo 9837 como descrito acima. Foi colocado nos camps rápidos sem modificação. - O jogador 9841 não se prevenia contra um possível loop infinito numa de suas funções. Como resultado, ele travava o campeonato e tinha sido excluído do camp oficial anterior. O aluno foi chamamdo e concordou em modificar a função de modo a prevenir-se contra o loop infinito, retornando NIL neste caso. Pode ser que isso faça-o desclassificar-se mais que o normal mas pelo menos agora ele não trava o campeonato. Melhor uma nota < 5 do que nenhuma nota. - O jogador 10024 fazia make-array sem :initial-element. Foi consertado incluindo :initial-element NIL nos seus make-array. - O jogador 10086 fazia make-array sem :initial-element. Foi consertado incluindo :initial-element NIL nos seus make-array. Com estas modificações todos os 62 jogadores submetidos compilam e não travam o campeonato, e estamos realizando camps todos contra todos que estão levando meia hora apenas para o campeonato inteiro. Hoje mesmo devemos ter os novos resultados. Desnecessário dizer que as notas serão afetadas, algumas para mais, outras para menos, mas espero que não muito na maioria dos casos, e me parece que as mudanças que fizemos foram todas no sentido de tornar os resultados mais justos. Obrigado pelo empenho que todos colocaram em seus jogadores. Estou conviccto de que se temos um campeonato de alto nível é graças a vocês. -- Joao Meidanis IC-UNICAMP Institute of Computing P.O.Box 6176 University of Campinas, Brazil 13084-971, Campinas, Sao Paulo WWW: http://www.ic.unicamp.br/~meidanis Brazil