Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #16 : The Bus Stations
Nos dan una serie de rutas de autobús entre varias ciudades, con su capacidad de autobuses por día, también nos dicen una ciudad de origen y destino y tenemos que decir cuántos autobuses como máximo podemos poner en marcha cada día.
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/07/03 01:49 : Añadida solución de @frisco82
Actualización 2011/07/03 13:50 : Añadido mirror a la solución de @Rosapolis
Actualización 2011/07/19 17:55 : Añadida la solución de @lagunex
Categories: #tuentiContest, Bash, C/C++, General, Interneteando, Linux Tags: autobús, concurso, contest, estaciones, maximo, optimización, paradas, programacion, rutas, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #15 : The Robot
Construimos el software de un robot artista, éste dibujará cuadrados sobre un lienzo, y los colores irán numerados desde el 1. Como entrada nos darán el tamaño del lienzo, el número de cuadrados a dibujar y las coordenadas de cada cuadrado (sabiendo que el 0,0 está en la esquina inferior izquierda), la salida debe ser la superficie ocupada por cada color, ordenada por el número de color.
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/29 09:35 : Añadida mi solución, @blakeyed
Actualización 2011/07/03 01:49 : Añadida solución de @frisco82
Actualización 2011/07/03 13:45 : Añadida solución de @Rosapolis
Actualización 2011/07/19 17:50 : Añadida solución de @lagunex
Categories: #tuentiContest, C/C++, General, Imagen Digital, Linux, PHP Tags: artista, colores, concurso, contest, coordenadas, cuadros, ordenación, pintura, programacion, robot, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #14 : Colors are beautiful
Nos dan una imagen para que la carguemos, y luego nos dirán una componente y un número de línea, para que hagamos la suma de esa componente a lo largo de toda la línea
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/28 08:30 : Añadida solución de @theom3ga
Actualización 2011/06/28 08:35 : Añadida solución de @ricardclau
Actualización 2011/07/03 01:49 : Añadida solución de @frisco82
Actualización 2011/07/03 13:45 : Añadida solución de @Rosapolis
Actualización 2011/07/14 14:55 : Añadida solución de @lagunex
Categories: #tuentiContest, C/C++, General, Imagen Digital, Linux, PHP Tags: componentes, concurso, contest, imagen, lectura, linea, pixel, programacion, puntos, suma, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #13 : The Other Clock
¿ Os acordáis del Challenge #6: The Clock ? En esta ocasión los leds no se apagan todos y se vuelven a encender al cambiar el segundo, ahora sólo se apagarán y se encenderán los leds justos, tendremos que contar cuántos leds se encuenden cada vez.
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/28 08:30 : Añadida solución de @theom3ga
Actualización 2011/06/28 08:35 : Añadida solución de @ricardclau
Actualización 2011/07/03 01:47 : Añadida solución de @frisco82
Actualización 2011/07/03 13:45 : Añadida solución de @Rosapolis
Actualización 2011/07/13 16:10 : Añadida solución de @lagunex
Categories: #tuentiContest, C/C++, General, Linux, PHP Tags: concurso, contest, diferencia, dígitos, display, leds, programacion, reloj, reto, soluciones, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #12 : The Stargate Problem
Tenemos que dar saltos entre planetas. Llegar de la Tierra a Atlantis, dando saltos entre planetas a través de Stargates, cada salto tendrá un coste en tiempo, empezaremos en la fecha estelas 25000 y si podemos llegar en el pasado mejor. Eso sí, si no podemos determinar la fecha, tendremos que decir: “BAZINGA”
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/25 13:23 : Añadida solución de @enwillyado
Actualización 2011/06/28 08:30 : Añadida solución de @theom3ga
Actualización 2011/07/03 01:45 : Añadida solución de @frisco82
Actualización 2011/07/03 13:45 : Añadida solución de @Rosapolis
Actualización 2011/07/13 02:48 : Añadida solución de @lagunex
Categories: #tuentiContest, Bash, C/C++, General, Imagen Digital, Interneteando, Linux, PHP Tags: bazinga, bellman, concurso, contest, dijkstra, estrellas, floyd, ford, planetas, programacion, recopilación, retos, saltos, soluciones, stargate, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #9 : Christmas Lights
Tenemos que implementar un sistema para gestionar luces de navidad con una secuencia especial.
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/28 08:25 : Añadida la solución de theom3ga
Actualización 2011/07/03 01:42 : Añadida solución de @frisco82
Actualización 2011/07/03 13:35 : Añadida solución de @Rosapolis
Actualización 2011/07/04 12:53 : Añadidas soluciones de @lagunex
Aquí llega mi primera aportación a las soluciones de los retos del I concurso de programación de Tuenti. La utilización de números grandes es algo que siempre me llamó la atención, y normalmente utilizo bc cuando necesito algún cálculo. Este reto se podía resolver con bash/sed/bc y, aunque varios lenguajes permiten la utilización de números de precisión arbitraria “de serie” como python y Java, yo decidí hacerlo en C, utilizando la biblioteca GMP.
En un lenguaje como C, es normal que no podamos utilizar números de precisión arbitraria con los operadores normales (+, -, *,…), en este caso tendremos que hacer llamadas a funciones de la biblioteca para realizar las operaciones, tampoco podremos utilizar un printf() normal para mostrarlos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| /**
*************************************************************
* @file hardsum.c
* @brief Tuenti Contest Test Phase
* Sum numbers separated by space line by line
*
* @author Gaspar Fernández <blakeyed@totaki.com>
* @version 0.0.2
* @date 12 jun 2011
*
* http://totaki.com/poesiabinaria
*
*************************************************************/
#include <stdio.h>
#include <string.h>
#include <gmp.h>
/* Huge string */
#define STRSIZE 1000
int main()
{
char bigstr[STRSIZE];
mpz_t tmp, sum;
char * token;
/* Initialize gmp numbers */
mpz_init(tmp);
mpz_init(sum);
/* Read until EOF in stdin */
while (fgets(bigstr, STRSIZE, stdin)!=NULL)
{
/* reset sum */
mpz_set_si(sum, 0);
token=strtok(bigstr, " \n");
while (token!=NULL)
{
gmp_sscanf(token, "%Zd", &tmp); /* Extract number from token string */
mpz_add(sum, sum, tmp); /* Adds numbers */
token=strtok(NULL, " \n");
}
gmp_printf("%Zd\n", sum);
}
return 0;
} |
Para compilar, debemos incluir gmp:
$ gcc -o hardsum hardsum.c -lgmp
Para utilizar este tipo de variables numéricas, primero tendremos que inicializarlas con mpz_init(), otras funciones interesantes son:
- mpz_set_si(): inicializa el número con un valor entero.
- gmp_sscanf(): igual que scanf(), pero con la posibilidad de utilizar estas nuevas variables.
- mpz_add(): realiza la suma de dos números
- gmp_printf(): igual que printf(), pero con la posibilidad de utilizar estas nuevas variables.
GMP tiene muchísimas funciones para realizar gran cantidad de operaciones, se puede consultar la documentación aquí.
Categories: C/C++ Tags: adición, arbitraria, Bash, bc, bits, concurso, gmp, grandes, numeros, precisión, programacion, sed, suma, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #8 : The Biologist Problem
Eres un biólogo, y tienes que examinar dos cadenas de ADN. Recibimos las cadenas por la entrada estándar como un conjunto ordenado de bases de nucleótidos, hay que hallar el conjunto ordenado más grande entre ambas cadenas de ADN.
Ejemplo:
ATGTCTTCCTCGA
TGCTTCCTATGAC
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/28 08:25 : Añadida la solución de theom3ga
Actualización 2011/07/01 13:50 : Añadida la solución de @lagunex
Actualización 2011/07/03 01:42 : Añadida solución de @frisco82
Actualización 2011/07/03 13:35 : Añadida solución de @Rosapolis
Categories: #tuentiContest, C/C++, General, Interneteando, Linux Tags: adn, biólogo, cadenas, concurso, contest, nucleótidos., programacion, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que hacerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #7 : The Tile Game
Tenemos dos series de símbolos y tenemos que transformar la primera serie en la segunda a través de tres tipos de operaciones (sustitución, adición y eliminación). Cada una de las operaciones tiene un coste, también especificado.
Soluciones:
Para más información podéis ver una explicación del algoritmo de Levenshtein.
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/28 08:25 : Añadida la solución de @theom3ga
Actualización 2011/06/28 17:35 : Añadida la solución de @lagunex
Actualización 2011/07/03 01:42 : Añadida solución de @frisco82
Actualización 2011/07/03 13:35 : Añadida solución de @Rosapolis
Categories: #tuentiContest, C/C++, General, Linux, PHP Tags: baldosas, concurso, distancia, juego, levenshtein, ponderada, programacion, tuenti
Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).
Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.
Challenge #6 : The Clock
Un reto curioso y friki. Tenemos un reloj y nos preguntamos, ¿cuántos leds se encenderán desde las 00:00:00 pasados X segundos? Parece tonto, pero no lo entendí a la primera, me costó un rato, saber qué pedían, tal vez era el sueño. Es importante saber que el reloj es de 7 segmentos, y cada segundo se apagan todos los números y se vuelven a encender con la nueva hora.
Soluciones:
Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !
Actualización 2011/06/23 13:54 : Corregido error tipográfico y añadida solución de @javipinero
Actualización 2011/06/24 06:20 : Añadida solución de @lagunex
Actualización 2011/06/28 08:23 : Añadida solución de @theom3ga
Actualización 2011/07/03 01:42 : Añadida solución de @frisco82
Actualización 2011/07/03 13:35 : Añadida solución de @Rosapolis
Categories: #tuentiContest, C/C++, Linux, PHP Tags: concurso, encendidos, friki, geek, leds, programacion, reloj, segmentos, segundos, tiempo, tuenti
Últimos comentarios