Mostrando las entradas con la etiqueta descarga directa. Mostrar todas las entradas
Mostrando las entradas con la etiqueta descarga directa. Mostrar todas las entradas

domingo, 25 de abril de 2021

Métodos de Ordenamiento [1] Método de Burbuja

Desde el inicio de los tiempos acomodar/ordenar cosas ha sido una tarea indispensable para muchas personas y en programación no es la excepción. Pero a diferencia de las cosas que ordenamos normalmente, aquí solo es posible ordenar datos.
El método de burbuja sirve para ordenar números de mayor a menor y viceversa, pero hay un principio básico que se debe conocer antes de querer ordenar los números.

CICLOS: Es necesario tener conocimiento en bucles/ciclos si queremos ordenar N cantidad de números.



Sabiendo ciclos y con mucha imaginación es posible tener claro nuestro proceso, estos son los pasos que debes seguir para ordenar números.


Lista de números: 5    17    21    13    4    11    17

Paso 1: Tomar el segundo número de nuestra lista, en este caso es el 17, y lo comparamos con el primero.
                5 es menor que 17 = Sí, entonces no ocurre ningún cambio.

Paso 2: Utilizar el siguiente número y compararlo con el primero.
                5 es menor que 21 = Sí, entonces nuevamente no ocurre nada.

Paso 3: Repetimos el paso 2 hasta el último número.
                5 < 13 = Sí
                5 < 4 = No, aquí ocurre un cambio: 4    17    21    13    5    11    17
                4 < 11 = Sí
                4 < 17 = Sí

Paso 4: "Recortaremos" el recorrido, nuestro número 4 va al inicio y ya se queda guardado así, entonces vamos a comparar del 17 hasta el otro 17:     4    17    21    13    5    11    17.

Y a repetir los pasos del 1 al 3:
                17 < 21 = Sí
                17 < 13 = No, ocurre otro cambio:  13    21    17    5    11    17
                13 < 5 = No, cambio:  5    21    17    13    11    17
                5 < 11 = Sí
                5 < 17 = Sí

Tenemos: 4    5    21    17    13    11    17
Y otra vez:
                21 < 17 = No, cambio:  17    21    13    11    17
                17 < 13 = No, cambio:  13    21    17    11    17
                13 < 11 = No, cambio:  11    21    17    13    17
                11 < 17 = Sí

Tenemos: 4    5    11    21    17    13    17
Y otra vez:
                21 < 17 = No, cambio:  17    21    13    17
                17 < 13 = No, cambio:  13    21    17    17
                13 < 17 = Sí

Tenemos: 4    5    11    13    21    17    17
Y otra vez:
                21 < 17 = No, cambio:  17    21    17
                17 < 17 = No es menor, pero no afecta si hay cambio o no porque son iguales

Tenemos: 4    5    11    13    17    21    17
Y otra vez:
                21 < 17 = No, cambio:  17    21

FINALMENTE: Este es nuestro resultado: 4    5    11    13    17    17    21


Hasta este punto, todos pueden llegar a creer que esto sí es método de burbuja, pero lo que te acabo de explicar es un método de ordenamiento más óptimo que el de la burbuja, ¿POR QUÉ?, porque el algoritmo burbuja dice que debes recorrer todo siempre, iniciar desde el primero hasta el último cada que hagas una iteración, pero en este método vamos guardando los números que ya tenemos identificados y solo acomodamos el resto, se llama ordenamiento por SELECCIÓN.


A lo que vinieron, ¡CÓDIGO FUENTE!

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

NOTA: Si deseas cambiar de mayor a menor o de menor a mayor, solo cambia esta condición en el código y ya  if(a[x] < a[y])            if(a[x] > a[y])

Burbuja



SELECCIÓN

domingo, 19 de julio de 2020

Estructura de datos y probabilidad | Rompecráneos 1

He decidido abrir una sección llamada Rompecráneos, que consistirá en resolución de problemas que la gente no encuentra en internet o que quizá está tan ocultos en la red que es imposible encontrarlos, en fin, el día de hoy les traigo este problema:



Define una función que reciba en una estructura de datos, un listado de tamaño variable de pares [nombre | string, importe | float].
Y que regrese de cada par [nombre, importe] la siguiente información:
  1. ¿Es posible que el elemento x sea un total o subtotal? (Calificar con una probabilidad arbitraria de 0% a 100%)


