Noticias Weblogs Foros Wiki Código

RecorteX

476 usuarios y 237 recortes de código
Usuario

Contraseña
Crear cuenta
asp csharp css fechas Flash html imagenes java javascript linux mysql oracle php sql SQLServer url vbnet web xhtml xml
Top Usuarios
fjmp76 (35)
albin (31)
josuebasurto (31)
juanjo (30)
pedrocaro (9)
stanz (8)
AndiXTRM (7)
Joserra (7)
miiglesi (6)
aplyca (5)
Top Etiquetas
php (38)
vbnet (27)
javascript (26)
html (25)
java (24)
csharp (18)
sql (17)
xml (13)
mysql (13)
css (10)
Flash (7)
imagenes (7)
xhtml (7)
fechas (6)
asp (6)
linux (6)
web (5)
SQLServer (5)
oracle (5)
url (5)

Problema de las Ocho Reinas

Solución al problema de las Ocho Reinas, en el que usamos backtracking.

 
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
// Constantes
const int MAX = 8; // Cambiar el 8 por N para obtener problemas con N reinas y un tablero de NxN
 
// Tipos
typedef int TReinas reinas [MAX];
 
// Cabeceras de funciones y procedimientos
void OchoReinas(TReinas &r, int fila);
bool EsSeguro(TReinas r, int fila, int prueba);
void PintarTablero(TReinas r);
 
//Programa principal
int main () {
	TReinas reinas;
 
	OchoReinas(reinas,0);
}
 
// Implementación de funciones y procedimientos
void OchoReinas(TReinas &r, int fila) {
	int prueba;
	
	for(prueba = 0; prueba < MAX; prueba++) {
		if(EsSeguro(r,fila,prueba)) {
			r[fila] = prueba;
			if(fila == (MAX-1)) {
				PintarTablero(r);
			}
			else {
				OchoReinas(r,fila+1);
			}
		}
	}
}
 
bool EsSeguro(TReinas r, int fila,int prueba) {
	int i;
	
	for(i = 1; i < MAX; i++) {
		if((r[fila-i] == prueba) || (r[fila-i] == prueba-i) || (r[fila-i] == prueba+i)) {
			return false;
		} 
	}
	return true;
}
 
void PintarTablero(TReinas r) {
	
	cout << "---------------------------------" << endl;
	for(int fila = 0; fila < MAX; fila++) {
		for(int i = 0; i < r[fila]; i++) {
			cout << "|   ";
		}
		cout << "| X ";
		for (int j = (r[fila] + 1); j < MAX; j++) {
			cout << "|   ";
		}
		cout << "|" << endl << "---------------------------------" << endl;
	}
	cout << endl;
}
 

Torres de Hanoi

Pequeño algoritmo que resuelve el juego de las Torres de Hanoi con N discos. No tiene interfaz gráfica, todo lo hace desde la consola.

 
package hanoi;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/**
 *
 * @author tauron
 */
public class Hanoi {
 
	public enum palo {izquierdo,central,derecho};
 
	public static void Mover(int n,palo origen, palo auxiliar,palo destino) {
		if(n == 1) {
			System.out.println("Mueve el disco " + n + " desde el palo " + origen + " al " + destino);
		}
		else {
			Mover(n-1,origen,destino,auxiliar);
			System.out.println("Mueve el disco " + n + " desde el palo " + origen + " al " + destino);
			Mover(n-1,auxiliar,origen,destino);
		}
	}
 
    public static void main(String[] args) {
		BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in));
 
		int numDiscos;
		String discos = "";
 
		System.out.print("Introduce el número de discos: ");
 
		try{
			discos = dataIn.readLine();
		}catch(IOException e){
			System.out.println("¡Error!");
		}
 
		numDiscos = Integer.valueOf(discos);
		while (numDiscos < 1) {
			System.out.println("Vaya chorrada de número has metido. ERROR.");
			System.out.print("Inserta el número de discos: ");
 
			try{
				discos = dataIn.readLine();
			}catch(IOException e){
				System.out.println("¡Error!");
			}
 
			numDiscos = Integer.valueOf(discos);
			
		} // Fin del while
 
		Mover(numDiscos,palo.izquierdo,palo.central,palo.derecho);
    }
 
}
 

