Entradas con la etiqueta ‘codigo’

Cuadro Magico en Ruby

Lunes, 8 de Marzo de 2010

cuadro magico puraslineas
Hola un saludo a todos los chavos y chavas que se dedican a la programación por hobbie o por pasar una materia más como sea y por algun azar del destino caíste en la WeBlog de quien sabe que cosa, posiblemente buscando como hacer el cubo, cuadrado, cuadro o rectangulo (de que lo hay los hay) magico en lenguaje de programación Ruby, si es aquel donde al sumar los lados la suma final tanto horizontal, vertical y diagonal es la misma, el más conocido es el cuadro de 3*3 pero hoy haremos la solución para todos los cuadros impares o al menos la gran mayoria.

 

#creamos un programa que contendrá nuestro metodos
#el cual se llamara magic_square
class OddMagicSquare
  attr_reader :square

  def initialize(n)
    @square = Array.new(n) #creamos nuestro arreglo
    @square.each_index {|i| @square[i] = Array.new(n)}
    middle = n/2 #obtenemos la mitad
    @square[0][middle] = 1
    @pos = [0,middle]
    @len = n
  end

  def printing_magic_square #es toda la parte visual para que se vea bonito
    v_border = '+' + '-' * (6 * @len - 1) + '+'
    @square.each do |row|
      puts v_border
      row.each do |r|
        if r then
          print format('|' + "%4d" + ' ', r)
        else
          print '| nil '
        end
      end
      print "|\n"
    end
    puts v_border
  end

  def iterate_square
    value = 2
    last_value = @len ** 2
    while true do
      move
      fill value
      break if value == last_value
      value = value + 1
    end
  end

  private

  def fill(value) #introducimos el valor correspondiente
    @square[@pos[0]][@pos[1]] = value
  end

  def move
    move_down if not move_diagonal_up
  end

  def move_diagonal_up
    # obtener posicion siguiente
    future_pos = Array.new(2)
    @pos[0] == 0 ? future_pos[0] = @len - 1 : future_pos[0] = @pos[0] - 1
    @pos[1] == @len - 1 ? future_pos[1] = 0 : future_pos[1] = @pos[1] + 1
    #checar si esta vacio o no
    if @square[future_pos[0]][future_pos[1]] then
      return false
    else
      @pos = future_pos
    end
    return true
  end

  def move_down
    @pos[0] == @len - 1 ? @pos[0] = 0 : @pos[0] = @pos[0] + 1
  end

end
#este es otro archivo
require 'magic_square' #llamamos al programa anterior

#n = ARGV[0].to_i

puts "Da el número de lados del cuadrado: "
STDOUT.flush
n1=gets.chomp
n=n1.to_i

raise 'el numero debe de ser impar y mayor a 2' if n % 2 == 0 or n < 3

odd_magic_square = OddMagicSquare.new(n)
odd_magic_square.iterate_square
odd_magic_square.printing_magic_square

Bueno espero el código te haya sido de gran ayuda saludos cordiales deja tus comentarios por favor que para mi son muy importante, hasta pronto y salud!!!!!!!.

English:

magic square in programation language Ruby, only odd magic square.

Fuente de inspiración: Ruby Quiz

Torres de Hanoi en Ruby (recursividad)

Martes, 2 de Marzo de 2010

Hola amig@s programadores, el día de hoy les dejo un buen programa hecho en Ruby, en donde vemos recursividad, las famosisimas torres de Hanoi, y elevar a alguna potencia en el lenguaje de programación Ruby, un excelente lenguaje muy actual y muy sencillo bueno en parte jajaja, sale amig@s espero les agrade y les sea de gran ayuda a continuacion el codigo fuente:

 

class Hanoi#definimos nuestra clase
def tower(n,desde,hacia,temp)#entra numero de discos
   if n==1 #si se ha llegado al ultimo disco
      puts "mover disco del poste"
      puts (desde)
      puts "hacia el poste"
      puts (hacia)
      puts "\n"
   else #en caso contrario
     tower(n-1,desde,temp,hacia)#llamar al metodo
     tower(1,desde,hacia,temp)#volver a llamar al metodo
     tower(n-1,temp,hacia,desde)#y volverlo a llamar pro tercera ocasión
   end
 end#fin del metodo tower

def nmovi(x)#para calcular numero de movimientos
   move=(2**x)-1#formula de las torres de hanoi
   puts "El numero de movimientos a efectuar es de:"
   puts (move)
   puts("\n")
end

end

#interfaz
torre=Hanoi.new#llamamos y creamos a partir de nuestra clase
   puts "Da el numero de discos a mover: "
   STDOUT.flush
   disco=gets.chomp
   discos=disco.to_i#convertimos el numero de discos a entero
   torre.nmovi(discos)#llamamos al numero de movimientos
   torre.tower(discos,1,3,2)
