En la UNJU los profesores de la materia “Programación Orientada a Sujetos” ha desarrollado un nuevo lenguaje de programación, los tres creadores se llaman Verdadero, Falso y Aleatorio. Desconocemos la identidad de cada uno, es decir no se cual nombre corresponde a cada uno, solo sabemos que verdadero siempre responde la verdad, falso siempre miente, y aleatorio tiene una conducta impredecible, puede tanto decir mentiras como verdades.

El lenguaje nuevo, llamado C– usa las palabra “do” y “go” para los valores lógicos True y False, pero también desconocemos cual corresponde a cada uno. Los programadores siempre responde a las preguntas con estas palabras, no usan el si o el no, solo “do” y “go“.

Haciendo solo tres preguntas cada una a uno solo de los programadores usted debe descubrir cual es la identidad de cada uno de los programadores a los que llamaremos A, B y C.

Notas:

 

  • Es posible formularle a un mismo programador más de una pregunta (y por lo tanto puede ocurrir que a algún programador no se le haga ninguna pregunta).
  • Cuál es la segunda pregunta, y a qué programador se le realiza, puede depender de la respuesta que se reciba a la primera pregunta. (Y en forma similar para la tercera pregunta.)
  • La decisión sobre si Aleatorio responderá con la verdad o la falsedad puede ser pensado como que depende de arrojar una moneda si la moneda cae cara él hablará con la verdad; si cae cruz, hablará falsamente.
  • Aleatorio responderá ‘do’ o ‘go‘ toda vez que se le realice una pregunta Si-No.

 

Leyendo un libro “El prodigio de los números” que me regalo un dilecto amigo, el administrador de “Cacería de spammers“, me encontré con los números repfigit (REPetitive FIbonacci-like diGIT) o numero de Keith.

Un repfigit o número de Keith es un número entero, superior a 9, tal que sus dígitos, al comenzar una secuencia de Fibonacci, alcanzan posteriormente el referido número. Un ejemplo es 47, porque la secuencia de Fibonacci que comienza con 4 y 7 (4, 7, 11, 18, 29, 47) alcanza lo 47. Otro ejemplo es 197: 1+9+7= 17, 9+7+17= 33, 7+17+33= 57, 17+33+57= 107, 33+57+107= 197.

Un repfigit puede ser una secuencia de Tribonacci que tiene tres dígitos en el número, y de Tetranacci si el número tiene cuatro dígitos, etc.

Podemos encontrar esta secuencia en la bases de datos de secuencias “The On-Line Encyclopedia of Integer Sequences®” con el identificador “A007629“.

Este desafio consiste en escribir un programa que encuentre todos los números de Keith menores a 100000000. ¿Se animan?

Desafio SQL

Posted by RetroMan | Desafios

El siguiente problema surgió de una necesidad de una amigo de estudiar discontinuidades en un campo autoincremental en mysql, que carece de secuenciadores, o de un pseudomotor numerador.

La siguiente consulta devuelve una secuencia continua del 1 al 1000:

Se pide modificarla para que genere números del 1000 al 10000 inclusive, se recomienda evitar el uso de LIMITAdicionalmente, si es posible reducirla para optimizar su ejecución.

 

 

Sea s(m) el menor numero n tal que m divide a n!
Así tenemos por ejemplo que el menor numero “n” tal que m=10 sea divisor de n! es n=5.
5! = 120 y 120 es el menor factorial divisible por 10. Así  s(10)=5
Escribir un programa que calcule cual es el menor numero cuyo factorial sea divisible por 25.

Cinco hombres, naufragan en una isla que solo estaba habitada por un mono. Los hombres pasan todo el primer día recogiendo cocos.

Por la noche, uno de ellos despierta y, desconfiado, decide separar su parte. Divide los cocos en cinco montones, toma su parte y, como sobra un coco, se lo da al mono.

Poco después, un segundo náufrago se despierta y hace lo mismo. Al dividir los cocos en cinco montones, vuelve a sobrar un coco y también se lo da al mono.

Uno tras otro, el tercero, cuarto y quinto náufragos hacen lo mismo. Al día siguiente por la mañana, dividen los cocos en cinco montones sin que sobre ninguno.

Te animas a escribir un programa que nos diga ¿Cuántos cocos se habían recolectado inicialmente? y si en lugar de 5 marineroas eran 6 mas el mono.

Fuente: Wikipedia

Un número de Smith es un número natural compuesto que cumple que la suma de sus dígitos es igual a la suma de los dígitos de todos sus factores primos (si tenemos algún factor primo repetido lo sumamos tantas veces como aparezca).

El primer numero de Smith es el 4:

4 = 2 + 2

El siguinte el 22:

22 = 2 – 11
2 + 2 = 2 + 1 + 1

¿Te animas a hacer un programa que imprima todos los numeros de Smith menores que 1000?

A quien resuelva el siguiente problema le voy a dar como premio una remera estampada con motivo geek (programador) diseñado por mi.

Existen algunos enteros que si aplicamos la siguiente formula con cada uno de sus divisores:

divisor + numero / divisor

Obtenemos un numero primo para cada uno de los divisores.

Por ejemplo para el numero 10 sus divisores son: 1, 2, 5, 10

  • 1 + 10 / 1 = 11 primo
  • 2 + 10 / 2 = 7 primo
  • 5 + 10 / 5 = 7 primo
  • 10 + 10 /10 = 11 primo

¿Cual es el mayor numero menor a 10000 (10k) que cumple esa condicion?

Que operador es –>

Posted by RetroMan | Desafios

Aquí les dejo un desafio, en programacion C y C++ me encontre con una expresion algo rara, les dejo un pequeño codigo fuente para que prueben y ver si alguien me puede explicar el comportamiento extraño del programa y que clase de operador es –>.