Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

« Newer Snippets
Older Snippets »
Showing 1-10 of 24 total  RSS 

DOM Parser Demo Code

//above class will search a movie/actor/producer name & will accordingly print other
//details
import javax.swing.text.html.parser.DocumentParser;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.*;
public class Movie_XML implements Movie
{

ArrayList<MovieDB> movies = new ArrayList<MovieDB>();

public ArrayList<MovieDB> searchByActorName(String nm,String key)
{
try
{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("movie.xml");
NodeList nodeList = null;

if(key.equalsIgnoreCase("actor"))
nodeList = doc.getElementsByTagName("actor");
else if(key.equalsIgnoreCase("movie"))
nodeList = doc.getElementsByTagName("name");
else
nodeList = doc.getElementsByTagName("producer");

Node temp = null, parent=null;
NodeList childs = null;
for(int i=0;i<nodeList.getLength();i++)
{
temp = nodeList.item(i);
if(temp.getTextContent().equalsIgnoreCase(nm))
{
parent = temp.getParentNode();
childs = parent.getChildNodes();
MovieDB mDB = new MovieDB();
for(int j=0;j<childs.getLength();j++)
{
Node nd = childs.item(j);
if(nd.getNodeType() == Node.ELEMENT_NODE)
{
String name = nd.getNodeName();
//System.out.println(name);
if(name.equalsIgnoreCase("id"))
{
mDB.setId(nd.getTextContent());
}
if(name.equalsIgnoreCase("name"))
{
mDB.setName(nd.getTextContent());
}
if(name.equalsIgnoreCase("producer"))
{
mDB.setProducer(nd.getTextContent());
}
if(name.equalsIgnoreCase("director"))
{
mDB.setDirector(nd.getTextContent());
}
if(name.equalsIgnoreCase("music_director"))
{
mDB.setMusic_director(nd.getTextContent());
}
if(name.equalsIgnoreCase("actor"))
{
mDB.setActor(nd.getTextContent());
}
if(name.equalsIgnoreCase("actress"))
{
mDB.setActress(nd.getTextContent());
}
}
}
movies.add(mDB);
}
}
return movies;
}
catch(Exception e)
{
throw new CustomException("err in Searching by actor name",e);
}
}
}


//this class will call the above class by sending appropriate parmeters

import java.util.*;
import java.io.*;
public class XMLDemo
{
public static void main(String[] args)
{
try
{
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
while(true)
{
System.out.println("\n Enter the Choice : ");
System.out.println(" 1 : Search By Actor Name : ");
System.out.println(" 2 : Search By Movie Name : ");
System.out.println(" 3 : Search By Producer Name : ");
System.out.println(" 4 : Quit : ");
try
{
int ch = Integer.parseInt(br.readLine());
switch(ch)
{
case 1 :
System.out.println("Enter Actor Name : ");
String actorName = br.readLine();
search(actorName,"actor");
break;
case 2 :
System.out.println("Enter Movie Name");
String movieName = br.readLine();
search(movieName,"movie");
break;
case 3 :
System.out.println("Enter Producer Name");
String producerName = br.readLine();
search(producerName,"producer");
break;
case 4 :
System.out.println("Exiting");
System.exit(0);
default :
System.out.println("Invalid Choice !");
}
}
catch(Exception e)
{
System.out.println("Invalid Choice !");
}
}//end of while
}
catch(Exception e)
{
//e.printStackTrace();
throw new CustomException("err in main",e);
}
}

static void search(String name,String key)
{
try
{
ArrayList<MovieDB> movies = new ArrayList<MovieDB>();
Movie_XML obj = new Movie_XML();
movies = obj.searchByActorName(name,key);
int i =0;
System.out.println();
for(i=0;i<movies.size();i++)
{
MovieDB mDB = movies.get(i);
System.out.println("ID : "+mDB.getId());
System.out.println("Name : "+mDB.getName());
System.out.println("Producer : "+mDB.getProducer());
System.out.println("Director : "+mDB.getDirector());
System.out.println("Music : "+mDB.getMusic_director());
System.out.println("Actor : "+mDB.getActor());
System.out.println("Actress : "+mDB.getActress());
}
System.out.println(i+" Record Found!");
}
catch(Exception e)
{
throw new CustomException("err in byActor",e);
}
}
}

