Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
19 kB
5
Indexable
Never
// BFS DFS ::

#include <bits/stdc++.h>
using namespace std;

class Edge{
    public:
    int src;
    int dest;
};

class Graph
{
    public:
    vector<vector<int>> adjList;
    Graph(vector<Edge> &edges, int v)
    {
        adjList.resize(v);
        for(auto &edge: edges)
        {
            adjList[edge.src].push_back(edge.dest);
            adjList[edge.dest].push_back(edge.src);
        }
    }
};

void recursiveBFS(Graph &graph, queue<int> &q, vector<bool> &discovered)
{
    if(q.empty())
    {
        return;
    }
    int v = q.front();
    q.pop();
    cout<<v<<" ";
    for(int u: graph.adjList[v])
    {
        if(!discovered[u])
        {
            discovered[u] = true;
            q.push(u);
        }
    }
    recursiveBFS(graph, q, discovered);
}
void DFS(Graph &graph, int v, vector<bool> &discovered)
{
    discovered[v] = true;
    cout<<v<<" ";
    for(int u: graph.adjList[v])
    {
        if(!discovered[u])
        {
            DFS(graph, u, discovered);
        }
    }
}
int main()
{
    vector<Edge> edge;
    int v,e;
    int source;
    int destination;
    cout<<"Enter the number of vertices and edges in graph : ";
    while(true)
    {
        if(cin>>v>>e)
        {
            break;
        }
            cin.clear();
            cin.ignore(1000, '\n');
            cout<<"Enter again!"<<endl;
    }

    cout<<"Enter the source and destination of the edges : "<<endl;
    for(int i=0 ; i<e ; i++)
    {
            if(cin>>source>>destination && source<v+1 && destination<v+1)
            {
                // if(source<v && destination<v)
                // {
                    edge.push_back({source,destination});
                    // break;
            }
            else{

                cin.clear();
            cin.ignore(1000, '\n');
            cout<<"This vertex not present !";
            i--;
            }
        // }
    }
    
    Graph graph(edge,v+1);
    vector<bool> discovered1(v+1,false);
    vector<bool> discovered2(v+1,false);
    queue<int> q;
    int stratnode;
    cout<<"Enter the starting node : ";
    cin>>stratnode;
    q.push(stratnode);
    discovered1[stratnode] = true;
    cout<<"BFS : "<<endl;
    recursiveBFS(graph,q,discovered1);
    cout<<endl;
    cout<<"DFS : "<<endl;
    if(discovered2[stratnode] == false){
    DFS(graph, stratnode, discovered2);}
}


// N QUEEN ::

#include <bits/stdc++.h>

using namespace std;
class Solution {
  public:
    bool isSafe1(int row, int col, vector < string > board, int n) {
      // check upper element
      int duprow = row;
      int dupcol = col;

      while (row >= 0 && col >= 0) {
        if (board[row][col] == 'Q')
          return false;
        row--;
        col--;
      }

      col = dupcol;
      row = duprow;
      while (col >= 0) {
        if (board[row][col] == 'Q')
          return false;
        col--;
      }

      row = duprow;
      col = dupcol;
      while (row < n && col >= 0) {
        if (board[row][col] == 'Q')
          return false;
        row++;
        col--;
      }
      return true;
    }

  public:
    void solve(int col, vector < string > & board, vector < vector < string >> & ans, int n) {
      if (col == n) {
        ans.push_back(board);
        return;
      }
      for (int row = 0; row < n; row++) {
        if (isSafe1(row, col, board, n)) {
          board[row][col] = 'Q';
          solve(col + 1, board, ans, n);
          board[row][col] = '.';
        }
      }
    }

  public:
    vector < vector < string >> solveNQueens(int n) {
      vector < vector < string >> ans;
      vector < string > board(n);
      string s(n, '.');
      for (int i = 0; i < n; i++) {
        board[i] = s;
      }
      solve(0, board, ans, n);
      return ans;
    }
};
int main() {
  int n = 4; // we are taking 4*4 grid and 4 queens
  Solution obj;
  vector < vector < string >> ans = obj.solveNQueens(n);
  for (int i = 0; i < ans.size(); i++) {
    cout << "Arrangement " << i + 1 << "\n";
    for (int j = 0; j < ans[0].size(); j++) {
      cout << ans[i][j];
      cout << endl;
    }
    cout << endl;
  }
  return 0;
}

// A* ::
#include<iostream>
#include<cmath>
#include<limits.h>

using namespace std;

//A* alogrithm to solve 8 puzzle problem


int g = 0;

void Print(int puzzle[]){
    for(int i = 0; i < 9; i++){
        if(i % 3 == 0) cout << '\n';
        if(puzzle[i] == -1) cout << "_ ";
        else cout << puzzle[i] << " ";
    }
    cout << "\n\n";
}