Sacar el valor máximo de las diagonales superiores

Dada una matriz cuadrada de enteros, el algoritmo devuelve el valor máximo de cada paralela superior a la diagonal principal.

 
// Incluir E/S y Librerías Standard
#include <iostream>
#include <cstdlib>
using namespace std;
 
// Zona de Declaración de Constantes
const int MAX = 100;
// Zona de Declaración de Tipos
typedef int TArray [MAX][MAX];
 
typedef struct TMatriz
{
	TArray a;
	int elem;	
};
 
// Zona de Cabeceras de Procedimientos y Funciones
void Inicializar(TMatriz &m);
void LeerMatriz(TMatriz &m);
void EscribirMatriz(TMatriz &m);
void Diagonales(TMatriz &m);
int ValorMax(TMatriz &m, int tope);
// Programa Principal
 
int main()
{
	// Zona de Declaración de Variables del Programa principal
	TMatriz matriz;
	
	cout << endl << "Ejercicio 10.-" << endl << endl;
	Inicializar(matriz);
	LeerMatriz(matriz);
	cout << endl;
	EscribirMatriz(matriz);
	Diagonales(matriz);
	system("Pause"); // Hacer una pausa	
	return 0;	   // Valor de retorno al S.O.
}
 
// Implementación de Procedimientos y Funciones
 
void Inicializar(TMatriz &m)
{
	m.elem = -1;
	
	for(int i = 0; i<MAX; i++)
	{
		for(int j = 0; j<MAX; j++)
		{
			m.a[i][j] = 0;
		}
	}
}
 
void LeerMatriz(TMatriz &m)
{
 
	cout << "Indica el numero de filas y columnas que tendra la matriz cuadrada: ";
	cin >> m.elem;
	while(m.elem <= 0)
	{
		cout << "Escribe un numero mayor que 0: ";
		cin >> m.elem;
	}
	cout << "Introduce valores: " << endl << endl;
	for (int i = 0; i<m.elem; i++)
	{
		for(int j = 0; j<m.elem; j++)
		{
			cout << "Fila " << i << " Columna " << j << ": ";
			cin >> m.a[i][j];
		}
	}
	
}
 
void EscribirMatriz(TMatriz &m)
{
	cout << endl << "Tu matriz es: " << endl;
	
	for(int i = 0; i<m.elem; i++)
	{
		for(int j = 0; j<m.elem; j++)
		{
			cout << m.a[i][j] << " ";
		}
		cout << endl;
	}
	
	cout << endl;
}
 
 
void Diagonales(TMatriz &m)
{
	for(int i = 1; i < m.elem; i++)
	{
		cout << "Diagonal " << i+1 << ": " << ValorMax(m, i) << endl;
	}
	
}
 
int ValorMax(TMatriz &m, int tope)
{
	int valor;
	
	valor = 0;
	
	for(int i = 0; i < (m.elem - (tope - 1)); i++)
	{
		if(m.a[i][i+tope] > valor)
		{
			valor = m.a[i][i+tope];
		}
	}
	
	return valor;
}
 

Bloques de la misma altura con jquery

Yo había creado bloques de la misma altura con jquery (es muy sencillo) pero esta función lo hace de modo genérico (se le pasa la lista de elementos).

Visto en Sentido Web

 
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}
 

Ejemplo de llamada:

 
$(document).ready(function() {
    equalHeight($(".recent-article"));
    equalHeight($(".footer-col"));
});
 

Incrustar videos de youtube como XHTML 1.0 válido

Para introducir un video de youtube, manteniendo el código de la página como xhtml válido debemos modificar el código que nos presenta youtube de la forma…

 
<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/7_6B6vwE83U">
</param>
<embed src="http://www.youtube.com/v/7_6B6vwE83U" type="application/x-shockwave-flash" width="425" height="350">
</embed>
</object>
 

