Desafio: divisores y primos

Existen números que tienen una extraña propiedad, si tomamos todos sus divisores y aplicamos la siguiente formula:

divisor + numero / divisor

Da como resultado un numero primo,  por ejemplo el numero 30 cumple esa condición.

¿Cuantos números menores a 100.000 existen que cumplen esta propiedad?

El premio es una remera nuevamente, el primero en enviarme por mail (lwayar@gmail.com) o por mensaje de facebook la respuesta es el ganador.

 

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

¡Me olvide la clave!

Me olvide la clave de mi tablet, tengo algunas pistas, a ver quien pude ayudarme a recuperarla:

  1. Esta compuesta de siete digitos.
  2. Los tres ṕrimeros son el producto de el numero formado por el cuarto y quinto dígito multiplicado por el numero formado por el sexto y septimo.
  3. El número de dos dígitos formado por el cuarto y quinto dígito es igual al doble del número formado por los dos últimos dígitos mas dos.
  4. La suma de las dos últimos dígitos es 4.

Alguien me puede mandar por mensaje privado en facebook mi clave, al primero que me lo envíe le regalo una remera como las que publique en mi cuenta de facebook.

 

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Desafio: suma de potencias

Si buscamos los números menores a 500.000 que cumplen la condición de que la suma de sus dígitos elevados a la 4ta. potencia dan como resultado el numero originario solo encontramos 3:

1634 = 14 + 64 + 34 + 44
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44

Seria capaz de escribir un programa que encuentre los numeros (tambien menores a 500.000) que cumplen esta misma condicion pero con sus digitos elevados a la 5ta potencia.

 

 

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Generadores en Python

Algo que nunca habia usado hasta que aprendí Python son los generadores, un egenerador no es otra cosa que una función especializada que va creando (generando) elementos de una secuencia a medida que es invocada. Su definición es similar a la de listas por comprensión con la diferencia que se utilizan paréntesis en lugar de corchetes.

>>> lista = range(10)
>>> print lista
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> cuadrados = [ numero * numero for numero in lista ]
>>> print cuadrados
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> cuadrados = ( numero * numero for numero in lista )
>>> print cuadrados
<generator object <genexpr> at 0xed75f0>

Alli podemos observar la definicion de una lista y de un generador y como se comportan de manera distinta, veamos entonces como usar un generador.
Por ejemplo vamos a crear un pqueño programa que genere numeros de IP aleatoriamente:

#!/usr/bin/python

import random

def generadorIPs(n):
    for i in range(0,n):
        a=random.randint(0,255);
        b=random.randint(0,255);
        c=random.randint(0,255);
        d=random.randint(0,255);
        yield str(a)+"."+str(b)+"."+str(c)+"."+str(d);

for i in generadorIPs(10):
    print i;

Obeserve que en el caso de los generadores se devuelve el valor con yield, del que ya hablamos en una nota anterior.

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Ejemplo de programacion usando QTCreator

Les dejo un pequeño programita en fase beta creado usando la excelente aplicación QTCreator. Espero que sea de su agrado, en breve escribiré un tutorial de como desarrollar con esta excelente herramienta.

Se trata de una simple calculadora IP como la herramienta de linea de comando ipcalc pero con interfaz gráfica y con funciones optimizadas de calculo y conversión.

Descargarlo desde este link. Para compilarlo simplemente descomprimelo y ejecuta make.

Criticas y sugerencias bienvenidas. Les recuerdo que esta en fase beta y pronto tendrá nuevas prestaciones.

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Operadores ternarios en C++

Los programadores de C++ usan los operadores ternarios de la siguiente forma:

x = (y < 0) ? 10 : 20;

Donde x toma el valor 10 si la condición es verdadera y 20 si la condición es falsa.

Pero tenemos otra forma de usarlo, observe en siguiente codigo:

(a == 0 ? a : b) = 1;

Equivale a decir:

if (a == 0)
    a = 1;
else
    b = 1;

Veamos un ejemplo completo donde podremos comprobar el funcionamiento.

#include <iostream>
#include <string>

using namespace std;

int main()
{
  int x,y=10,a,b;

  x = (y > 0) ? 10 : 20;
  cout << x << endl;

  cout << a << b << endl;
}

Espero que les sea de utilidad.  Úsenlo con precaución.

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Jerarquia de los programadores segun el lenguaje

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

1er. Concurso de Programacion UNJU

El Concurso Universitario de Programación de la UNJU es una competencia que fomenta la creatividad, el trabajo en equipo y la innovación en la creación de programas, además de que permite a los estudiantes el probar sus habilidades.

La participación es por equipos de tres personas (todos ellos estudiantes de tiempo completo) que deberán resolver un examen que consiste 7 más problemas de programación en un tiempo determinado.

Cada equipo cuenta con una computadora y los lenguajes de programación permitidos son Pascal, C, C++, Java, C# y Python. Un problema se considera resuelto cuando el programa entregado resuelve correctamente todos los casos de prueba propuestos. Al final de la competencia, los equipos se clasifican según el número de problemas resueltos y, en caso de empate, por el tiempo que se hayan tardado en resolverlos.
La fecha queda a confirmar como asi tambien el uso de las instalaciones de la Universidad.
Pueden descargar el Reglamento del Concurso y ejemplos de problemas.

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Un pequeño desafio con matrices

En este desafio se trata de hacer un programa que pida por entrada la cantidad de filas y de columnas de una matriz, luego la imprima. La matriz tiene que tener la siguiente forma:

Inserte filas de M: 10
Inserte cols. de M: 10

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
[20] [19] [18] [17] [16] [15] [14] [13] [12] [11]
[21] [22] [23] [24] [25] [26] [27] [28] [29] [30]
[40] [39] [38] [37] [36] [35] [34] [33] [32] [31]
[41] [42] [43] [44] [45] [46] [47] [48] [49] [50]
[60] [59] [58] [57] [56] [55] [54] [53] [52] [51]
[61] [62] [63] [64] [65] [66] [67] [68] [69] [70]
[80] [79] [78] [77] [76] [75] [74] [73] [72] [71]
[81] [82] [83] [84] [85] [86] [87] [88] [89] [90]
[100] [99] [98] [97] [96] [95] [94] [93] [92] [91]

Obeserve que el progreso de la matriz alterna el orden de izquierda a derecha y viceversa.

Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter

Pequeño problema en C

¿Que imprime este programa como salida? ¿Porque?

#include<stdio.h>
  int main()
  {
          int a=10;
          switch(a)
          {
                  case '1':
                      printf("UNO\n");
                      break;
                  case '2':
                      printf("DOS\n");
                      break;
                  defa1ut:
                      printf("OTRO\n");
          }
          return 0;
  }
Difunde por favor:
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • Meneame
  • Twitter