Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - good

Páginas: [1]
1
Charlas / Offtopic / Problemas con alimentos
« en: 10 de Noviembre de 2011, 17:28:21 pm »
Hola, en el cole estamos haciendo un proyecto científico sobre conservación  de alimentos y lo primero que debemos hacer es exponer ejemplos de problemas reales que hayan sucedido.

Si alguna vez has tenido un problema con cualquier producto cárnico, lácteo o lo que sea, podrías escribirlo aquí?

Muchas gracias!!!

2
Los Retos PHPeros / calcular divisores
« en: 20 de Octubre de 2011, 20:10:03 pm »
dado un número entero, hacer un programa que calcule sus divisores

3
Los Retos PHPeros / descomponer en producto de factores
« en: 20 de Octubre de 2011, 20:09:29 pm »
la idea es descomponer en producto de factores primeros un número dado

4
Los Retos PHPeros / [reto][c++] distancia mínima (grafos)
« en: 26 de Agosto de 2011, 13:00:04 pm »
Hola, propongo hacer un programa que reciba un grafo (el formato de la entrada está abajo) y que devuelva la mínima distáncia del nodo 0 a cualquier otro nodo.

el grafo será dirigido

un ejemplo de grafo dirigido es éste:


El nodo de origen es el nodo 0, y el programa devovlerá la distáncia mínima desde el nodo 0 al nodo n

En este grafo salen las distáncias mínimas desde el nodo 0 a cualquier nodo:



(si no se entiende del todo bien responded xD)

El programa recibirá la descripción de un grafo siguiendo el siguiente formato:

un número N que es el total de nodos (empezando desde el 0)

a continuación, N lineas que describan las conexiones de cada nodo, que será un número Ni que indicará el nodo que vamos a definir, un número Si con el total de conexiones, seguido de Si números (los nodos con los que conecta)

Al final un número del 0 al N-1 que indique el nodo del que sacaremos la distáncia mínima



Ejemplo de entrada (el de la imagen):

5
0  3    1 2 3
1  1    3
2  1    1
3  1    4
4  0

4

Ejemplo de salida (el de la imagen):

2



hemos computado la distáncia mínima del nodo 0 al nodo 4, que es 2

5
Los Retos PHPeros / [reto] números primos
« en: 26 de Agosto de 2011, 00:11:22 am »
el problema es sencillo, una función booleana que devuelva TRUE o FALSE en función de si el número pasado como parámetro sea primo o no

hay que aplicar un algoritmo de la Criba de Eratóstenes.

6
C / C++ / backtracking
« en: 26 de Agosto de 2011, 00:03:41 am »
la idea del backtracking es "llegar hasta el fondo" y si no es correcto, retroceder.
Un ejemplo de aplicación es la solución de un laberinto.

pero voy a poner algo más sencillo, un programa que genera todas las combinaciones de 0 y 1 de longitud n

#include <iostream>
#include <vector>
using namespace std;
 
typedef vector<bool> VB;
 
void combinaciones (VB& v, int count) {
     if (count == int(v.size())) {
          // imprimir el vector
          for (int i = 0; i < int(v.size()); ++i) cout << v;
          cout << endl;
          return;
     }
     v[count] = true;
     combinaciones(v, count+1);
 
     v[count] = false;
     combinaciones(v, count+1);
}
 
int main () {
     int n;
     cin>>n;
     VB v(n);
 
     combinaciones(v, 0);
}

7
Los Retos PHPeros / [RETO] calcular factorial
« en: 25 de Agosto de 2011, 21:28:04 pm »
hola! la idea es crear una función como por ejemplo factorial($n);, y que devuelva el factorial de n (n!)

A ver quien hace el procedimiento más rápido!! :D


El factorial de 3 es 1*2*3, el de 5 es 1*2*3*4*5... etc

NOTA EXTRA:
he pensado en limitar el número que se pase por input, la función solo procesa números del 0 al 15

8
Los Retos PHPeros / [Reto] Sudoku (backtracking 3)
« en: 13 de Agosto de 2011, 22:01:49 pm »
Hola,

Podrías hacer un programa sencillo que resuelva un sueoku?

Entrada:

Un sudoku, 9 filas de 9 columnas cada una inidicando con 0 las casillas vacías.

Salida:

Una solución al sudoku pasado por la entrada



Ejemplo de entrada:

0 0 7 0 0 0 0 0 2
0 0 0 1 3 0 0 8 6
2 0 0 0 8 4 0 0 5
0 3 1 8 0 0 0 0 4
0 7 0 9 0 0 0 0 0
5 9 0 0 7 0 0 3 0
3 0 4 0 0 1 0 5 0
0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 8 0 0

Ejemplo de Salida:

8 1 7 6 5 9 3 4 2
9 4 5 1 3 2 7 8 6
2 6 3 7 8 4 1 9 5
6 3 1 8 2 5 9 7 4
4 7 2 9 1 3 5 6 8
5 9 8 4 7 6 2 3 1
3 8 4 2 9 1 6 5 7
7 2 9 5 6 8 4 1 3
1 5 6 3 4 7 8 2 9