//this class will hold the details of the movie(id,name,---)

import java.util.*;
public class MovieDB
{
private String id,name,year;
private ArrayList<String> actor,actress;
private String director,producer,music_director;

public MovieDB()
{
actor = new ArrayList<String>();
actress = new ArrayList<String>();
}

public void setId(String id)
{
this.id = id;
}

public void setName(String name)
{
this.name = name;
}

public void setYear(String year)
{
this.year = year;
}

public void setDirector(String director)
{
this.director = director;
}

public void setProducer(String producer)
{
this.producer = producer;
}

public void setMusic_director(String music_director)
{
this.music_director = music_director;
}

public void setActor(String actor)
{
this.actor.add(actor);
}

public void setActress(String actress)
{
this.actress.add(actress);
}

public String getId()
{
return id;
}

public String getName()
{
return name;
}

public String getProducer()
{
return producer;
}

public String getDirector()
{
return director;
}

public String getMusic_director()
{
return music_director;
}

public ArrayList<String> getActor()
{
return actor;
}

public ArrayList<String> getActress()
{
return actress;
}
}


//movie interface

import java.util.*;
public interface Movie
{
public ArrayList<MovieDB> searchByActorName(String nm,String key);
}

DOM Parser Demo Code

//above class will search a movie/actor/producer name & will accordingly print other
//details
import javax.swing.text.html.parser.DocumentParser;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.*;
public class Movie_XML implements Movie
{

ArrayList<MovieDB> movies = new ArrayList<MovieDB>();

public ArrayList<MovieDB> searchByActorName(String nm,String key)
{
try
{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("movie.xml");
NodeList nodeList = null;

if(key.equalsIgnoreCase("actor"))
nodeList = doc.getElementsByTagName("actor");
else if(key.equalsIgnoreCase("movie"))
nodeList = doc.getElementsByTagName("name");
else
nodeList = doc.getElementsByTagName("producer");

Node temp = null, parent=null;
NodeList childs = null;
for(int i=0;i<nodeList.getLength();i++)
{
temp = nodeList.item(i);
if(temp.getTextContent().equalsIgnoreCase(nm))
{
parent = temp.getParentNode();
childs = parent.getChildNodes();
MovieDB mDB = new MovieDB();
for(int j=0;j<childs.getLength();j++)
{
Node nd = childs.item(j);
if(nd.getNodeType() == Node.ELEMENT_NODE)
{
String name = nd.getNodeName();
//System.out.println(name);
if(name.equalsIgnoreCase("id"))
{
mDB.setId(nd.getTextContent());
}
if(name.equalsIgnoreCase("name"))
{
mDB.setName(nd.getTextContent());
}
if(name.equalsIgnoreCase("producer"))
{
mDB.setProducer(nd.getTextContent());
}
if(name.equalsIgnoreCase("director"))
{
mDB.setDirector(nd.getTextContent());
}
if(name.equalsIgnoreCase("music_director"))
{
mDB.setMusic_director(nd.getTextContent());
}
if(name.equalsIgnoreCase("actor"))
{
mDB.setActor(nd.getTextContent());
}
if(name.equalsIgnoreCase("actress"))
{
mDB.setActress(nd.getTextContent());
}
}
}
movies.add(mDB);
}
}
return movies;
}
catch(Exception e)
{
throw new CustomException("err in Searching by actor name",e);
}
}
}


//this class will call the above class by sending appropriate parmeters