Analicé el problema y llegué la conclusión de que no sé qué debo hacer, es decir, en el código puedo plasmar lo que me está pidiendo, una colección de datos en pares que contenga nombre e importe, ambas variables persistentes en un objeto, pero luego de ahí no sé qué debo hacer exactamente.
Solo puedo imaginar que debo decidir si ese par de datos puede ser un total o un subtotal considerando una sola variable es o no es uno de esos dos valores, en caso de que pueda ser cualquiera de los dos debo decidir qué tan probable es que sí pudiera ser.

Se me ocurrió enlistar una serie de propiedades que un valor total/subtotal pueda tener, como las siguientes:

  1. El valor del importe en la posición x es la suma de todos los otros que no están en la posición x, por lo tanto ese es un total 100% seguro.
  2. El valor en la posición x es mayor que todos los otros valores, sin embargo es menor por poco de la suma del resto de los datos, tiene un 50% de probabilidad de ser un subtotal.
  3. El valor es el menor de toda la lista, 0% de probabilidad de que sea un total o subtotal.
De esa manera fui seleccionando los casos, en realidad no tengo idea de cuál podría ser la solución pero esto es lo único que se me ocurrió, así mismo, planteé el código para que tú me ayudes a resolverlo si te es posible o si lo ves de otra manera, siempre he tenido claro que la mente es grandiosa, mientras que tú piensas en alguna cosa, alguien más está pensando otra similar, igual, o muy diferente que tú, espero que puedan resolver ustedes el problema y si es así háganmelo saber en los comentarios.

Aquí les dejo mi código en C# para que vean cómo lo propuse:


lunes, 6 de julio de 2020

Listas en programación [3] | Listas simples

En la entrada anterior mencioné las listas simples, y también que de simples solo tienen el nombre, y efectivamente tienen un nivel de complejidad un poco más elevado a lo que ya conoces, es decir, "los arreglos".
Es posible manejar las listas como un simple arreglo, le agregamos datos y le quitamos. Pero en esta ocasión utilizaremos espacios de memoria que se comuniquen entre sí utilizando algo que se llama puntero, en C es un poco más complejo hacer el manejo de estos, pero en los lenguajes orientados a objetos es sencillo llevar a cabo este proceso, ya que el manejo de clases y objetos es muy eficaz.

En realidad las listas simples están enlazadas para que cumplan con su función, este enlace apunta a una dirección de memoria, por ello es que si se asigna ese valor a cualquier otra variable, este afectará de forma global.

Podemos tenerlo en cuenta como los changuitos que aparecen en la película de Toy Story, que uno se unía a otro y así, cada chango representa un valor y sus brazos representan ese enlace apuntando a la dirección de memoria.

La siguiente imagen muestra la representación correcta de una lista simple enlazada, el enlace final determinará su límite al tener un valor nulo, es decir, que no hay otra dirección de memoria más, simplemente hasta ahí llega.

Estructuras de datos: listas enlazadas, pilas y colas.

Es posible realizar 3 operaciones básicas en este tipo de listas, bueno, en realidad en todas las listas, pero con pequeñas variaciones.

Agregar: Es posible agregar un dato "siguiente" a la lista, o crear un nuevo nodo que apunte al anterior, es decir, agregar un dato al final o al inicio.

Borrar: Es posible borrar un dato ya sea el primero, el último o buscándolo por su valor, pero siempre de uno en uno, si se llegaran a repetir valores, eliminará el primero que encuentre.

Buscar: Es necesario poder hacer consultas de datos, para verificar si existe el valor, ya sea solo para mostrarlo o también como apoyo para borrar.

En el siguiente código te muestro esas operaciones utilizando ECMA Script 6, es una variación de Javascript más bonita y orientada a objetos, para más información puedes consultar en algún sitio web las diferencias de cada variación.


Prueba la magia:


Y descarga el código si quieres ver cuál es la magia detrás de esto.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript:

miércoles, 3 de junio de 2020

Listas en programación [2] | Pilas y colas

En la entrada pasada te mostré las maravillosas listas, sin embargo solo fue un concepto muy general y te mostré una manera en la que puedes manejarlas sencillamente. Pero hay listas con propósitos realmente marcados, como lo son las que te voy a mostrar a continuación.

¿Has pensado en alguna ocasión que en realidad los datos pueden ser objetos?, es decir, en la vida real una lista podría representarse como texto en papel, como tu lista de útiles escolares y/o la de la despensa, pero ¿qué tal si pudieran ser personas en su totalidad o animales u objetos tangibles en general?, bien, hay maneras de representar esas situaciones con programación, es necesario saber un poco más sobre programación orientada a objetos (POO), pero eso será para otras entradas más, aunque quizá te hable un poco sobre ella cuando veamos las listas simples, que de simple solo tienen el nombre.


