Hay en Internet un protocolo de transporte llamado UDP (del inglés User Datagram Protocol o protocolo de datagramas de usuario) que a los profanos en la materia les sorprende cuando lo descubren.
En él, el emisor puede enviar el mensaje sin haber establecido previamente una conexión con el receptor, por lo que es muy ligero en cuanto a recursos consumidos. El precio que hay que pagar por esa ligereza es doble: los mensajes enviados pueden no llegar (y no hay forma de saberlo) y además pueden llegar en desorden.
Aunque se puede pensar que esas dos pegas lo convierten en un protocolo inservible, la realidad es que es muy utilizado. No sólo se utiliza para protocolos de la capa de aplicación como DHCP o DNS; también es utilizado para transmisión de audio y vídeo en tiempo real o juegos on-line.
Como ejemplo de que los clientes pueden recuperarse ante los fallos de comunicación que pueda haber, pensemos en un escenario concreto. Imaginemos que el emisor está enviando números grandes que, sabemos, son siempre divisibles por 900. Aún cuando los dígitos lleguen en desorden, es posible saber si, al menos aparentemente, no se ha perdido ningún dígito. Incluso en el caso de perderse alguno, se puede especular sobre cuáles habrán sido.
La entrada comienza con una línea que contiene el número de casos de prueba que vendrán a continuación.
Cada caso de prueba es una línea de hasta 100 caracteres con los dígitos (quizá en desorden) recibidos.
Por cada caso de prueba se escribirá COMPLETO si los dígitos recibidos se pueden reordenar de forma que se tenga un número divisible por 900. En otro caso, se escribirán los dígitos que han podido perderse por el camino. Si hay más de un dígito, se escribirán en orden creciente. En caso de haber varias alternativas, se elegirá aquella que requiera menos dígitos.
4 9 1080 108 08
00 COMPLETO 0 01