import java.util.*;
import java.io.*;
public class XMLDemo
{
public static void main(String[] args)
{
try
{
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
while(true)
{
System.out.println("\n Enter the Choice : ");
System.out.println(" 1 : Search By Actor Name : ");
System.out.println(" 2 : Search By Movie Name : ");
System.out.println(" 3 : Search By Producer Name : ");
System.out.println(" 4 : Quit : ");
try
{
int ch = Integer.parseInt(br.readLine());
switch(ch)
{
case 1 :
System.out.println("Enter Actor Name : ");
String actorName = br.readLine();
search(actorName,"actor");
break;
case 2 :
System.out.println("Enter Movie Name");
String movieName = br.readLine();
search(movieName,"movie");
break;
case 3 :
System.out.println("Enter Producer Name");
String producerName = br.readLine();
search(producerName,"producer");
break;
case 4 :
System.out.println("Exiting");
System.exit(0);
default :
System.out.println("Invalid Choice !");
}
}
catch(Exception e)
{
System.out.println("Invalid Choice !");
}
}//end of while
}
catch(Exception e)
{
//e.printStackTrace();
throw new CustomException("err in main",e);
}
}

static void search(String name,String key)
{
try
{
ArrayList<MovieDB> movies = new ArrayList<MovieDB>();
Movie_XML obj = new Movie_XML();
movies = obj.searchByActorName(name,key);
int i =0;
System.out.println();
for(i=0;i<movies.size();i++)
{
MovieDB mDB = movies.get(i);
System.out.println("ID : "+mDB.getId());
System.out.println("Name : "+mDB.getName());
System.out.println("Producer : "+mDB.getProducer());
System.out.println("Director : "+mDB.getDirector());
System.out.println("Music : "+mDB.getMusic_director());
System.out.println("Actor : "+mDB.getActor());
System.out.println("Actress : "+mDB.getActress());
}
System.out.println(i+" Record Found!");
}
catch(Exception e)
{
throw new CustomException("err in byActor",e);
}
}
}

//this class will hold the details of the movie(id,name,---)

import java.util.*;
public class MovieDB
{
private String id,name,year;
private ArrayList<String> actor,actress;
private String director,producer,music_director;

public MovieDB()
{
actor = new ArrayList<String>();
actress = new ArrayList<String>();
}

public void setId(String id)
{
this.id = id;
}

public void setName(String name)
{
this.name = name;
}

public void setYear(String year)
{
this.year = year;
}

public void setDirector(String director)
{
this.director = director;
}

public void setProducer(String producer)
{
this.producer = producer;
}

public void setMusic_director(String music_director)
{
this.music_director = music_director;
}

public void setActor(String actor)
{
this.actor.add(actor);
}

public void setActress(String actress)
{
this.actress.add(actress);
}

public String getId()
{
return id;
}

public String getName()
{
return name;
}

public String getProducer()
{
return producer;
}

public String getDirector()
{
return director;
}

public String getMusic_director()
{
return music_director;
}

public ArrayList<String> getActor()
{
return actor;
}

public ArrayList<String> getActress()
{
return actress;
}
}


//movie interface

import java.util.*;
public interface Movie
{
public ArrayList<MovieDB> searchByActorName(String nm,String key);
}

dbg - debuging routine

A handy little routine to debug autoit scripts

dbg("Log this message")
Func dbg($msg, $error=@error, $extended=@extended, $ScriptLineNumber=@ScriptLineNumber)
    Local $out = "(" & $ScriptLineNumber & ")(" & $error & ")(" & $extended & ") := " & $msg 
    ;Output to application attaching a console to the script engine
    ConsoleWrite($msg & @CRLF)
    ;Output to debugger (dbgview.exe)
    DllCall("kernel32.dll", "none", "OutputDebugString", "str", $out)
EndFunc

Generate combinations

Code generates all the combinations of n elements choosing k elements.

See this for definition.

See this for explanation.

#include <stdio.h>

/* Prints out a combination like {1, 2} */
void printc(int comb[], int k) {
	printf("{");
	int i;
	for (i = 0; i < k; ++i)
		printf("%d, ", comb[i] + 1);
	printf("\b\b}\n");
}

