Blog

Array de números aleatorios sin repetición en Java

Este ejercicio consiste en generar un array de 20 numeros enteros (del 1 al 49) que no se repitan despues el usuario ingresara un array de 6 números y le diremos cuantos numeros a acertado comprobando las coincidencias con el primer array de 20 enteros. La función que genera los números aleatorios sin repetición es la función loteriaSinRepeticion.

La función miApuesta crea un array de enteros con los números elegidos por el usuario

La función comprobacion cuenta las coincidencias que hay entre el array de los 20 números aleatorios sin repetición y la apuesta del usuario.

package javi;

import java.util.Scanner;

/**
 *
 * @author Javi
 */
public class Actividad5_01b {

    /**
     * @param args the command line arguments
     */
    public static int comprobacion(int ganador[],int miComb[]){
        System.out.println("La combinacion ganadora es");
        for(int i=0;i<ganador.length;i++){
            System.out.print(ganador[i]+" ");
        }
        System.out.println(" ");
        System.out.println("Tus numeros son");
        for(int i=0;i<6;i++){
            System.out.print(miComb[i]+" ");
        }
        
        int k=0;
        for(int i=0;i<ganador.length;i++){
            for (int j=0;j<miComb.length;j++){
                if(ganador[i]==miComb[j]){
                    k++;
                }
            }
        }
        System.out.println(" ");
        System.out.println("Has acertado "+k+" numeros");
        return k;
    }
    
    
    
    
    public static int[] miApuesta(){
        Scanner miteclado = new Scanner(System.in);
        int primitiva[];
        primitiva=new int[6];
        for(int i=0;i<6;i++){
            System.out.println("Dime tus numeros");
            primitiva[i] = miteclado.nextInt();
        }
        return primitiva;
    }
    
    public static int[] loteriaSinRepeticion(int arr[]){
        
        for(int i=0;i<arr.length;i++){
            boolean encontrado = false;
            int ale=(int)(Math.random()*48)+1;
            for (int j=0;j<i ;j++){
                if(arr[j]==ale){
                    encontrado=true;
                }
            }
            if(!encontrado){
                arr[i]=ale;
            }else{
                i--;
            }
        }
        
        return arr;
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        int combinacion[];
        combinacion=new int[20];
        comprobacion(loteriaSinRepeticion(combinacion),miApuesta());
    }
    
}

Espero que les guste 😉

La salida sería algo como esta:

Dime tus numeros
1
Dime tus numeros
2
Dime tus numeros
3
Dime tus numeros
4
Dime tus numeros
5
Dime tus numeros
6
La combinacion ganadora es
32 38 8 17 48 34 15 11 3 33 10 24 27 41 36 35 25 14 23 42
Tus numeros son
1 2 3 4 5 6
Has acertado 1 numeros

TengoSed 2.0

Ya está disponible la versión 2.0 de la aplicación para localizar fuentes de agua en la ciudad de A Coruña, TengoSed.

Con la nueva versión podrás controlar si la fuente funciona o está estropeada podrás valorar si está bien, muy bien, mal o muy mal.

En la opción de añadir fuentes tienes la opción de ponerle un nombre a la fuente. También cuenta con mejoras varias para mejorar la respuesta de la aplicación.

Ir a la aplicación TengoSed 2.0

Calculadora años bisiestos y años Xacobeos

Hola hoy os traemos dos aplicaciones sencillas, una para calcular años bisiestos y otra para calcular años Xacobeos. Están escritas en php7 y se basan en la introducción de dos parametros, el año de inicio y el año de fin y la aplicacion te calcula los años bisiestos o Xacobeos que hay en ese rango de años.

Enlaces a las aplicaciones:
Calculadora años bisiestos bisiestos
Calculadora años Xacobeos Xacobeos

Criptografía hasta Siglo XVI

Criptografía por transposición