A esta otra

 
<object type="application/x-shockwave-flash" style="width:425px; height:350px;" data="http://www.youtube.com/v/7_6B6vwE83U">
<param name="movie" value="http://www.youtube.com/v/7_6B6vwE83U" /><
/object>
 

Leer y escribir archivos de texto

En Vb.net

 
    Private Sub WriteFile(ByVal FileName As String, ByVal data As String)
        If File.Exists(FileName) Then File.Delete(FileName)
        Dim swFile As StreamWriter = File.CreateText(FileName)
        swFile.Write(data)
        swFile.Flush()
        swFile.Close()
    End Sub
 
    Private Function ReadFile(ByVal FileName As String) As String
        Dim ret As String = ""
        If File.Exists(FileName) Then
            Dim TheFile As System.IO.StreamReader = New StreamReader(FileName, System.Text.Encoding.Default)
            ret = TheFile.ReadToEnd()
            TheFile.Close()
        End If
        Return ret
    End Function
 

En c#

 
        private void WriteFile(String FileName , String data ){
            if (File.Exists(FileName)) {File.Delete(FileName);}
            StreamWriter swFile   = File.CreateText(FileName);
            swFile.Write(data);
            swFile.Flush();
            swFile.Close();
        }
 
        private String ReadFile(String FileName ) {
            String ret  = "";
            if (File.Exists(FileName)){
                 System.IO.StreamReader TheFile = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
                 ret = TheFile.ReadToEnd();
                 TheFile.Close();
            }
            return ret;
        }
 

Leer recursos de la aplicación

 
Imports System.IO
Imports System.Reflection
 
 
    Private Function ReadStringResource(ByVal resource As String) As String
        Dim asm As Assembly = Assembly.GetExecutingAssembly()
        Dim stream As Stream = asm.GetManifestResourceStream(resource)
        Dim streamReader As StreamReader = New StreamReader(stream)
        Dim ret As String = streamReader.ReadToEnd
        Return ret
    End Function
 

Obtener el espacio libre del las unidades del sistema

 
        Dim diskClass As New System.Management.ManagementClass("Win32_LogicalDisk")
        Dim disks As System.Management.ManagementObjectCollection = diskClass.GetInstances()
        Dim disk As System.Management.ManagementObject
        Dim space As System.UInt64 = 0
        For Each disk In disks
            If disk("Description").ToString = "Local Fixed Disk" Then
                If disk("Description").ToString = "Local Fixed Disk" Then
                space += CType(disk("FreeSpace"), System.UInt64)
            End If
        Next disk
 

Ejecutar shell y capturar la salida

Ejecutar shell y capturar la salida

 
        Dim p As New Process
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.Arguments = "x.txt y.txt"
        p.StartInfo.WorkingDirectory = "E:\winnt\system32"
        p.StartInfo.FileName = "xcopy "
        p.Start()
        Dim sr As IO.StreamReader = p.StandardOutput
        Dim sb As New System.Text.StringBuilder("")
        Dim sinput As String = ""
        Do Until sinput = "-1"
            sb.Append(sr.ReadLine() & ControlChars.CrLf)
            sinput = sr.Read
        Loop
        Return sb.ToString
 

Enviar mail (framework 2.0)

Este ejemplo usa el app.config

 
        Dim aConfig As Configuration.ConfigurationSettings
        Try
            Dim MailFrom As New MailAddress(aConfig.AppSettings("EmailFrom"))
            Dim MailTo As New MailAddress(aConfig.AppSettings("EmailTo"))
 
            Dim mailMsg As MailMessage = New MailMessage(MailFrom, MailTo)
 
            mailMsg.IsBodyHtml = True
            mailMsg.Priority = MailPriority.Normal
 
            mailMsg.Subject = "Subject for the mail"
            mailMsg.Body = ReadStringResource("Mail.htm")
 
            Dim SmtpMail As New Net.Mail.SmtpClient
            Dim theCredential As New Net.NetworkCredential("usuario", "contraseña")
            SmtpMail.Credentials = theCredential
            SmtpMail.Host = aConfig.AppSettings("EmailServer")
            SmtpMail.Send(mailMsg)
 
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
 
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin - Información legal y técnica