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".
| Acerca de este evento | |
| Escenario del evento | |
| Cómo participar |
División | nivel avanzado |
Fecha límite | Viernes, 22 de febrero de 2008 (8:00 a. m., hora del Pacífico) |
Puntos concedidos | 20 |
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. |
Una vez que haya completado su script, haga clic en el vínculo correspondiente para enviar su participación:
| • | |
| • | |
| • |
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