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.
televisão, televisao, lcd, computador, notebook, radio, mp3, mp4, dvd, aparelhos eletronicos, video, som, informatica, celular, telefone, nokia, erickson
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
Assinar:
Postagens (Atom)