#llamamos al metodo de las torres de hanoi y entran inicialmente
#numero de dicos,desde el poste inicial, hasta el poste final
#y el poste temporal

Recuerda dejar tu comentario saludos cordiales y hasta pronto.
English:

Tower of Hanoi in programming language Ruby, use recursion, source!!!.

Javero

Martes, 22 de Diciembre de 2009

Javero (a): Dícese de la persona que suele programar como loco en java.

Hola amig@s en esta ocasión después de des estresarnos y mandar a la fregada a algunos cuantos vengo a compartirles esta experiencia personal de la universidad especialmente de la Facultad de Ciencias Básicas Ingeniería y Tecnología de la UATx, yo me metí a estudiar (según) Ingeniería en computación pues es algo de mi agrado la programación y en la prepa pues fui en la especialidad de computación y programamos en C++, Java, y Visual Basic, y al llegar a la uni yo incrédulo pensé que llevaríamos muchísima programación en C++, de por si a mi punto de vista C es mejor que Java pro lo fácil, y rápido y nada pesado que es, o pero cual es mi sorpresa que al entrar a la universidad comenzamos con pseudocódigo y después C, pero de ahí ya solo hemos visto programación en Java, la neta no me gusta mucho java pero pues en la uni es el pan nuestro de cada día así que tuve que aprender un poco, no les mentiré diciéndoles que soy experto o soy un programador en java así bien chingon, pero se lo básico y ustedes lo saben siempre mi mentalidad ha sido la de ayudar al prójimo sin importar que eso me pueda costar muy caro , es por ello que el día de hoy les presento oficialmente una nueva sección la cual va enfocada a los proyectos de la universidad claro en fase beta pero les servirán muchísimo para entregarlos o hacerles pequeñas modificaciones y que queden muy bien, si desean mejorar el proyecto y enviármelo con gusto será bien recibido, o si gustan ese mismo proyecto pero mejor diseñado con todo gusto se los hago claro estaremos hablando de algún arreglo ($$$), la nueva sección es (re doble de tambores) “Javero”.

En esta página podrás encontrar algunos ejemplos ya corriendo en Applet en una página en HTML, pero de todos viene su código fuente para tu uso.

Podrás el típico reloj analógico (de manecillas) que la manecilla del segundero llegue al centro del número en 5 segundos, y que muestre la hora del monitor, parece sencillo pero vaya que es un lio. También esta el juego del famosísimo ping-pong debes de aguantar 50 rebotes se le puede subir la velocidad y las vidas o rebotes.

¿Recuerdan el juego de Arkanoid?, pues es algo similar solo que con nubecitas posiblemente te pidan “juego de nubes en java”, o contamos también un editor de imágenes dos versiones uno para escala de grises en java, o contraste y la otra para guardar imagen, dibujar líneas, dibujar con el mouse, colorear fondo borrar, si esto no te parece suficiente contamos también con una agenda electrónica para recibir nombres, apellidos, numero, e-mail, dirección, puedes dar de alta, de baja, modificar o buscar algún contacto registrado, o puedes mostrar la lista de todos tus contactos y también contamos con un chat entre cliente y servidor, ojala y les agraden estos programas que costo hacerlos, costo investigarlos, costo subirlos, y aun hacerles alguna vista previa.

Saludos cordiales y programemos en Java, java nuestro de cada día.

Espero sus comentarios y espero con fervor les sea de gran utilidad esta nueva sección.

PD: Tutorial para correr programas en consola de Windows.

Hash Tables

Sábado, 5 de Diciembre de 2009

Hola amig@s lectores de PuRaSLiNeAS punto com la WeBlog de quien sabe que cosa, pues este post es para todos los amigos programadores o aquellos que desean saber un poquito mas sobre programación, bueno pues recuerdan que estamos viendo programación estructurada, el día de hoy veremos las tablas de Hash, estas tablas con muy padres para las bases de datos pues la búsqueda es mucho más fácil y rápida, bueno obviamente tiene sus excepciones pero se tratan de unas tablas que n elementos con listas ligadas realmente el explicárselos es obsoleto ya que hay muchísima teoría en internet yo les traigo un programa ya funcional para que lo comprueben, por que uno aprende mas cuando ya vemos lo que realmente hace dicho programa, subiré solo un programa unas tablas d hash pero que guarda números, si deseas el programa que guarda campos de texto, contáctame y nos pondremos de acuerdo en el precio.

Link

SortedList

HashTable

HashTableApp

PD: Dejen sus comentarios.

PD2: English version
Programming code in Java, Hash Tables in which stores integers in the field of Data Structures in Java.
(Translated by google)