/*
	next_comb(int comb[], int k, int n)
		Generates the next combination of n elements as k after comb

	comb => the previous combination ( use (0, 1, 2, ..., k) for first)
	k => the size of the subsets to generate
	n => the size of the original set

	Returns: 1 if a valid combination was found
		0, otherwise
*/
int next_comb(int comb[], int k, int n) {
	int i = k - 1;
	++comb[i];
	while ((i >= 0) && (comb[i] >= n - k + 1 + i)) {
		--i;
		++comb[i];
	}

	if (comb[0] > n - k) /* Combination (n-k, n-k+1, ..., n) reached */
		return 0; /* No more combinations can be generated */

	/* comb now looks like (..., x, n, n, n, ..., n).
	Turn it into (..., x, x + 1, x + 2, ...) */
	for (i = i + 1; i < k; ++i)
		comb[i] = comb[i - 1] + 1;

	return 1;
}

int main(int argc, char *argv[]) {
	int n = 5; /* The size of the set; for {1, 2, 3, 4} it's 4 */
	int k = 3; /* The size of the subsets; for {1, 2}, {1, 3}, ... it's 2 */
	int comb[16]; /* comb[i] is the index of the i-th element in the
			combination */

	/* Setup comb for the initial combination */
	int i;
	for (i = 0; i < k; ++i)
		comb[i] = i;

	/* Print the first combination */
	printc(comb, k);

	/* Generate and print all the other combinations */
	while (next_comb(comb, k, n))
		printc(comb, k);

	return 0;
}

Permutations

Generates all permutation of n. Uses the naive (stupid) "let's generate all imaginable possibilities and see which are permutations" algorithm.

Time: O(n!)

#include <stdio.h>

int next(int v[], int n) {
	int i = n - 1;
	v[i] = v[i] + 1;
	while ((i >= 0) && (v[i] > n)) {
		v[i] = 1;
		i--;
		if(i >= 0)
			v[i]++;
	}

	if (i < 0)
		return 0;
	return 1;
}

void printv(int v[],int n) {
	int i;

	for (i = 0; i < n; i++)
		printf("%d", v[i]);
	printf("\n");
}

int is_perm(int v[], int n) {
	int i, j;

	for (i = 0; i < n; i++)
		for (j = i + 1; j < n; j++)
			if (v[i] == v[j])
				return 0;

	return 1;
}

int main(int argc, char *argv[]) {
	int v[128];
	int n = 6;
	int i;
	for(i = 0; i <= n; i++)
		v[i] = i + 1;

	while (next(v,n))
		if (is_perm(v,n))
			printv(v,n);

	return 0;
}

The Qeens Problem

Prints all valid ways to arrange n qeens on a n x n chessboard so that the qeens don't attack each other.

#include <iostream>
#include <vector>

typedef std::vector< int > Vect;
typedef std::vector< Vect > List;

const int n = 12;

bool checkRow(const Vect &v, int k) {
	for (int i = k - 1; i >= 0; --i)
		if (v[k] == v[i])
			return false;

	return true;
}

bool checkDiag(const Vect &v, int k) {
	for (int i = k - 1; i >= 0; --i)
		if (k - i == abs(v[k] - v[i]))
			return false;
	
	return true;
}

List filter(List l, int k) {
	List r;
	for (List::const_iterator it = l.begin(); it != l.end(); ++it) {
		if (checkRow(*it, k) && checkDiag(*it, k))
			r.push_back(*it);
	}
	
	return r;
}

List qeens(int k) {
	if (0 == k) {
		List l;
		l.push_back(Vect());
		return l;
	}
	
	List l = qeens(k - 1);
	List r;
	for (List::iterator it = l.begin(); it != l.end(); ++it) {
		for (int newRow = 1; newRow <= n; ++newRow) {
			Vect v(*it);
			v.push_back(newRow);
			r.push_back(v);
		}
	}
	
	r = filter(r, k - 1);
	
	return r;
}

void printS(List l) {
	for (List::const_iterator it = l.begin(); it != l.end(); ++it) {
		for (Vect::const_iterator jt = it->begin(); jt != it->end(); ++jt)
			std::cout << *jt << " ";
		std::cout << std::endl;
	}
}

int main(int argc, char *argv[]) {
	List l = qeens(n);
	
	printS(l);
	
	return 0;
}

Quicksort

Qucksort written in C. Uses the Hoare partition algorithm.

typedef struct {
	int len;
	int elem[50240];
} vector;