En la guerra del Peloponeso que enfrentó a Espartanos y Atenienses (431 a.C-404 a.C).
Se usaban cintas para escribir los mensajes, el mensaje se enrrollaba en una escitala o bastón de un grosor determinado, se escribía el mensaje y luego se desenrrollaba la cinta, quedando un texto sin sentido, éste se enviaba y el receptor solo tenía que enrrollar de nuevo la cinta en otra escitala del mismo grosor para descifrar el mensaje.
Este método consiste en transponer los caracteres en el texto cifrado.
Para un texto de n caracteres existe n! posiblidades de ordenación.
Por ejemplo, para un texto de 3 caracteres existirían 3! = 3*2*1 = 6 maneras de organizarlos.


Escitala

Cifrado César

Con los romanos, continuó la búsqueda de un algoritmo más seguro que el de transposición, empezaron los cifrados de sustitución.
Cada letra del texto original era sustituída por la que le seguía 3 posiciones más adelante, así la A se cifraba con la D, la G con la L…(Téngase en cuenta el alfabeto romano). Posteriormente a todo cifrado en el que la letra original se ha sustituído por otra desplazada un número fijo de posiciones (no necesariamente 3) se denomina: cifrado César.

Este cifrado es vulnerable al criptoanálisis por análisis de frecuencia, a causa del número reducido de claves. Como la sustitución se hace en orden alfabético solo podría haber 21 claves de cifrado diferentes, teniendo en cuenta que el alfabeto romano tiene 21 caracteres. Sin embargo si eliminamos las restricciones de orden alfabético obtenemos 21! =51.090.942.171.709.440.000 posibles claves de cifrado.
Aunque sigue siendo vulnerable al criptoanálisis por análisis de frecuencia.

Cifrados polialfabéticos

En 1460 Leon Battista Alberti propuso un cifrado que consistía en añadir al alfabeto cifrado convencional un segundo alfabeto cifrado.


Así, para cifrar un mensaje se van alternando uno y otro alfabeto por ejemplo, la palabra CASA, la C la cifraríamos con el primer Alfabeto Cifrado quedando una B, la A la cifrariamos con el segundo Alfabeto Cifrado quedando la G, obteniendo de resultado BGRG
En el siglo XVI Vigenère creó el cifrado que se basa en el cuadro de Vigenère, basado en la aportación de Alberti pero en vez de con 2 alfabetos cifrados, con 27 (igual que letras tiene el alfabeto castellano)

El procedimiento sería el mismo que con el cifrado propuesto por Alberti pero utilizando tantos alfabetos cifrados, como letras tenga el alfabeto.

Máquina de Turing

Número computable

Son los números reales que pueden ser calculados con la precisión que se desee por un algoritmo finito. Un número computable es aquel para el que hay una máquina de Turing dado n su cinta inicial termina con el n-esimo digito de ese número

Por ejemplo tenemos un número con infinitos decimales como π , hay un algoritmo que te permite calcular un numero finito de decimales de π , por lo que π sería computable.

Problemas de decisión

Un problema de decisión es una pregunta que tiene una respuesta verdadera o falsa.
Por ejemplo: ¿Es 11 número primo?

Church y Turing demostraron en 1936 que no hay un algoritmo general capaz de decidir si una fórmula es un teorema.

Un problema de decisión puede tener una solución si la maquina de Turing se para y da un resultado, de lo contrario si la máquina no se para y sigue hasta el infinito no tendrá solución.

Máquina de Turing

Consta de una cinta infinita con cuadros, cada cuadro es capaz de almacenar un simbolo de un conjunto de símbolos definidos (en este caso: espacio en blanco,0 y 1). La cinta esta en un estado inicial con unos simbolos pertenecientes al conjunto.

Tiene un cabezal que esta en un estado inicial que lee el simbolo que se encuentra en ese cuadro, según el simbolo que lea y como este programada la máquina borrara el simbolo o lo mantendrá o escribirá un espacio en blanco y se desplazará a izquierda o derecha y cambiará de estado.



Enlaces de interés:

Puedes comprobar como funciona la máquina de Turing en el siguiente enlace, tienes programas de prueba.
http://morphett.info/turing/turing.html

Computadoras en los Años 70

