Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 136 additions & 0 deletions Java/DBScan.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import java.util.*;

public class DBScan {

static void dbs(int n, ArrayList<Integer> input, double erad, int minpts) {
int visited[] = new int[n];
int vis = 0;
int no = 0;
int nclu = 0;
int inc = 0;
Set<Integer>[] finalclu = new LinkedHashSet[n];
finalclu[nclu] = new LinkedHashSet<Integer>();
ArrayList<Integer> outlier=new ArrayList<Integer>();
while (vis < n) {

ArrayList<Integer> cluster = new ArrayList<Integer>();
int pt = input.get(no);
for (int i = 0; i < n; i++) {
int p1 = input.get(i);
double d = Math.abs(pt - p1);
if (d <= erad) {
cluster.add(p1);
}
}
if (cluster.size() < minpts && finalclu[nclu].size() == 0) {
no++;
if (no == n) {
for (int i = 0; i < n; i++) {
if (visited[i] == 0) {
outlier.add(input.get(i));
visited[i] = 1;
vis++;
}
}
}
while (no < n - 1 && visited[no] == 1) {
no++;
}
} else if (cluster.size() < minpts && finalclu[nclu].size() != 0) {
visited[no] = 1;
vis++;
int flag = 0;
Iterator<Integer> j = finalclu[nclu].iterator();
while (j.hasNext()) {
no = input.indexOf(j.next());
if (visited[no] == 0) {
flag = 1;
pt = input.get(no);
break;
}
}
int f1 = 0;
if (flag == 0) {
for (int i = 0; i < n; i++) {
if (visited[i] == 0) {
f1 = 1;
no = i;
pt = input.get(no);
break;
}
}
nclu++;
finalclu[nclu] = new LinkedHashSet<Integer>();
}
if (f1 == 0 && flag == 0)
break;
} else if (cluster.size() >= minpts) {
visited[no] = 1;
vis++;
finalclu[nclu].addAll(cluster);
int flag = 0;
Iterator<Integer> j = finalclu[nclu].iterator();
while (j.hasNext()) {
no = input.indexOf(j.next());
if (visited[no] == 0) {
flag = 1;
pt = input.get(no);
break;
}
}
int f1 = 0;
if (flag == 0) {
for (int i = 0; i < n; i++) {
if (visited[i] == 0) {
f1 = 1;
no = i;
pt = input.get(no);
break;
}
}
nclu++;
finalclu[nclu] = new LinkedHashSet<Integer>();
}
if (f1 == 0 && flag == 0)
break;
}
}

for (int i = 0; i < nclu; i++) {
System.out.println("Cluster " + (i + 1) + ":");
Iterator<Integer> j = finalclu[i].iterator();
while (j.hasNext()) {
System.out.print(j.next() + " ");
}
System.out.println();
}
System.out.print("\nOutliers:\t");
for(int i=0; i<outlier.size(); i++)
{
System.out.print(outlier.get(i)+" ");
}
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter no of values to input:");
int n = sc.nextInt();
ArrayList<Integer> input = new ArrayList<Integer>();

for (int i = 0; i < n; i++) {
System.out.println("For input " + (i + 1) + ":");
System.out.println("Enter value:");
int x = sc.nextInt();
input.add(x);
}

System.out.println("Enter E radius:");
double erad = sc.nextDouble();

System.out.println("Enter MinPoints:");
int minpts = sc.nextInt();

dbs(n, input, erad, minpts);
}

}
135 changes: 135 additions & 0 deletions Java/WaterJug.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import java.util.*;

public class WaterJug_3306 {
/*Waterjug Program*/

void waterjug(int j1, int j2, int[] soln) {
int st = 1;
int x = j1, y = 0;
int flag1=0, flag2=0;
System.out.println("Step " + st + ":" + x + " " + y);
while (st < 30) {
if (x <= j1 && y < j2) {
st++;
if (x - (j2 - y) > 0) {
x = x - (j2 - y);
y = j2;
} else {
y = y + x;
x = 0;
}
System.out.println("Step " + st + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag1++;
break;
}
}
if (x == 0) {
x = j1;
st++;
System.out.println("Step " + st + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag1++;
break;
}
}
if (y == j2) {
y = 0;
st++;
System.out.println("Step " + st + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag1++;
break;
}
}
}

int st1 = 1;
x = 0;
y = j2;
System.out.println("\n\n\n Step " + st1 + ":" + x + " " + y);
while (st1 < 30) {
if (y <= j2 && x < j1) {
st1++;
if ((j1 - x) < y) {
y = y - (j1 - x);
x = j1;
} else {
x = y + x;
y = 0;
}
System.out.println("Step " + st1 + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag2++;
break;
}
}
if (y == 0) {
y = j2;
st1++;
System.out.println("Step " + st1 + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag2++;
break;
}
}
if (x == j1) {
x = 0;
st1++;
System.out.println("Step " + st1 + ":" + x + " " + y);
if (x == soln[0] && y == soln[1]) {
System.out.println("Got Solution");
flag2++;
break;
}
}
}
if (flag1!=0 && flag2!=0)
{
if(st<st1)
{
System.out.println("if jug " + j1
+ " is filled first.. We get soln in less steps");
}
else
{
System.out.println("if jug " + j2
+ " is filled first.. We get soln in less steps");
}
}
else if(flag1!=0)
{
System.out.println("We get soln if jug "+j1 +"is filled 1st");
}
else if(flag2!=0)
{
System.out.println("We get soln if jug "+j2 +"is filled 1st");
}
else
{
System.out.println("No Solution Got!!!!");
}

}

public static void main(String[] args) {

WaterJug_3306 wj = new WaterJug_3306();
Scanner sc = new Scanner(System.in);
System.out.println("Enter Size of 1st jug:");
int j1 = sc.nextInt();
System.out.println("Enter Size of 2nd jug:");
int j2 = sc.nextInt();
int soln[] = new int[2];
System.out.println("Enter Required Solution:");
soln[0] = sc.nextInt();
soln[1] = sc.nextInt();
wj.waterjug(j1, j2, soln);
}

}