Las mejores webs para crear listas y compartirlas con otros


Bien, las pilas y las colas son herramientas en programación que pueden ser utilizadas para representar acciones relacionadas con sus nombres, por definición tenemos que:

Pila: Lista cuyo valor insertado se agregará siempre al principio, y si se requiere remover un valor de ella se deberá eliminar primero el último que se agregó (First input, last output | El primero en entrar es el primero en salir). El ejemplo más común para esto es cuando apilas un montón de libros y luego debes quitar de uno por uno para acomodarlos.


Pila (informática) - Wikipedia, la enciclopedia libre


Cola: Lista cuyo valor insertado se agregará siempre al final, y si requiere remover un valor de ella se deberá eliminar primero el valor que se encuentra al inicio (First input, first output | El primero en entrar es el primero en salir). El ejemplo más común para esto es imaginar una fila en cualquier sitio, normalmente un banco, la primer persona que se forma es la primera que se va porque la atienden primero.

Cola (informática) - Wikipedia, la enciclopedia libre

En fin, estas listas son de mucha ayuda en varios ejercicios, sin embargo, solo ayudaré un poco a facilitarte código para que veas un súper ejemplo muy sencillo que puedes utilizar en donde tú quieras, recuerda que estos códigos son muy genéricos y aunque yo los haga en Javascript por comodidad, tú puedes pasarlos fácilmente a C#, C++, Python, Java, etc...


Mira este bonito ejemplo:


¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript:

martes, 2 de junio de 2020

Listas en programación [1]

Ah, las listas, un clásico en el arte de la programación. Existen muchísimos elementos en programación que podemos utilizar para buenas prácticas, o simplemente por la necesidad de utilizarlos, en esta ocasión te voy a mostrar un concepto muy interesante en este arte.


Las mejores webs para crear listas y compartirlas con otros



¿Has alguna vez utilizado una lista para alguna cosa?, ya sea para ir al supermercado o cuando tu jefecita te mandaba a la tienda y se aseguraba de que le llevaras lo que te había pedido, te anotaba lo que quería, y aunque te hacía sentir estúpido, era agradable saber que esa lista haría que fuese imposible equivocarte, pero bueno, no hay motivo para proyectarme con esto.
Una lista es una colección de datos desordenada, ordenada o semiordenada, en este momento no nos interesa qué es cada una, pero por su nombre se sobreentiende el propósito de cada una. Al fin y al cabo el propósito de una lista es tener datos en un sitio donde podremos usarlos y/o al menos conocerlos.

En programación podemos utilizar listas de diferentes manera, y en C# y otros lenguajes existen clases o maneras de simular estos maravillosos objetos, por llamarlos de alguna manera.
La forma más sencilla de simular una lista es utilizando arreglos o arrays, o si eres muy vieja escuela puedes referirte a ellos como vectores, cualquier forma es válida y si el propósito es el mismo, llámala como mejor te guste.

Para este ejercicio utilizaremos una simulación con Javascript y HTML, sé que no es la manera en la que las personas aprenden programación, sin embargo es la más genérica a mi punto de vista, además de que considero que Javascript es hermoso.

Mira este bonito ejemplo:



¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript:

jueves, 28 de mayo de 2020

Código del César | Caesars Code | Cifrado

Mientras revisaba unos programas el día de hoy me di cuenta de que tenía uno llamado "código del César", realmente no recordaba qué cosa era, pero al momento de ejecutarlo me llevé la sorpresa de que fue uno de los primeros programas de cifrado que hice.
Me llamó la atención que su funcionamiento, y no por la complejidad, sino lo contrario, se me hizo sencillo querer pasarlo a de C# a Javascript con HTML.


Caesar cipher - Wikipedia


Para no hacer el cuento largo comenzaré con un fundamento de este programa, lo hice durante un tema relacionado a la seguridad informática y eso de las contraseñas seguras. Actualmente existen muchísimos métodos de cifrado e inventar uno algoritmo eficiente que pueda hacer esto es muy bien remunerado, sin embargo es muy complejo, por ello si piensas inventar el tuyo, analizar los cifrados más complejos que existen y date cuenta por ti mismo en lo que te estás metiendo.