void moveLeft(int start[], int position){
    swap(start[position], start[position - 1]);
}

void moveRight(int start[], int position){
    swap(start[position], start[position + 1]);
}

void moveUp(int start[], int position){
    swap(start[position], start[position - 3]);
}

void moveDown(int start[], int position){
    swap(start[position], start[position + 3]);
}


void Copy(int temp[], int real[]){
    for(int i = 0; i < 9; i++) temp[i] = real[i];
}


/*
For every number find difference in position in goal state and inital state
Difference in vertical + difference in horizontal 
*/
int heuristic(int start[], int goal[]){
    int h = 0;    
    for(int i = 0; i < 9; i++){
        for(int j = 0; j < 9; j++){
            if (start[i] == goal[j] && start[i] != -1){
                h += abs((j - i) / 3) + abs((j - i) % 3);
            }
        }
    }
    return h + g;
}


void moveTile(int start[], int goal[]){
    int emptyAt = 0;
    for(int i = 0; i < 9; i++){
        if(start[i] == -1){
            emptyAt = i;
            break;
        }
    }

    int t1[9],t2[9],t3[9],t4[9],f1 = INT_MAX,f2 = INT_MAX,f3 = INT_MAX,f4 = INT_MAX;
    Copy(t1, start);
    Copy(t2, start);
    Copy(t3, start);
    Copy(t4, start);

    int row = emptyAt / 3;
    int col = emptyAt % 3;

    if(col - 1 >= 0){
        moveLeft(t1, emptyAt);
        f1 = heuristic(t1, goal);
    }
    
    if(col + 1 < 3){
        moveRight(t2, emptyAt);
        f2 = heuristic(t2, goal);
    }

    if(row + 1 < 3){
        moveDown(t3, emptyAt);
        f3 = heuristic(t3, goal);
    }
    
    if(row - 1 >= 0){
        moveUp(t4, emptyAt);
        f4 = heuristic(t4, goal);
    }
    
    
    //Find Least Heuristic State and Make the Move
    if(f1 <= f2 && f1 <= f3 && f1 <= f4 ){
        moveLeft(start, emptyAt);
    }
    else if(f2 <= f1 && f2 <= f3 && f2 <= f4 ){
        moveRight(start, emptyAt);
    }
    else if(f3 <= f1 && f3 <= f2 && f3 <= f4 ){
        moveDown(start, emptyAt);
    }
    else{
        moveUp(start, emptyAt);
    }
}

void solveEight(int start[], int goal[]){
    g++;
    
    //Move Tile
    if(g>10){
        cout<<"Not possible solution"<<endl;
        return;
    }
    moveTile(start, goal);
    
    //Get Heuristic Value
    int f = heuristic(start, goal);
    if(f == g){
        cout << "Solved in " << f << " moves\n";
        return;
    }
    solveEight(start, goal);
}


// bool solvable(int start[]){
//     int invrs = 0;
//     for(int i = 0; i < 9; i++){
        
//         if(start[i] <= 1) continue;
//         for(int j = i + 1; j < 9; j++){
//             if(start[j] == -1) continue;
//             if(start[i] > start[j]) invrs++;
//         }
//     }
//     return invrs & 1 ? false : true;
// }



int main(){
    int start[9];
    int goal[9];
   
    cout << "Enter the start state:(Enter -1 for empty):";
    for(int i = 0; i < 9; i++){
        cin >> start[i];
    }
    cout << "Enter the goal state:(Enter -1 for empty):";
    for(int i = 0; i < 9; i++){
        cin >> goal[i];
    }
    
    Print(start);
    Print(goal);

    // verify if possible to solve
   
    
        solveEight(start,goal);
    
   
    return 0;
}

//Job scheduling ::

// C++ code for the above approach

#include <algorithm>
#include <iostream>
using namespace std;

// A structure to represent a job
struct Job {

	char id; // Job Id
	int dead; // Deadline of job
	int profit; // Profit if job is over before or on
				// deadline
};

// Comparator function for sorting jobs
bool comparison(Job a, Job b)
{
	return (a.profit > b.profit);
}

// Returns maximum profit from jobs
void printJobScheduling(Job arr[], int n)
{
	// Sort all jobs according to decreasing order of profit
	sort(arr, arr + n, comparison);

	int result[n]; // To store result (Sequence of jobs)
	bool slot[n]; // To keep track of free time slots

	// Initialize all slots to be free
	for (int i = 0; i < n; i++)
		slot[i] = false;

	// Iterate through all given jobs
	for (int i = 0; i < n; i++) {
		// Find a free slot for this job (Note that we start
		// from the last possible slot)
		for (int j = min(n, arr[i].dead) - 1; j >= 0; j--) {
			// Free slot found
			if (slot[j] == false) {
				result[j] = i; // Add this job to result
				slot[j] = true; // Make this slot occupied
				break;
			}
		}
	}

	// Print the result
	for (int i = 0; i < n; i++)
		if (slot[i])
			cout << arr[result[i]].id << " ";
}