void printv(char *str, vector v) {
	printf("%s", str);
	int i = 0;
	for (; i < v.len; ++i)
		printf("%d ", v.elem[i]);
	printf("\n");
}

#define MAX(a, b) ((a > b) ? (a) : (b))
#define MIN(a, b) ((a < b) ? (a) : (b))

int partition(vector *v, int p, int r) {
	int x;
	if (p + 3 < r)
		x = MIN(v->elem[p], MAX(v->elem[p+1], v->elem[p+2]));
	else
		x = v->elem[p];
	
	int i = p - 1;
	int j = r + 1;
	while (1) {
		do {
			--j;
		} while (v->elem[j] > x);
		do {
			++i;
		} while (v->elem[i] < x);

		if (i < j) {
			int aux = v->elem[j];
			v->elem[j] = v->elem[i];
			v->elem[i] = aux;
		} else
			return j;			
	}
}

void quicksort_real(vector *v, int p, int r) {
	if (p < r) {
		int q = partition(v, p, r);
		quicksort_real(v, p, q);
		quicksort_real(v, q + 1, r);
	}
}

void quicksort(vector *v) {
	printf("Quicksort...\n");
	quicksort_real(v, 0, v->len - 1);
}

Strange square

For n = 8, builds
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
1 1 1 1 1 0 1 0
1 1 1 1 0 0 0 0
1 1 1 0 1 1 1 0
1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0
0 0 0 0 0 0 0 0

The algorithm, for a n x n matrix is:
1. Split the matrix into 4 matrices of the same size
2. Complete the top-left one with 1
3. Repeat for each of the other 3 matrices.

#include <stdio.h>
#include <stdlib.h>

int n;
int **T;

void printM() {
	int i,
		j;
	printf("\n");
	for (i = 0; i < n; ++i) {
		for (j = 0; j < n; ++j)
			printf("%d ", T[i][j]);
		printf("\n");
	}
}

void fill(int x1, int y1, int x2, int y2) {
	printf("%d %d %d %d\n", x1, y1, x2, y2);
	//getchar();
	
	if (x1 == x2) {
		//T[x1][y1] = 1;
		return;
	}
	
	int i,
		j;
	int xm = (x1 + x2) / 2;
	int ym = (y1 + y2) / 2;
	for (i = y1; i <= ym; ++i)
		for (j = x1; j <= xm; ++j)
			T[i][j] = 1;
	
	fill(x1, ym + 1, xm, y2);
	fill(xm + 1, y1, x2, ym);
	fill(xm + 1, ym + 1, x2, y2);
}

int main(int argc, char *argv[]) {
	n = 8;
	T = (int**)malloc(n * sizeof(int*));
	int i;
	for (i = 0; i < n; ++i)
		T[i] = (int*)malloc(n * sizeof(int));
	
	int j;
	for (i = 0; i < n; ++i)
		for (j = 0; j < n; ++j)
			T[i][j] = 0;
	
	fill(0, 0, n - 1, n - 1);
	printM();
	
	return 0;
}

C - Simple Example GTK

// gcc file.c -o file.o `pkg-config --libs --cflags gtk+-2.0`

#include <gtk/gtk.h>
#include <stdlib.h>

void displayUI()
{
	GtkWidget* mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);

	gtk_window_set_default_size(GTK_WINDOW(mainWindow), 400, 300);
	gtk_window_set_title(GTK_WINDOW(mainWindow), "GTK Simple Example");
	gtk_window_set_position(GTK_WINDOW(mainWindow), GTK_WIN_POS_CENTER_ALWAYS);

	gtk_signal_connect(GTK_OBJECT(mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);

	gtk_widget_show_all(mainWindow);
}

int main(int argc, char *argv[])
{
	gtk_init(&argc, &argv);

	displayUI();

	gtk_main();

	return EXIT_SUCCESS;
}

Ruby - Sostituire elementi

// Sostituisce "old" con "new" in tutti i file

ruby .i.bak -pe 'sub "old", "new"' *
« Newer Snippets
Older Snippets »
Showing 1-10 of 24 total  RSS