Los Juegos de Invierno de Scripting de 2008

Evento 3 de nivel avanzado: Ganador instantáneo (por eliminación)

Importante: Una vez transcurrida la fecha límite para este evento, podrá encontrar las soluciones de VBScript, Windows PowerShell y Perl en el Script Center.

En "Ganador instantáneo (por eliminación)", los participantes deben escribir un script que determine el ganador de unas elecciones mediante "eliminatoria instantánea".

*
On This Page
Acerca de este eventoAcerca de este evento
Escenario del eventoEscenario del evento
Cómo participarCómo participar

Acerca de este evento

División

nivel avanzado

Fecha límite

Viernes, 22 de febrero de 2008 (8:00 a. m., hora del Pacífico)

Puntos concedidos

20

Top of pageTop of page

Escenario del evento

A decir verdad, explicar el Evento 3 es probablemente más difícil que completarlo correctamente. Pero ahí va.

Una de las últimas tendencias en las votaciones y elecciones es la elección del candidato mediante "eliminación instantánea". El objetivo de este evento es determinar el ganador de unas elecciones.

Por supuesto, cuando se trata de elecciones mediante eliminación instantánea, se dan todo tipo de variaciones. La nuestra funciona así. Cuatro candidatos se presentan al cargo:

Ken Myer

Jonathan Haas

Pilar Ackerman

Syed Abbas

En unas elecciones normales, los votantes deben votar sólo a uno de estos candidatos. Sin embargo, en nuestras elecciones mediante eliminación instantánea, los votantes votan a los cuatro candidatos, en orden de preferencia.. Por ejemplo, supongamos que un usuario cree que Jonathan Haas es el más adecuado para el puesto, seguido (por orden) de Pilar Ackerman, Syed Abbas y Ken Myer. En ese caso, la papeleta del votante se parecería a lo que mostramos a continuación:

1.

Jonathan Haas

2.

Pilar Ackerman

3.

Syed Abbas

4.

Ken Myer

Esta parte es fácil, pero ahora se complica un poco. Cuando llega la hora de contar las papeletas, sólo se cuentan los votos de la primera elección de los votantes; eso significa que, en esta votación, Jonathan Haas obtiene un voto. Después de haber contado los votos, se comprueba si alguno de los candidatos ha recibido más del 50% de los votos. Imaginemos que Jonathan Haas ha recibido el 53% de los votos. En ese caso, Jonathan Haas es el ganador y, por lo tanto, su script debe devolver este resultado junto con el porcentaje de los votos de Jonathan:

The winner is Jonathan Haas with 53% of the vote.

¡Felicidades, Jonathan!

Pero, imaginemos que nadie obtiene más del 50% de los votos. En ese caso, el candidato que obtuvo menos votos queda eliminado. Por ejemplo, supongamos que, después de la primera ronda, los candidatos recibieron los porcentajes de votos siguientes:

Pilar Ackerman

40%

Syed Abbas

30%

Ken Myer

20%

Jonathan Haas

10%

Puesto que Jonathan Haas obtuvo el porcentaje total más bajo, queda eliminado. Eso también significa que se deberán volver a contar los votos, aunque con una excepción: no se registrará ningún voto para Jonathan Haas. En lugar de eso, Jonathan Haas quedará eliminado de todas las papeletas. Recuerde al votante que votó así:

1.

Jonathan Haas

2.

Pilar Ackerman

3.

Syed Abbas

4.

Ken Myer

Eso significa que esta papeleta ahora quedará así:

1.

Pilar Ackerman

2.

Syed Abbas

3.

Ken Myer

Veamos cómo funciona. Una vez que Jonathan Haas queda eliminado de la votación, Pilar Ackerman (que empezó siendo la segunda opción del votante) pasa a ser la primera de la lista. Vuelven a contarse los votos. Si nadie recibe más del 50% de los votos, el candidato que recibe el porcentaje total más bajo quedará fuera de la votación y los votos se contabilizarán una última vez.

