Giter Site home page Giter Site logo

personasvivas's Introduction

Ejercicio lógico

El ejercicio consiste en calcular el año en el cual más personas estuvieron vivas dada una lista de las fechas de nacimiento y defunción de un grupo de personas.

Requisitos para su ejecución

  1. Java JDK en su versión 8 o superior.
  2. Un data de entrada en formato JSON, en el proyecto se incluye uno de ejemplo. Si se desea utilizar otro data considerar lo siguiente:
    1. Deberá contener un key raíz llamado "data"
    2. Esta key contendrá un arreglo de objetos
    3. Cada objeto deberá contener dos keys "birthYear" y "deathYear" y el valor debe ser númerico.
    4. Se deberá sustituir el data de ejemplo ubicado en la ruta src/main/resources

Explicación de la lógica en el programa

El cálculo se realiza basandose en lo siguiente:

  1. Se genera un arreglo para contener los años de los nacimientos, y otro para las defunciones.
  2. Con los arreglos por medio de la clase Collection, se genera un TreeMap por cada arreglo, en donde las keys será el año y sus values será la frecuencia con la que se repite ese año en el arreglo.
  3. Con los TreeMap se procede a iterarlos, para generar un nuevo TreeMap, en el cual las keys será el año, y los values será el acumulado de nacimientos o defunciones hasta ese año.
  4. Posteriormente con últimos TreeMaps se genera un HasMap, el cual contendrá como keys el año, y los values será la diferencia del acumulado de nacimientos en ese año y el acumulado de defunciones en el año anterior, ya que las defunciones ocurridas en ese año son excluidas en el conteo para la cantidad de personas vivas.
  5. Finalmente se obtiene el mayor value en el HashMap que contiene las personas vivas por año, y se buscan las keys que contengan ese valor, se retorna el arreglo de años, en caso de ser mas de uno, que tienen la mayor cantidad de personas vivas.

Versión 2 de la solucion

Se creó una nueva versión más optimizada de la solución, se ubica en la clase PersonasVivasV2. En esta versión se evita la creación de los TreeMaps del paso 3 y realizando el cálculo del paso 4 de manera inmediata.

personasvivas's People

Contributors

farivasf11 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.