Ir al contenido principal

Reto de Programación para Hackathon


Este problema lo resolví para un joven mexicano que necesitaba ayuda. El problema es interesante y espero ustedes puedan compartir su propia solución, compartí el problema en los grupos de facebook, pero al parecer no les gustan los retos, más que resolver lo más evidente XD.

Reto de Programación:
El primer objetivo del reto es resolver el problema, siéntete libre de usar google así cómo librerías estándar(ej. collection classes, Lists, etc). Una vez que tengas la solución, reflexiona e intenta hacerla lo más eficiente posible (imagina que esta clase será usada con millones o billones de elementos).

El Problema
Escribe una clase para almacenar elementos (pueden ser enteros, o lo que sea), puedes asumir que la clase se utilizará correctamente, no tienes que preocuparte acerca de manejo de errores, hay tres operaciones que debes de escribir:

insert(element)
El método insert toma un elemento, y lo inserta en la colección. Insert devuelve (retorna) un identificador para ese elemento insertado, qué puede ser usado para remover un elemento en particular dentro de la colección, el tipo de dato puede ser un número, dirección en memoria, string, lo que tú quieras. 

Nota 1: valores duplicados deben ser insertados. 
Nota 2: El identificador no deberá ser invalidado por operaciones subsecuentes(sólo cuando sea removido).

remove(idenficador)
El método remove toma un identificador (retornado por un insert previo) y remueve el elemento de la colección. Este método deberá retornar el valor de elemento removido.

removeLargest()
Este método encuentra el elemento con mayor valor dentro de la colección. Una vez encontrado lo remueve de la colección, y retorna su valor.

Si dos elementos tienen el mismo valor, uno de los dos deberá ser removido.
Ejemplo de uso
Collection col = new Collection();
Identifier a = col.insert(40);  // Identifier es lo qué tu
quieras int, string, etc
Identifier b = col.insert(25);
Identifier c = col.insert(30); 
col.remove(C); // retorna 30
col.removeLargest(); // retorna 40
col.insert(50); // retorna un identificador
col.removeLargest(); // retorna 50
col.removeLargest(); // retorna 25

Después de resolver el problema:

Redacta en un documento lo siguiente:

  • Describe el desempeño esperado del programa, así cómo el por qué de tu solución.


  • Qué tan cerca crees que estuviste de la solución ideal?


Si tuvieras una semana para trabajar en el el, que mejorarías de tu código?

  • Envía tu código en Java procura que sea lo más limpio y claro posible. Intenta

resolverlo dentro de una media hora o una hora, no tiene que estar perfecto para que lo
envies. ¡SUERTE!.



Comentarios

Entradas más populares de este blog

Configurar SQL Server 2005 para poner a la escucha el puero 1433

Como ustedes ya saben para poder conectarse a una base de datos sql a través de JDBC es necesario que el puerto 1433 se encuentre a la escucha de conexiones, muchos de nosotros hemos tenido este problema, bueno la solución es configurar a  través de la aplicacion "SQL SERVER CONFIGURATION MANAGER", ver figura numero1. fig 01 Luego hacer doble click en el item "Protocols for SQLEXPRESS", ver figura 02 fig 02 Como podemos observar en la figura 02 en la area de contenidos existe un item llamado "TCP/IP" este tiene que estar habilitado o en ingles "enabled" bueno ahora en este item hacemos un doble click para que nos aparezca una ventana como la siguiente, en la cual nos vamos a ubicar en la pestaña "IP ADRESSES", en esta pestaña se tiene que configurar los puertos. fig 03  En la figura 04 se observara que todos los item de TCP Dynamic Ports tienen al cero "0" por valor y TCP port esta ...

install mysql 5.6 database on ubuntu 20.04

Command List: wget http://launchpadlibrarian.net/418347043/multiarch-support_2.29-0ubuntu2_amd64.deb sudo dpkg -i multiarch-support_2.29-0ubuntu2_amd64.deb sudo dpkg -i mysql-common_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient18_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient-dev_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqld-dev_5.6.40-1ubuntu14.04_amd64.deb sudo apt install  libtinfo5 sudo apt install libncurses5 sudo apt install -f sudo dpkg -i mysql-community-client_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-client_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-server_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-bench_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-source_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-server_5.6.40-1ubuntu14.04_amd64.deb sudo apt install python2 sudo apt install -f sudo dpkg -i mysql-community-test_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-testsuite_5.6.40-1ubuntu1...

Codigo Fuente del Sistema de Proyección Social

Amigos disculpen por el retraso, a raíz de la ley SOPA y PIPA me entretuve tratando de ver como solucionar mi problema de mi cuenta y mis archivos que estaban contenidos en megaupload,  por esta razon pienso publicarlos en DROPBOX, claro que para que ustedes tengan acceso a la carpeta donde colgaré el código fuente y Script de base de datos necesitaria de sus correos, nadie los obliga a que me los brinden, pero si desean tener el aplicativo completo necesito compartirlo de esta manera, espero me entienda Hasta Pronto. Especificaciones: Instalar Oracle 10g o superior ya sea en version EXPRESS o Enterprise. Instalar JDK 7. Software desarrollado con IDE NetBeans version 7.0.1, el cual soporta JDK 7. Si desean configurar el software para su propia facultad lo único necesario es hacer que el ID de la universidad se 1 en la tabla Universida, ya que lo habia pensado a nivel macro. Bueno me dejan sus correos y los agrego como colaboradores a mi carpeta. ...