El cifrado ha tenido lugar desde todos los tiempos, pues es una manera de comunicarse con seguridad sin que los intrusos se den cuenta de lo que estás transmitiendo y si lo hacen no puedan conocer la información que oculta el mensaje. El mismo idioma podríamos decir que es una manera de cifrado y el traductor o el conocimiento de ese idioma sería nuestro descifrador. Es complejo entenderlo de otra manera, pero uno de los ejemplos más claros es la clave morse, de la cual seguramente has oído muchísimo, sobre todo en las películas de guerra.

Para algo así el César inventó su código, él quería comunicarse pero sin que el mensaje pudiera leerlo cualquiera, sino solo las personas que conocían el código.
Por lo que recuerdo él únicamente escribió el abecedario y los números del 0 al 9, los colocó en una línea, y bajo ellos escribió lo mismo; luego de ello decidió que su llave, por llamarla de alguna manera, sería la palabra izquierda o derecha y un número, lo que significaba que hacia donde la palabra indicara, el abecedario se recorrería y así ocultaría el mensaje.

Ejemplo: Al aplicarle un izquierda 2

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9

C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 A B


Como puedes observar la A y la B estarían representando a los números 8 y 9 respectivamente, y bueno, todas las demás letras representan otras entre sí. Mentes brillantes desde todos los tiempos, pero con hambre de poder.



Explicación:

Bien, para esto únicamente debemos tener en cuenta 2 arreglos idénticos de tipo char que nos ayuden a guardar los datos que queremos, es decir los abecedarios. Además, también considerar la variable booleana que represente la izquierda o la derecha y por supuesto el entero que nos indicará hacia dónde debemos recorrer nuestro abecedario cifrado.

Sabiendo todos estos datos ya se puede programar algo excelente en cualquier lenguaje, usaré Javascript para no necesitar de un compilador para poder ver los resultados y dejarles el código ejecutándose en esta entrada. 

"Al César lo que es del César y a Dios... que te vaya bien."



Normal
Código

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript y en C#:

viernes, 24 de abril de 2020

Tic Tac Toe | Gato | Programación

Hola, hace un buen rato que no he podido subir nada a pesar de que había dicho que sería un poco más constante por eso de la página de facebook, pero bueno, lo mejor es la noticia que trae consigo esta entrada.

Gato, Tic Tac Toe, como lo conozcan en tu país, ciudad o comunidad. Así como lo ves, y como lo imaginaste, ¿recuerdas cuando te aburrías en tu salón de clases y te ponías a jugar esto con tu amigo o amiga?, es bonito recordar eso pero los tiempos cambian, ahora se la pasan en el teléfono haciendo tik toks o algo similar en cualquier red social. Cómo pasan los años.

Bien, la lógica de esto o más bien las reglas son las siguientes:

  1. Solo se puede de 2 jugadores, así que si hay más tendrán que esperar a que les toque, por eso siempre es bueno que solo tengas un mejor amigo, para que el otro no se ponga celoso.
  2. Cada jugador tiene un símbolo, los cuales normalmente son una bolita ( O ) y una equis ( X ). Conocí una persona muy extraña que utilizaba otros símbolos, actualmente le llamaría única y detergente, pero en ese tiempo significaba ser cool y hacerse notar.
  3. El tablero del juego es de 3 x 3 cuadrados, y en cada uno se colocan los símbolos de cada jugador.
  4. Cada jugador solo puede llenar un cuadrado por turno con su símbolo, y el juego se gana cuando alguien logró conectar 3 figuras de manera horizontal, vertical o diagonal.

Demasiadas reglas para un juego tan sencillo que se puede visualizar de la siguiente manera:


Si escribes "Tic Tac Toe" en Google te da el escenario de arribita para que juegues Gato contra su bot, está bonito y las animaciones son una chulada, pero nada como programarlo tú mismo, por ello te voy a dejar el código genérico aquí abajo.


Sí, es obvio que los ingenieros de Google nos dejarán en ridículo de una manera maquiavélica, pero al menos se hace el esfuerzo para obtener algo así. El juego está programado en Javascript (obvio usando también etiquetas HTML), sin embargo el código es muy genérico que si ya tienes algo de experiencia programando vas a poder traducir a cualquier otro lenguaje que te propongas.


Prueba el juego aquí:

¡Gato!







Turno: O


¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic en la imagen para descargar:



sábado, 4 de abril de 2020

Mayor de 3 números

El problema dice lo siguiente: "Realizar un programa en [CUALQUIER LENGUAJE] que determine cuál es el mayor de 3 números".

