quarta-feira, 6 de junho de 2012

domingo, 8 de março de 2009

Sudoku

Este Exemplo é um algoritmo C# para resolver o problema sudoku.





public class Regra
{
public Dados Iniciar(String init)
{
Dados b = new Dados(init);
Random rand = new Random((int)DateTime.Now.Ticks);
int numIterations = 0;
while (!b.IsComplete)
{
numIterations++;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
for (int k = 1; k < 10; k++)
{
if (b.Move(i, j, rand.Next(1, 10))) break;
}
}
}
if (!b.IsComplete)
{
for (int i = 0; i < 2; i++)
{
b.Move(rand.Next(0, 9), rand.Next(0, 9), 0);
}
}
}
return b;
}
}
public class Dados
{
int[,] board;
public int[,] BoardResultado
{
get { return board; }
}
public Dados()
{
board = new int[9, 9];
}
public Dados(string value)
{
board = new int[9, 9];
int i = 0;
int j = 0;
foreach (char c in value)
{
if (char.IsDigit(c))
{
board[j, i] = Convert.ToInt32(c.ToString());
board[j, i] = board[j, i] * -1;
i++;
if (i >= 9) { i = 0; j++; };
}
}
}
bool In(int value)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
if (board[i, j] == value) return true;
}
}
return false;
}
public bool IsComplete
{
get
{
return !In(0);
}
}
public bool Move(int x, int y, int value)
{
if (board[x, y] < 0) return false;
if (!IsLegal(x, y, value)) return false;
board[x, y] = value;
return true;
}
public void GetBox(int x, int y, out int boxX, out int boxY)
{
if (x < 3) boxX = 0; else if (x < 6) boxX = 3; else if (x < 9) boxX = 6; else throw new Exception();
if (y < 3) boxY = 0; else if (y < 6) boxY = 3; else if (y < 9) boxY = 6; else throw new Exception();
}
public bool IsLegal(int x, int y, int value)
{
if (board[x, y] < 0) return false;
if (value == 0) return true;
for (int i = 0; i < 9; i++)
{
if (Math.Abs(board[x, i]) == value) return false;
}
for (int i = 0; i < 9; i++)
{
if (Math.Abs(board[i, y]) == value) return false;
}
int boxX, boxY;
GetBox(x, y, out boxX, out boxY);
for (int i = boxX; i < boxX + 3; i++)
{
for (int j = boxY; j < boxY + 3; j++)
{
if (Math.Abs(board[i, j]) == value) return false;
}
}
return true;
}
}


Link para download da versão


televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson

quinta-feira, 6 de novembro de 2008

Transmissão de dados por FTP

Este Exemplo é um algoritmo simplificado de como utilizar o Ftp, em java para fazer transferencia de arquivo.




import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;

public class Ftp {
public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect("endereço do servidor ftp");
ftpClient.login("usuario", "senha");
ftpClient.makeDirectory("diretorio");
InputStream is = new FileInputStream("c:\\imagem.jpg");
ftpClient.appendFile("imagem.jpg", is);
ftpClient.disconnect();
System.out.println("FILE UPLOAD");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson

Comunicação por Socket

Este Exemplo é um algoritmo simplificado de como utilizar Socket com Java.


Classe Servidor



import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServidor implements Runnable {
int servPort;
Socket socket;
ServerSocket servSock = null;
Socket clntSock = null;
private static final int BUFSIZE = 100;

public SocketServidor(int pServPort) {
servPort = pServPort;
socket = new Socket();
}

public void run() {
try {
servSock = new ServerSocket(servPort);
int recvMsgSize; // Tamanho da mensagem recebida
byte[] byteBuffer = new byte[BUFSIZE]; // Buffer de recepção
for (;;) {
System.out.println("Aguardando conexoes de clientes na porta "
+ servPort + "...");
clntSock = servSock.accept();
socket = clntSock;

System.out.println("\nAtendendo cliente IP "
+ clntSock.getInetAddress().getHostAddress()
+ " na porta " + clntSock.getPort());

InputStream in = clntSock.getInputStream();

while ((recvMsgSize = in.read(byteBuffer)) != -1) {
System.out.println("\n> "
+ new String(byteBuffer).substring(0, recvMsgSize));

}
System.out.println("\nCliente fechou conexao.");
clntSock.close();
}
} catch (Exception e) {
System.out.println("\nErro no Servidor.");
}
}

}

Classe Cliente



import java.io.InputStream;
import java.net.Socket;

public class SocketCliente implements Runnable {
Socket servSock = null;
private static final int BUFSIZE = 100;

public SocketCliente(Socket pServer) {
servSock = pServer;
}

public void run() {
try {
int recvMsgSize; // Tamanho da mensagem recebida
byte[] byteBuffer = new byte[BUFSIZE]; // Buffer de recepção
if (servSock != null) {
InputStream in = servSock.getInputStream();

while ((recvMsgSize = in.read(byteBuffer)) != -1) {
System.out.println("\n> "
+ new String(byteBuffer).substring(0, recvMsgSize));
}
}
} catch (Exception e) {
System.out.println("\nErro ao receber mensagem do Servidor");
}
}
}

televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson

sexta-feira, 31 de outubro de 2008

Número Primo

Algoritmo que verifica se um número é primo.
Números primos são aqueles que só podem ser divididos por 1 e por ele mesmo.

public class NumeroPrimo {
public static void main(String[] args) {
boolean primo = IsPrimo(11);
}

public static boolean IsPrimo(int numero) {
int flag = 0;
for (int i = 2; i < numero; i++) {
int resultado = numero % i;
if (resultado == 0) {
flag = 1;// Não é primo
break;
}
}
if (flag == 0) {
return true;// é primo
}
return false;
}
}

televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson

Fibonacci

Este algoritmo calculo a série de Fibonacci que são menores que 100,

Para ver mais itens na série, é só alterar o valor do limite do valor.

public class Fibonacci
{
public static void main(String[] args)
{
//0,1,1,3,5,8,13,21...89
int a = 1;
int i = 0;
while (i < 100)
{
System.out.print(i + ",");
i = i + a;
a = i - a;
}
}
}


televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson
Google