viernes, 22 de junio de 2018

Reto 003

Torneo de Fútbol:

En un torneo de fútbol participan k equipos. El torneo se juega con el sistema: “todos contra todos, sin revancha”. Por cada partido donde participa un equipo se dispone de la siguiente información:
* código de equipo (codEq) y
* código de resultado (“P” = perdido, “E” = empatado, “G”= ganado).

Se dispone de un lote de datos conteniendo todos los resultados del torneo, agrupados por codEq ingresados por el usuario.

1. Desarrollar el programa que imprima, por cada equipo, su código y el puntaje total que obtuvo considerando que suma 3 puntos por cada partido ganado y 1 punto por cada partido empatado.
2. Informar, al finalizar el ingreso de datos y sin discriminar por equipo,
cuántos partidos resultaron ganados, cuántos resultaron empatados y cuántos resultaron perdidos.
3. Validar la consistencia del lote de datos; esto es: la cantidad de partidos ganados (pg) debe ser igual a la cantidad de partidos perdidos (pp) y cualquiera de estas cantidades sumada a la cantidad de partidos empatados (pe) debe ser igual que k(k-1): 2pg+pe=k(k-1) y si los datos no son consistentes mostrar un mensaje al usuario.
4. Si el lote de datos es consistente calcular el porcentaje promedio de efectividad de cada equipo dividendo el total de puntos ganados entre el total de puntos jugados. 
5. Por ultimo guardar e imprimir el lote datos en un arreglo multidimensional incluyendo todos los datos listados anteriormente.

Ejemplo: 
Equipo:   PG    PE   PP  Puntaje     efectividad
   A           1        1     1       4                 44 %
   B           0        1     2       1                 11%
   C           2        0     1       6                 66%
   D           2        1     0       7                 78% 


  reto sacado de  ALGORITMOS Y ESTRUCTURA DE DATOS 2014 | ING. PABLO AUGUSTO SZNAJDLEDER

jueves, 14 de junio de 2018

Reto 002

Reto semanal Codecrafters 002.


Verifica Anagramas:


Crea un programa que compare dos cadenas y determine si ambas son anagramas. El programa deberá pedir al usuario que ingrese ambas cadenas y desplegar la salida de acuerdo al siguiente ejemplo:


Ingresa dos cadenas y te diré si son anagramas:
Ingresa la primer cadena: tono
Ingresa la segunda cadena: noto
"tono" y "noto" son anagramas.

Restricciones.

• Implementa el programa usando una función llamada esAnagrama,

 que tome las dos palabras como argumentos y
retorne un valor booleano (true o false). 
• Invocar esta función desde tu programa principal.
• Verifica que ambas palabras tengan la misma longitud.

Retos:

1. Completa este programa sin usar funciones predefinidas del lenguaje.

2. Usa estructuras lógicas de selección(if, else, switch.....) y/o repetición(while,do,for) en su lugar y desarrolla tu propio algoritmo.

PD: para mas ejemplos de prueba puedes ver el siguiente link: http://www.ejemplos.co/50-ejemplos-de-anagramas/


Reto sacado de Hogan P. Brian (2015) Exercises for Programmers Pagina 47, Copyright © 2015 The Pragmatic Programmers, LLC.

Traducción Gabriel Saavedra.

  


jueves, 7 de junio de 2018

Reto 001

Reto semanal CodeCrafters 001


Busca Dígitos.

Un numero entero  es un divisor de un entero  si el resto de .
Dado un numero entero, deberás determinar cuantos dígitos del numero son divisores del mismo entero.

Nota: cada dígito es considerado  único, entonces cada vez que aparezca el mismo dígito deberá ser contado si es que cumple con la condición de ser divisor. (Ejemplo: Para,   es un divisor de  cada una de las veces que aparece  Entonces la respuesta en este caso  es ).

Formato de entrada
La primera linea es un entero, , que indica el numero de casos de prueba.
Las t lineas siguientes contienen cada una, un numero entero, .
Formato de salida
Para cada caso de prueba, cuenta el numero de dígitos en  que sean divisores de n. imprime cada respuesta en una nueva linea.

Ejemplos:

Ejemplo de Entrada 0
2
12
1012 
Ejemplo de Salida  0
2
3
Ejemplo de Entrada 1
2
256
 978 
Ejemplo de Salida  1
1
0

*Reto sacado del sitio HackerRank: https://www.hackerrank.com/challenges/find-digits/problem 
traducción: Gabriel Saavedra.