punto 8 LaTeX.tex 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. \begin{problema}{medallero}{j: JJOO}{[(Pais, [\ent])]}
  2. //Se asegura que el resultado y el medallero sin repeticiones tengan los mismos elementos.\newline
  3. \asegura{mismos(result, sacarSinMedallas(crearMedallero(j)))}
  4. //Se asegura de que el medallero est\'e ordenado de mayor a menor.\newline
  5. \asegura{medalleroOrdenado(result)}
  6. \aux{listaNacionalidadesAtletas}{j: JJOO}{[Pais]}{[nacionalidad(at) | at \leftarrow atletas(j)]}
  7. //Crea una lista a partir de las nacionalidades de los atletas. Si hay dos atletas rusos, Rusia aparece dos veces.\newline
  8. \aux{sacarRepeticiones}{ls : [T]}{[T]}{[ls[x] | x \leftarrow [0..|ls|-1], \neg en(ls[x], ls[0..x-1])]}
  9. //Dada una lista cualquiera, describe una lista con una sola aparici\'on de cada elemento de la lista original.\newline
  10. \aux{listaPaises}{j: JJOO}{[Pais]}{sacarRepeticiones(listaNacionalidadesAtletas(j))}
  11. //ListaPaises decribe la lista de los pa\'ises participantes de los juegos, sin repeticiones.\newline
  12. \aux{cuenta}{x: T, a: [T]}{\ent}{|[y | y \leftarrow a, y == x]|}
  13. //Cuenta las apariciones del elemento x en la lista a.\newline
  14. \aux{nacionalidadPrimerosTres}{c:Competencia}{[Pais]}{\newline
  15. [ifthenelse(i \leq |ranking (c)|-1, nacionalidad(ranking(c)[i]), "Narnia") | i \leftarrow [0..2]]}
  16. //Dada una competencia finalizada, describe una lista con los primeros tres pa\'ises del ranking. Si el ranking tiene menos de tres elementos, rellena los otros con Narnia.\newline
  17. \aux{ganadoresMTotales}{M: \ent, j: JJOO}{[Pais]}{\newline
  18. [nacionalidadPrimerosTres(c)[M] | dia \leftarrow [1.. jornadaActual(j)], c \leftarrow cronograma(j, dia), finalizada(c)]}
  19. //Describe una lista de todos los pa\'ises que ganaron bronce hasta ahora. Si gan\'o varias veces, aparece varias veces en la lista.\newline
  20. \aux{crearMedallero}{j: JJOO}{[(Pais, [\ent])]}{\newline
  21. [(p, [cuenta(p, ganadoresMTotales(0,j)), cuenta(p, ganadoresMTotales(1,j)),\newline cuenta(p, ganadoresMTotales(2,j))]) | p \leftarrow listaPaises(j)]}
  22. //Para cada pa\'is participante en los juegos, describe una tupla con el nombre del pa\'is y una lista que consiste en tres ints, que son la cantidad de veces que el pa\'is aparece en la lista de ganadores de medallas de oro, de plata y de bronce respectivamente. Como Narnia no participa en los juegos, no aparece en la lista resultante.\newline
  23. \aux{sacarSinMedallas}{lista : [(Pais, [\ent])]}{[(Pais, [\ent])]}{[x | x \leftarrow lista, sgn(x) \neq [0,0,0]]}
  24. //Dada una lista de tuplas de pa\'ises y listas de sus respectivas medallas, describe una lista subconjunto la anterior en la que solo aparecen los pa\'ises que ganaron alguna medalla.\newline
  25. \aux{medalleroOrdenado}{lista : [(Pais, [\ent])]}{Bool}{\newline
  26. (\forall x \leftarrow [0..|lista|-2]) ((sgd(lista[x])[0] \geq sgd(lista[x+1])[0]) \newline
  27. \vee ((sgd(lista[x])[0]==sgd(lista[x+1])[0]) \wedge (sgd(lista[x])[1] \geq sgd(lista[x+1])[1]))\newline
  28. \vee ((sgd(lista[x])[0]==sgd(lista[x+1])[0]) \wedge (sgd(lista[x])[1]==sgd(lista[x+1])[1]) \wedge (sgd(lista[x])[2] \geq sgd(lista[x+1])[2])))}
  29. //Dada una lista de paises con sus medallas [oro, plata, bronce], medalleroOrdenado vale true si todo elemento de la lista tiene m\'as o igual medallas de oro que el siguiente, o tiene igual medallas de oro pero m\'as o igual platas que el siguiente, o tiene igual medallas de oro y de plata pero m\'as o igual de bronce que el siguiente.\newline
  30. \end{problema}