// Driver's code
int main()
{
	Job arr[] = { { 'a', 2, 100 },
				{ 'b', 1, 19 },
				{ 'c', 2, 27 },
				{ 'd', 1, 25 },
				{ 'e', 3, 15 } };

	int n = sizeof(arr) / sizeof(arr[0]);
	cout << "Following is maximum profit sequence of jobs "
			"\n";

	// Function call
	printJobScheduling(arr, n);
	return 0;
}

// This code is contributed by Aditya Kumar (adityakumar129)


// Chatbot ::

import random

# Define the chatbot responses
greetings = ['Hello!', 'Hi!', 'Hey there!', 'Greetings!', 'Nice to see you!']
goodbyes = ['Goodbye!', 'See you later!', 'Farewell!', 'Bye!', 'Take care!']
help_responses = ['How may I assist you?', 'What can I do for you?', 'How can I help?']
problem_responses = ['I\'m sorry to hear that. Can you please tell me more about the problem?', 'Let me see if I can help. What seems to be the issue?', 'I\'ll do my best to help you. What\'s the problem?']
thankyou_responses = ['You are welcome!', 'No problem!', 'It was my pleasure!', 'Glad to help!']

# Define the chatbot function
def chatbot():
    print('Chatbot: ' + random.choice(greetings))
    while True:
        user_input = input('User: ')
        if 'hello' in user_input.lower() or 'hi' in user_input.lower() or 'hey' in user_input.lower():
            print('Chatbot: ' + random.choice(greetings))
        elif 'bye' in user_input.lower() or 'goodbye' in user_input.lower() or 'see you' in user_input.lower():
            print('Chatbot: ' + random.choice(goodbyes))
            break
        elif 'help' in user_input.lower() or 'support' in user_input.lower():
            print('Chatbot: ' + random.choice(help_responses))
        elif 'problem' in user_input.lower() or 'issue' in user_input.lower() or 'error' in user_input.lower():
            print('Chatbot: ' + random.choice(problem_responses))
        elif 'thank you' in user_input.lower() or 'thanks' in user_input.lower() or 'thankyou' in user_input.lower():
            print('Chatbot: ' + random.choice(thankyou_responses))
        else:
            print('Chatbot: I\'m sorry, I don\'t understand. Can you please rephrase your request?')

# Test the chatbot
chatbot()


// currency apex class ::

public class currencyConverter {
    public String currency1 {get;set;}
    public String currency2 {get;set;}
    public double value1 {get;set;}
    public double value2 {get;set;}
    
    public void convert() {
        if(currency1 == currency2) {
            value2 = value1;
        }
        else if(currency1 == 'Rupee' && currency2 == 'Dollar') {
            value2 = value1/(82.23);
        }
        else if(currency1 == 'Dollar' && currency2 == 'Rupee') {
            value2 = 82.23*(value1);
        }
        else if(currency1 == 'Pound' && currency2 == 'Rupee') {
            value2 = 101.68*(value1);
        }
        else if(currency1 == 'Rupee' && currency2 == 'Pound') {
            value2 = value1/(101.68);
        }
        else if(currency1 == 'Dollar' && currency2 == 'Pound') {
            value2 = value1/(1.24);
        }
        else if(currency1 == 'Pound' && currency2 == 'Dollar') {
            value2 = 1.24*(value1);
        }
    }
}

// currency vfp.txt

<apex:page controller="currencyConverter">
    <apex:form>
        <apex:outputText value="Currency Converter" style="font-weight: bold; font-size: 20px;"/><br/><br/>
        <apex:outputLabel value="From: "/>
        <apex:selectList value="{!currency1}">
            <apex:selectOption itemLabel="Rupee" itemValue="Rupee"/>
            <apex:selectOption itemLabel="Dollar" itemValue="Dollar"/>
            <apex:selectOption itemLabel="Pound" itemValue="Pound"/>
        </apex:selectList><br/><br/>
        
        <apex:outputLabel value="To: "/>
        <apex:selectList value="{!currency2}">
            <apex:selectOption itemLabel="Rupee" itemValue="Rupee"/>
            <apex:selectOption itemLabel="Dollar" itemValue="Dollar"/>
            <apex:selectOption itemLabel="Pound" itemValue="Pound"/>
        </apex:selectList><br/><br/>
        
        <apex:outputLabel value="Value: "/>
        <apex:inputText value="{!value1}"/><br/><br/>
        
        <apex:commandButton value="Convert" action="{!convert}" rerender="result"/>
        
        <br/><br/>
        
        <apex:outputPanel id="result">
            <apex:outputText value="Converted Value: {!value2}"/>
        </apex:outputPanel>
    </apex:form>