El truco de este problema es saber qué números se pueden poner, es decir, no sería eficiente probar todos los número [1,9] inclusive, el programa tardaría demasiado tiempo. Yo recomendaría hacer alguna(s) funciones para saber qué números pueden encajar en cada casilla (teniendo en cuenta la fila en la que estamos, la columna y el cuadrado de 3x3)

Fuente: Olimpiada informática española

9
Los Retos PHPeros / [Reto] Backtracking 2
« en: 13 de Agosto de 2011, 21:53:43 pm »
Hola,

Este problema puede resolverse modificando un poco la solución dada para el anterior

Se trata de hacer lo mismo, pero usando un número n de 0 y un número m de 1

Entrada:

Dos números enteros que corresponden a los valores de n y m

Salida:

Todas las combinaciones posibles usando n 1 y m 0



Ejemplo de entrada:

5 2

Ejemplo de salida:

0 0 0 1 1
0 0 1 0 1
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0



Éste se puede resolver modificando un poco el código del anterior

Fuente: Online Judge www.jutge.org

10
Los Retos PHPeros / [Reto] Backtracking 1 (Con solución c++)
« en: 13 de Agosto de 2011, 21:46:14 pm »
Hola,

Lo que hay que hacer es generar todas las combinaciones posibles de 0 y 1 de longitud n, para una n dada.

Entrada:

Un número entero con el valor de n

Salida:

Todas las combinaciones de 0 y 1 de longitus igual a n;



Ejemplo de entrada:

3

Ejemeplo de salida:

000
001
010
011
100
101
110
100



Se tiene que resolver mediante backtracking (http://en.wikipedia.org/wiki/Backtracking)



fuente: olimpiada informática española



Solución posible: (c++)

Código: [Seleccionar]
#include <iostream>
#include <vector>
using namespace std;

typedef vector<int> VI;

void imprime_vector (VI& v) {
for (int i = 0; i < int(v.size()); ++i) cout << v[i];
cout << endl;
}

void combinaciones (int count, VI& v) {
if (int(v.size()) == count) {
imprime_vector(v);
return;
}
v[count] = 0;
combinaciones(count+1, v);
v[count] = 1;
combinaciones(count+1, v);
}

int main () {
int n;
cin>>n;
VI v(n);
combinaciones(0, v);
}

11
Los Retos PHPeros / [Reto] excavación
« en: 13 de Agosto de 2011, 18:32:25 pm »
En este problema se tiene cn cuenta la eficiencia del proceso que lleva a la solución

tenemos el siguiente string que define una mina de diamantes: "5-1 2 3 4 6"

La mina tiene 5 metros de profundidad, y a estos, siguen 5 números indicando el valor (en euros) del diamante que se encuentra en cada profundidad (en el primer metro hay 1, en el segundo 2, en el tercero 3...)

Teniendo en cuenta que cavar un metro cuesta 1 euro, el segundo 2, el tercero 3, etc... se te pide que averigues cual es el máximo beneficio que se puede obtener, y el número mínimo de metros que se tendrán que excavar para llegar a ese beneficio.

la entrada será una descripción de la mina
la salida serán dos números: el mínimo número de metros que se necesita excavar, y el número de beneficio máximo (si no hay beneficio, será 0 0)

EJEMPLO DE ENTRADA:
5-1 2 3 4 6

EJEMPLO DE SALIDA:
1 5

EJEMPLO DE ENTRADA:
10-8 1 3 1 3 2 9 9 2 1

EJEMPLO DE SALIDA:
7 1

EJEMPLO DE ENTRADA:
5-1 2 3 4 4

EJEMPLO DE SALIDA:
0 0



fuente: Olimpiada Informática Española

12
Los Retos PHPeros / [Reto] Parser
« en: 13 de Agosto de 2011, 18:17:00 pm »
Hola
La idea es crear un script que parsee un string

la idea es crear como un pequeño lenguaje de programación. Las normas son:

Siempre que el script detecte un comentario (una linea que empieza con el carácter #) no la imprime
Si el programa encuentra un texto en forma $abc (donde abc es una secuencia no vacía de letras mayúsculas [A-Z], minúsculas [a-z], dígitos [0-9] o el carácter _ (subrayado)), entonces sabremos que estamos hablando de una variable, siempre que empiece con el carácter $.
Cada vez que el programa encuentre una variable ésta se substituirá por el valor de la variable, que por defecto será "nil" (en este problema no se dan valores a las variables, simplemente tienen un valor fijo)

En cualquier otro caso, el programa no substituye la secuencia

EJEMPLO DE ENTRADA:
# hola soy un comentario $variable $$hola
EJEMPLo DE SALIDA:
NADA (no se imprime nada, una linea en blanc)

EJEMPLO DE ENTRADA:
    $soy_variable $$$ $y_yo_123
EJEMPLo DE SALIDA:
    nil $$$ nil

EJEMPLO DE ENTRADA:
    $$$ $ $$$ $ $asd $343_34-holamundohola
EJEMPLo DE SALIDA:
    $$$ $ $$$ $ nil nil-holamundohola



No se pueden usar expresiones regulares
la solución puede ser por ejemplo una función, o un código con una variable con el string, eso no importa

fuente: olimpiada informática española

Páginas: [1]