Em Outubro se realizo o primeiro quebra-pau de linguagens Webly, organizado pela Webly. Todas as informações do evento podem ser encontradas aqui, mas basicamente consistia no seguinte:
Dados 16 times, o programador deverá realizar os jogos entre cada 2 países/seleções com placar aleatório, eliminando os times perdedores. Depois, com os 8 vencedores restantes definir mais 4 vencedores, assim até a final e definição do campeão. Cada jogo deverá ser impresso na tela com o placar e os times adversários
O resultado final pode ser acessado aqui. O vencedor do desafio conseguiu implementar uma solução em somente 215 caracteres, utilizando Ruby. Minha solução teve 334 caracteres, me levando a conseguir a primeira posição na categoria JavaScript, que fico também detrás de Python e PHP. O código que eu apresentei (com comentários) foi o seguinte:
/*
w = texto final a ser exibido
r = função random
R = função de arredondamento
b = quebra de linha
q = 'length'
a = array de países
i = índice
f = gols pais1
c = gols pais2
*/
w = "", r = Math.random, R = parseInt, b = "\n", q = "length";
/*
string com países separados por vírgula => converter para array =>
ordenar aleatóriamente ( 0.5 - numero aleatório entre 0 e 1)
*/
a = "Itália,França,Alemanha,Portugal,Brasil,Argentina,Inglaterra,Ucrânia,Espanha
Holanda,Suíça,Suécia,Austrália,México,Uruguai,Gana"
.split(",").sort(
function() { return .5 - r() }
);
/* para nada, sempre que exista a[1] */
for ( {}; a[1];) {
/*
string com mensagens => converter para array => selecionar o correspondente de acordo a quantidade de países
dentro do array (16, 8, 4 ou 2) e aumentar a quebra de linha
*/
w += ",,F,,Semif,,,,Quartas de f,,,,,,,,Oitavas de f"
.split(",")[a[q]] + "inal:" + b;
/* para i = 0, sempre que exista a[i] */
for (i = 0; a[i];) {
/* para nada, sempre que f (numero aleatório entre 0 e 5) seja igual a c (numero aleatório entre 0 e 5) */
for ( {}; (f = R(r() * 6)) == (c = R(r() * 6)); ) {}
/*
adicionamos a w o nome do primeiro pais, os gols do primeiro pais, 'X', o segundo pais,
os gols do segundo pais, '-', o nome do primeiro ou segundo pais dependendo
de se f for menor ou não a c
*/
w += [a[i],f,"X",a[i + 1],c,"-",a[i + (f < c)],
!a[2] ? "campeão" : b].join(" ");
a.splice((i++ + (f > c)), 1);
}
w += b;
}
alert(w);
O resto dos códigos dos demais participantes podem ser visualizados aqui.
Agradeço a Webly pela iniciativa, foi um desafio muito divertido e fico esperando pelo segundo.
0 respostas ate agora ↓
Todavia não existem comentários... Arrasa preenchendo o formulário embaixo.
Deixar um comentário