En la década de los 70 los ordenadores eran muy grandes y no tenían pantalla por lo que el resultado de los cálculos los daban por impresora. Lo mas habitual es que los programas se escribieran en tarjetas perforadas, en cada tarjeta perforada cabían 80 caracteres por lo que un programa podría necesitar cientos de tarjetas perforadas.

Disponían de varios módulos:
1- Módulo para perforar tarjetas.
2- Módulo lector de tarjetas perforadas.
3- Unidad central, con teclado para introducir comandos por consola y lector de disco.
4- Módulo de Impresora, por donde salen los resultados.

El procedimiento para hacer un programa era:
1- Se escribian las sentencias en una hoja de codificación.
2- Se pasaba el código a tarjetas perforadas.
3- Una vez escrito el programa se ponían las tarjetas en orden para que el ordenador las fuera leyendo.
4- Una vez acabada la ejecución del programa salían los resultados por la impresora.

Los programas que contenian funciones útiles para los cálculos se podían pasar a disco magnético. Los discos tenian 512KB de capacidad y median unos 45cm de diametro.
Los lenguajes que se utilizaban para programar estas tarjetas eran FORTRAN y COBOL o directamente en ensamblador.

Tarjeta perforada
Perforador de tarjetas
Unidad central IBM 1130
Módulo de Impresora

(Fotos en El Museo Nacional de las Computadoras, Inglaterra)

Pachanga

Ya está disponible la aplicación de Pachanga, en ella podrás crear partid@s de diferentes deportes(fútbol, baloncesto, padel, tenis, pinpong y ajedrez) elige los jugadores que quieres que participen y espera a que la gente se apunte a tu partido, cuando todas las plazas esten cubiertas podrás disfrutar del partido.

Cuando el partido finalice podrás votar a los participantes para asignarles una puntuación, tambien el creador del partido podrá determinar el resultado del mismo y así se generaran unos puntos que luego podrás ver en la estadistica de tu perfil.

El enlace está en http://dornisoft.es/pachanga

Esperemos que disfruteis de vuestros partid@s.

Canal de Telegram

Hemos abierto un canal de Telegram para que esteis informados el enlace es https://t.me/DorniSoft

La tienda aun no está funcionando correctamente porque no está configurada asi que por ahora no se pueden realizar pedidos. La aplicación de Pachanga tampoco esta operativa, pero tenemos prevista subirla en las proximas semanas.

Hemos abierto en el blog un formulario para reportar fallos de las aplicaciones, si ves que algo no funciona bien no dudes en reportarlo, solo tienes que decir tu email, nombre y la causa del problema, nos pondremos en contacto contigo para saber mas información acerca del fallo.
Podeis ver el indice de aplicaciones en https://dornisoft.es

En breves tendreis mas información.


Nuevas Aplicaciones Web

Buenos días,

En el día de ayer hemos subido dos nuevas aplicaciones y un indice de dornisoft.es.

La primera aplicación es TengoSed, está destinada a situar fuentes de agua en A Coruña, con esta aplicación podrás subir nuevas fuentes, comentarios y fotos de fuentes, este es el enlace: .https://dornisoft.es/tengosed

La segunda aplicación es el juego del ahorcado, con el podras jugar online al ahorcado, tiene las opciones de 1 jugador: donde podras jugar contra la máquina, que cuenta con una base de datos de 91803 palabras. O la opción de 2 jugadores: donde el primer jugador pone la palabra y el segundo jugador es el encargado de adivinar la palabra. El enlace es https://dornisoft.es/palabras

Tambien hemos variado el indice de dornisoft, alli podrás encontrar las aplicaciones que van saliendo, el enlace es: Https://dornisoft.es


DorniSoft.es

Hemos creado este dominio para alojar las aplicaciones web que hemos creado, en este blog se irán publicando las novedades en las aplicaciones y otras noticias de interés que estén de actualidad, así como algunos minutos musicales y alguna noticia deportiva destacada.

Por ahora no están subidas las aplicaciones, pero os mantendremos informados cada vez que haya cambios o se suba una aplicación.

Agradecemos los comentarios para mejorar as aplicaciones y para reportar errores.

¡¡Gracias por visitarnos!!

Bienvenidos.

DorniSoft

DorniSoft Inc.