Thursday, 27 July 2017

Bubble Sort using link list in java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

/**
 *
 * @author Tarequzzaman
 */

import java.util.Scanner;

public class Link_Sort
{
    node head,current;

    class node
    {
        int data;
        node next;
        node(int data)
        {
            this.data = data;
            next = null;
        }
    }


    void insert(int data)
    {
        node new_node = new node(data);
        if(head==null)
        {
            head = new_node;
            current = new_node;
        }
        else
        {
            current.next = new_node;
            current = current.next;
        }

    }

    void display()
    {
        node tnode = head;
        while (tnode != null)
        {
            System.out.print(tnode.data + " ");
            tnode = tnode.next;
        }
        System.out.println("");
    }


    void sort(int count)
    {
        node current = head;
        for(int i=0; i<count; i++)
        {
            node next_node= current.next;
            for(int j=i; j<count-1; j++)
            {
                if(current.data > next_node.data)
                {
                    int temp = current.data;
                    current.data = next_node.data;
                    next_node.data = temp;
                }
                next_node = next_node.next;
            }
            current= current.next;
        }
    }


    public static void main(String args[])
    {
        int count=0;
        Link_Sort s = new Link_Sort();
        System.out.println("Give input enter 0 to break");
        while (true)
        {
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
            if (i == 0)
            {
                break;
            }
            count++;
            s.insert(i);
        }
        System.out.println("Current Output");
        s.display();
        System.out.println("Sorted Output");
        s.sort(count);
        s.display();
    }

}

Friday, 14 July 2017

Reading data from a binary file (c++) implementation

#include<bits/stdc++.h>
#include <fstream>
#include <vector>

using namespace std;


int main()
{
    vector<unsigned char> bytes;

    ifstream file1("C:\\Users\\Tarequzzaman\\Desktop\\decoded.bin", ios_base::in | ios_base::binary);
    unsigned char ch = file1.get();
    while (file1.good())
    {
        bytes.push_back(ch);
        ch = file1.get();
    }
    size_t size = bytes.size();
    cout  << size << endl;
    return 0;
}

Friday, 5 May 2017

A* search implementation in c++





CODE :
#include<bits/stdc++.h>
#define mx 1000
using namespace std;
map <string,int>mymap;
map<int,string>mymap1;
int N,E,mat[mx][mx],start,end1,par[mx],cost[mx];


struct node
{
    int node_no ;

    int huristic_value;

    bool operator<(const node& target) const
    {
        return huristic_value > target.huristic_value;
    }
};
node arr[mx];



void  Printpath(int V)
{
    if(start==V)
    {
        string s = mymap1[start];
        cout << s;
        return;
    }
    else if(par[V]==0)
    {
        printf("No path exist\n");
    }
    else
    {
        Printpath(par[V]);
        string s = mymap1[V];
        cout <<"-->" << s ;
    }
}

int GBFS(int ux)
{
    node current;
    priority_queue<node>q;
    q.push(arr[ux]);
    par[ux]=0;
    cost[ux] = 0;

    while(!q.empty())
    {
        current = q.top();
        int vx = current.node_no;
        q.pop();
        if(vx == end1)
            return vx;
        for(int i=1; i<=N; i++)
        {


            if(mat[vx][i]!=-1)
            {
                cost[i]= cost[vx] + mat[vx][i];
                arr[i].huristic_value+=cost[i];
                q.push(arr[i]);
                if(par[vx]!=i)
                    par[i] = vx;

            }
        }
    }
}
int main()
{
    string s;
    int hv;
    cout <<"Enter the number of Node : ";
    cin >> N;

    cout << "N H" << endl;///N for node ;H for huristic value
    for(int i=1; i<=N; i++)
    {
        cin >> s >> hv;
        mymap[s] = i;
        mymap1[i] = s;
        arr[i].node_no = i;
        arr[i].huristic_value = hv;
    }

    cout <<"Enter the number of Edge : " ;
    cin >> E ;


    string source, des;
    int g_n;


    for(int i=1; i<=N; i++)
    {
        for(int j=1; j<=N; j++)
        {
            mat[i][j] = -1;                   ///Matrix initialization
        }
    }


    for(int i = 1; i <= E; i++)
    {
        cin >> source >> des >> g_n;
        int x = mymap[source];               ///Input the edges :)
        int y = mymap[des];
        mat[x][y] = g_n;
        mat[y][x] = g_n;
    }


    for(int i=1; i<=N; i++)
    {
        par[i]=0;
    }

    cout << "enter the start and goal node" <<endl;
    cin >> source >> des;
    start = mymap[source];
    end1 = mymap[des];
    int path =   GBFS(start);
    Printpath(end1);
    cout << endl << "Path cost : "<<cost[path] << endl;

}

INPUT : 
8
A 336
T 329
S 253
R 193
F 176
C 160
P 100
B 0
9
A T 118
A S 140
S R 80
S F 99
R C 146
R P 97
F B 211
C P 138
P B 101
A B