Realmente no es un problema difícil de resolver, sin embargo es buen ejercicio para quienes van comenzando en este mundo de la programación. Con fundamentos se deben conocer las estructuras comparativas. Si no las recuerdan, son las siguientes:

Operadores lógicos y funciones lógicas en Excel | Blog

En la mayoría de los lenguajes de programación son exactamente iguales que en la tabla anterior, pero recuerden que si vamos a comparar algo igual a algo, se deben colocar dos signos IGUAL (==), bueno, sabiendo esto ya podemos proceder a la parte de la programación.

Lógica (según): 
Ok, se tienen 3 números, los cuales debemos comparar para saber cuál de los 3 es mayor, y efectivamente, lo único que se debe hacer es compara si el primer número mayor que el segundo, y así mismo comparar el mayor de esos dos con el tercero.
  • número1 es mayor que número2
    • Sí: número1 es mayor que número3
      • Sí: número1 es el mayor.
      • No: número3 es el mayor.
    • No: número2 es mayor que número3
      • Sí: número2 es el mayor.
      • No: número3 es el mayor.
De esta manera queda expresada la lógica que se debe tomar en cuenta para realizar este programa o se puede hacer de la siguiente manera.

variable mayor = -99999999
  • número1 es mayor que mayor
    • Sí: mayor = número1
  • número2 es mayor que mayor
    • Sí: mayor = número2
  • número3 es mayor que mayor
    • Sí: mayor = número3

Ambas formas son correctas, pero la segunda te obliga a realizar 3 condiciones obligatorias, sin embargo es notablemente más reducida que la primera forma, cada quien tiene su lógica, quizá haya personas que puedan hacerlo de otra manera, pero lo dejo a tu criterio y manera de pensar.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.


sábado, 28 de diciembre de 2019

¡Programa que imprime las tablas de multiplicar!



Las tablas de multiplicar, malditas tablas diría yo cuando iba en la primaria. En mi país México en general te enseñan a multiplicar en base a este concepto, consta de 8 o 10 tablas como su nombre lo dice donde se encuentran las multiplicaciones de los 10 números (del 1 al 10) hasta el 10 cada uno, es de 1*1, 1*2,..., 1*10, 2*1, 2*2, y así hasta el máximo que es 10*10.

Resultado de imagen para tablas de multiplicar del 1 al 10

Es un concepto sencillo hasta cierto punto porque únicamente te debes de aprender de memoria esta secuencia de multiplicaciones, pero la tarea se complica cuando tu jefecita es a quien debes decirle cada una de estas sin equivocarte o te irá mal. Finalmente debes demostrar esos conocimientos adquiridos diciéndole cada una a tu maestro(a), y según ya con eso debes tener nociones de cómo multiplicar, aunque la verdad puedes aprender sin tener que memorizar las tablas.

La explicación de aquí es todo lo que necesitas saber para programar este objetivo, únicamente se trata de 10 iteraciones por cada número, y puedes utilizar ciclos y todas esas cosas que se te ocurren, recuerdo que este "mini proyecto" lo hice cuando recién iniciaba y lo hice con 10 printf en lenguaje C, ya luego me di cuenta de que pude haberme ahorrado esas líneas de código si tan solo hubiese investigado, pero bueno, nunca se termina de aprender.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.


sábado, 26 de octubre de 2019

¿Cómo imprimir siempre el valor absoluto de un número?

Un número absoluto es aquel que conserva su valor positivo siempre (al menos para mí), es decir, el valor absoluto de todos los números positivos o negativos siempre serán números sin signo, lo que significa que nunca podrán ser menores que cero.

Resultado de imagen para valor absoluto

Justo hoy leía un problema que buscaba en programación mostrar el valor absoluto de cualquier número, pero yo tuve una idea y otras personas tuvieron otra idea, y así un llovedero de ideas para resolver el problema.

Es realmente sencillo si lo observamos desde cualquier punto de vista, pero es obvio que no todo el mundo piensa de la misma manera, por eso es que hoy les comparto el código de lo que hice yo para obtener el valor absoluto de cualquier número ingresado. No es un programa complejo pero es buen ejercicio mental para practicar lógica y sentencias de programación, yo lo resolví únicamente con una condición y una multiplicación.

Creo que estoy publicando mucha basura con tal de obtener ingresos, desde hoy únicamente dejaré esta ventana https://dotnetfiddle.net para que no sea necesario estar yendo de página en página y esperando 5 segundos. Saludos.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.