¿Lo ha entendido todo? De acuerdo. Lo que su script debe hacer es leer el archivo de texto Votes.txt, que se encuentra en el Paquete de Participantes de los Juegos de Scripting (a propósito, este archivo debe colocarse en la carpeta C:\Scripts). A continuación, el script debe dar una pasada inicial por todas las papeletas, de forma que contabilice los votos de los cuatro candidatos. Cada línea del archivo de texto representa una sola papeleta, donde están los cuatro candidatos enumerados en orden de preferencia y separados por comas. Presenta este aspecto:

Jonathan Haas,Pilar Ackerman,Syed Abbas,Ken Myer

En este caso, la primera elección del votante ha sido Jonathan Haas. Recuerde que, cuando se cuentan los votos, anotamos sólo la primera elección.

Si ningún candidato recibe más del 50 por ciento de los votos, el candidato con el menor número de votos queda eliminado de la votación. Si Jonathan Haas ha sido el candidato con el menor número de votos, Pilar Ackerman pasa ahora a ser la primera elección del votante y la papeleta presenta este aspecto:

Pilar Ackerman,Syed Abbas,Ken Myer

Una vez que Jonathan Haas quedó eliminado de la votación, la suma total de los votos se restablece a 0 y, a continuación, vuelven a contarse las papeletas revisadas. Si ningún candidato recibe más del 50 por ciento de los votos, el candidato con el menor número de votos queda eliminado de la votación y los votos se cuentan una última vez. Tan pronto como un candidato obtiene más del 50 por ciento de los votos, la elección finaliza y los resultados deben mostrarse de la manera siguiente:

The winner is Syed Abbas with 62% of the vote.

Sí, lo sabemos: es un poco complicado. El truco para resolver el Evento 3 es éste: cuente los votos (recuerde, cuente sólo los votos de la primera elección de los usuarios) y compruebe si alguien obtiene más del 50% de los votos. Si no es así, elimine completamente al candidato que obtuvo el porcentaje de votos más bajo, establezca a 0 la suma total de los votos del resto de candidatos y vuelva a contarlos. ¿Cómo se elimina completamente al candidato que obtuvo el porcentaje de votos más bajo? Lo sentimos, pero no podemos ayudarle en este punto; deberá resolverlo solo.

Nota:. Haga lo que haga, sobre todo, no sobrescriba el archivo Votes.txt. Si lo hace, su participación quedará descalificada. Pero no se preocupe; no es necesario sobrescribir Votes.txt.

Top of pageTop of page

Cómo participar

Una vez que haya completado su script, haga clic en el vínculo correspondiente para enviar su participación:

VBScript de nivel avanzado

Windows PowerShell de nivel avanzado

Perl de nivel avanzado

Si el vínculo no abre automáticamente un mensaje con una dirección predeterminada, envíe un correo electrónico a scripter@microsoft.com y en el asunto del mensaje, escriba Advanced VBScript: Event 3; Advanced Windows PowerShell: Event 3; o Advanced Perl: Event 3.

Lo único que debe hacer es pegar su código en el cuerpo del mensaje y, a continuación, enviar el correo. También puede incluir los datos siguientes:

Un nombre o sobrenombre que podamos usar para identificarle al anunciar los ganadores de los Juegos de Scripting.

El nombre del país al que le gustaría representar. Puede ser su país de nacimiento o el país en el que viva actualmente, pero no tiene por qué ser así; puede representar al país que desee.

El nombre del grupo de usuarios del que sea miembro. Esta información debe incluirse en caso de que su grupo de usuarios tome parte en la Prueba de Grupos de Usuarios.

Sólo necesita escribir estos datos en la parte superior del correo electrónico. Si lo hace así, su correo electrónico (suponiendo que esté enviando su participación para la división de VBScript) probablemente tendrá este aspecto:

Ken Myer
USA
Northern Iowa User Group

For i = 1 to 100
    Wscript.Echo i
Next

Top of pageTop of page