OUTPUT :
A-->S-->R-->P-->B
Path cost : 418

Greedy Best First Search(GBST) c++



CODE :

#include<bits/stdc++.h>
#define mx 1000
using namespace std;
map <string,int>mymap;
map<int,string>mymap1;
int N,E,mat[mx][mx],start,end1,par[mx],cost[mx];

struct node
{
    int node_no ;
    int huristic_value;

    bool operator<(const node& target) const
    {
        return huristic_value > target.huristic_value;
    }
};
node arr[mx];

void  Printpath(int V)
{
    if(start==V)
    {
        string s = mymap1[start];
        cout << s;
        return;
    }
    else if(par[V]==0)
    {
        printf("No path exist\n");
    }
    else
    {
        Printpath(par[V]);
        string s = mymap1[V];
        cout <<"-->" << s ;
    }
}

int GBFS(int ux)
{
    node current;
    priority_queue<node>q;
    q.push(arr[ux]);
    par[ux]=0;
    cost[ux] = 0;

    while(!q.empty())
    {
        current = q.top();
        int vx = current.node_no;
        q.pop();
        for(int i=1; i<=N; i++)
        {
            if(mat[vx][i]!=-1)
            {
                cost[i]= cost[vx] + mat[vx][i];
                q.push(arr[i]);
                if(par[vx]!=i)
                    par[i]=vx;
                if(i == end1)
                {
                    return cost[i];
                }
            }
        }
    }
}
int main()
{
    string s;
    int hv;
    cout <<"Enter the number of Node : ";
    cin >> N;

    cout << "N H" << endl;///N for node ;H for huristic value
    for(int i=1; i<=N; i++)
    {
        cin >> s >> hv;
        mymap[s] = i;
        mymap1[i] = s;
        arr[i].node_no = i;
        arr[i].huristic_value = hv;
    }

    cout <<"Enter the number of Edge : " ;
    cin >> E ;

    string source, des;
    int g_n;

    for(int i=1; i<=N; i++)
    {
        for(int j=1; j<=N; j++)
        {
            mat[i][j] = -1;                   ///Matrix initialization
        }
    }

    for(int i = 1; i <= E; i++)
    {
        cin >> source >> des >> g_n;
        int x = mymap[source];               ///Input the edges :)
        int y = mymap[des];
        mat[x][y] = g_n;
        mat[y][x] = g_n;
    }


    for(int i=1; i<=N; i++)
    {
        par[i]=0;
    }

    cout << "enter the start and goal node" <<endl;
    cin >> source >> des;
    start = mymap[source];
    end1 = mymap[des];

    int path=   GBFS(start);
    Printpath(end1);
    cout << endl << "Path cost : "<<path << endl;

}


INPUT : 
8
A 336
T 329
S 253
R 193
F 176
C 160
P 100
B 0
9
A T 118
A S 140
S R 80
S F 99
R C 146
R P 97
F B 211
C P 138
P B 101
A B

OUTPUT :
A-->S-->F-->B
Path cost : 450

Wednesday, 3 May 2017

DFS(Depth-first search) to generate All possible Path in c++



CODE :

#include<bits/stdc++.h>
#define MAX 1000
using namespace std;
map<string,int >mymap;
map<int ,string>mymap1;
int node, edge,color[MAX],par[MAX],mat[MAX][MAX],start,end1;
void  Printpath(int V)
{
    if(start==V)
    {
        string s = mymap1[start];
        cout << s;
    }
    else if(par[V]==0)
    {
        printf("No path exist\n");
    }
    else
    {
        Printpath(par[V]);
        string s = mymap1[V];
        cout <<"-->" << s ;
    }
}

void dfs(int ux)
{
    color[ux]=1;
    if(ux==end1)
    {
        Printpath(ux);
        cout << endl;
        return;
    }
   for(int i=1; i<=node; i++)
    {
        if(mat[ux][i]==1)
        {
            if(color[i]==0)
            {
                par[i]=ux;
                dfs(i);
                color[i]=0;
            }
        }
    }
}
int main()
{
    int n=1;
    string source,des,s,e;
    cin >> node >> edge;
    getchar();
    for(int i=0; i<edge; i++)
    {
        cin >>source >>des;
        if(mymap.find(source)==mymap.end())
        {
            mymap[source]=n;
            mymap1[n]=source;
            n=n+1;
        }
        if(mymap.find(des)==mymap.end())
        {
            mymap[des]=n;
            mymap1[n]=des;
            n=n+1;
        }

        int  x =mymap[source];
        int  y =mymap[des];
        mat[x][y]=1;
        mat[y][x]=1;
    }
cout<<"Enter a Start and End" << endl;
    cin >> s >> e;
    start = mymap[s];
    end1 = mymap[e];


    for(int i=1; i<=node; i++)
    {
        color[i]=0;
        par[i]=0;
    }

  cout <<"ALL POSSIBLE PATH : " << endl;
    dfs(start);


}