</apex:page>

//calci apex ::

public class Calculator {
    public double n1 {get; set;}
    public double n2 {get; set;}
    public double res {get; set;}
        
    public string v1 {get; set;}
    public string v2 {get; set;}
    public string vres {get; set;}
    
    public void add() {
        try {
            n1 = double.valueOf(v1);
            n2 = double.valueOf(v2);
            res = n1 + n2;
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void subtract() {
        try {
            n1 = double.valueOf(v1);
            n2 = double.valueOf(v2);
            res = n1 - n2;
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void multiply() {
        try {
            n1 = double.valueOf(v1);
            n2 = double.valueOf(v2);
            res = n1 * n2;
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void divide() {
        try {
            n1 = double.valueOf(v1);
            n2 = double.valueOf(v2);
            if (n2 == 0) {
                vres = 'Cannot Divide By Zero!';
                return;
            }
            res = n1 / n2;
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void x_to_y() {
        try {
            n1 = double.valueOf(v1);
            n2 = double.valueOf(v2);
            res = Math.pow(n1, n2);
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }   
    }
    
    public void clear() {
        v1 = '';
        v2 = '';
        vres = '0.0';
    }
    
    public void sin() {
        try {
            n1 = double.valueOf(v1);
            res = Math.sin(n1);
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void cos() {
        try {
            n1 = double.valueOf(v1);
            res = Math.cos(n1);
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
    
    public void tan() {
        try {
            n1 = double.valueOf(v1);
            res = Math.tan(n1);
            vres = string.valueOf(res);
        } catch (Exception e) {
            vres = 'Enter Valid Input!';
        }
    }
}

//calci vfp

<apex:page controller="Calculator">
    <apex:form>
        <apex:outputText value="Calculator" style="font-weight: bold; font-size: 20px;"/><br/><br/>
        <apex:outputLabel value="Number 1: "/>
        <apex:inputText value="{!v1}"/><br/><br/>
        
        <apex:outputLabel value="Number 2: "/>
        <apex:inputText value="{!v2}"/><br/><br/>
        
        <apex:commandButton value="+" action="{!add}" rerender="result"/>
        <apex:commandButton value="-" action="{!subtract}" rerender="result"/>
        <apex:commandButton value="*" action="{!multiply}" rerender="result"/>
        <apex:commandButton value="/" action="{!divide}" rerender="result"/>
        <apex:commandButton value="^" action="{!x_to_y}" rerender="result"/>
        <apex:commandButton value="sin" action="{!sin}" rerender="result"/>
        <apex:commandButton value="cos" action="{!cos}" rerender="result"/>
        <apex:commandButton value="tan" action="{!tan}" rerender="result"/>
        <apex:commandButton value="Clear" action="{!clear}" rerender="result"/>
        
        <br/><br/>
        
        <apex:outputPanel id="result">
            <apex:outputText value="Result: {!vres}"/>
        </apex:outputPanel>
    </apex:form>
</apex:page>

//expert system  (Ayush code)::

# Define the rules
def rule1(symptoms):
    if 'fever' in symptoms and 'cough' in symptoms and 'fatigue' in symptoms:
        return 'You may have the flu.'
    return None

def rule2(symptoms):
    if 'fever' in symptoms and 'rash' in symptoms and 'headache' in symptoms:
        return 'You may have meningitis.'
    return None

def rule3(symptoms):
    if 'pain' in symptoms and 'swelling' in symptoms and 'bruising' in symptoms:
        return 'You may have a fracture.'
    return None

def rule4(symptoms):
    if 'abdominal pain' in symptoms and 'diarrhea' in symptoms and 'nausea' in symptoms:
        return 'You may have food poisoning.'
    return None

def rule5(symptoms):
    if 'shortness of breath' in symptoms and 'chest pain' in symptoms and 'dizziness' in symptoms:
        return 'You may be having a heart attack. Please seek medical attention immediately.'
    return None

# Define the expert system
def diagnose(symptoms):
    rules = [rule1, rule2, rule3, rule4, rule5]
    results = []
    for rule in rules:
        result = rule(symptoms)
        if result:
            results.append(result)
    if len(results) == 0:
        return 'Sorry, we could not diagnose your condition.'
    elif len(results) == 1:
        return results[0]
    else:
        return 'You may have multiple conditions: ' + ', '.join(results)

# Test the expert system
symptoms = ['fever', 'rash', 'headache']
result = diagnose(symptoms)
print(result) # Output: You may have the flu.