INPUT : 
7 11
SYLHET DHAKA
SYLHET CHITTAGONG
CHITTAGONG BARISAL
CHITTAGONG DHAKA
DHAKA RAJSHAHI
DHAKA KHULNA
KHULNA RAJSHAHI
DHAKA RANGPUR
RAJSHAHI RANGPUR
KHULNA BARISAL
DHAKA BARISAL
SYLHET RANGPUR

OUTPUT : 

ALL POSSIBLE PATH :
SYLHET-->DHAKA-->CHITTAGONG-->BARISAL-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->DHAKA-->BARISAL-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->DHAKA-->RAJSHAHI-->RANGPUR
SYLHET-->DHAKA-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->DHAKA-->RANGPUR
SYLHET-->CHITTAGONG-->DHAKA-->BARISAL-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->DHAKA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->DHAKA-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->DHAKA-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->DHAKA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->DHAKA-->KHULNA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->DHAKA-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->KHULNA-->DHAKA-->RAJSHAHI-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->KHULNA-->DHAKA-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->KHULNA-->RAJSHAHI-->DHAKA-->RANGPUR
SYLHET-->CHITTAGONG-->BARISAL-->KHULNA-->RAJSHAHI-->RANGPUR

Tuesday, 2 May 2017

BFS(Breadth-first search) CPP

CODE :

#include<bits/stdc++.h>
#define MAX 1000
using namespace std;
map<string,int >mymap;
map<int ,string>mymap1;
int node, edge,color[MAX],par[MAX],mat[MAX][MAX],start,end1;
void  Printpath(int V)
{
    if(start==V)
    {
        string s = mymap1[start];
        cout << s;
    }
    else if(par[V]==0)
    {
        printf("No path exist\n");
    }
    else
    {
        Printpath(par[V]);
        string s = mymap1[V];
        cout <<"-->" << s ;
    }
}
void bfs(int ux)
{
    int vx,i;
    color[ux]=1;
    par[ux]=0;
    queue<int>Q;
    Q.push(ux);
    while(!Q.empty())
    {
        vx=Q.front();
        Q.pop();
        for(i=1; i<=node; i++)
        {
            if(mat[vx][i]==1 && color[i]==0)
            {
                color[i]=1;
                Q.push(i);
                par[i]=vx;
            }
        }
    }
}
int main()
{
    int n=1;
    string source,des,s,e;
    cin >> node >> edge;
    getchar();
    for(int i=0; i<edge; i++)
    {
        cin >>source >>des;
        if(mymap.find(source)==mymap.end())
        {
            mymap[source]=n;
            mymap1[n]=source;
            n=n+1;
        }
        if(mymap.find(des)==mymap.end())
        {
            mymap[des]=n;
            mymap1[n]=des;
            n=n+1;
        }

        int  x =mymap[source];
        int  y =mymap[des];
        mat[x][y]=1;
        mat[y][x]=1;
    }
cout<<"Enter a Start and End" << endl;
    cin >> s >> e;
    start = mymap[s];
    end1 = mymap[e];


    for(int i=1; i<=node; i++)
    {
        color[i]=0;
        par[i]=0;
    }


    bfs(start);
    cout << "PATH" << endl;
    Printpath(end1);
    cout << endl;
}


INPUT:
7 11
SYLHET DHAKA
SYLHET CHITTAGONG
CHITTAGONG BARISAL
CHITTAGONG DHAKA
DHAKA RAJSHAHI
DHAKA KHULNA
KHULNA RAJSHAHI
DHAKA RANGPUR
RAJSHAHI RANGPUR
KHULNA BARISAL
DHAKA BARISAL
SYLHET RANGPUR

OUTPUT: 
PATH
SYLHET-->DHAKA-->RANGPUR



Wednesday, 26 April 2017

date to pick week number c++


Problem type: Real life (calendar Problem)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int day,date_no,x;
    cout << "Enter any number of day (for example saturday = 1; sunday=2;monday =3 etc) that a month start" << endl;
    cin >>day;
    int next_day =7-day;
    next_day = 1 + next_day;
    cout << "Enter date to check which week :) " << endl;
    while(cin >> x)
    {
        if(x==-1)
        {
           break;
        }

        if(x <= next_day)
        {
            cout <<"1st week" << endl;

        }
        else{
                int cou =0;
                int week_count=1;
                for(int i=next_day+1;; i++)
                {
                    cou++;
                    if(cou==8)
                    {
                        cou=1;
                        week_count++;
                    }
                    if(i==x)
                        break;
                }
               cout << week_count +1 <<" number week" << endl;
        }
    }

}

ট্রিগার এর মাধ্যমে ডাটা ইনসার্ট - insert data using Database Trigger (Mysql)

সর্বপ্রথম আমরা প্রবলেমটা বুঝিঃ আমি একটা টেবিলের একটা কলামের ভ্যালুর উপর ডিপেন্ড করে আরেকটা কলামে ডাটা insert করব । এই কাজটা ট্রি...