Programozás‎ > ‎Feladatok‎ > ‎Mastermind‎ > ‎Megoldás‎ > ‎

og_master.cpp

Letöltés: og_master.cpp

#include <stdio.h>
#include <iostream>
#include <fstream>
 
using namespace std;
 
bool lehet(int*);
void beolvas(char*);
void kiir(char*);
 
 
 
int n;
int** a;
int* e;
int esz;
 
bool check(int* chk,int len)
{
    if (len==0) {return true;}
    for(int i=1; i<len;i++)
    {
        if(chk[0]==chk[i])
        {
            return false;
        }
    }
    return
    check(chk+1, len-1);
}
 
void gen(int hol, int* szam)
{
    if (hol==4)
    {
        if (lehet(szam))
        {
            e[esz]=szam[0]*1000+szam[1]*100+szam[2]*10+szam[3]; esz++;
            cout << szam[0] << szam[1] << szam[2] << szam[3]<<"\n";
        }
        return;
    }
    for(int i=1; i<7; i++)
    {
        szam[hol]=i;
        if(check(szam,hol+1)) {gen(hol+1,szam);}
 
    }
 
    return;
}
 
 
 
int main() {
    beolvas("mastermind01.be");
    int* s;
    e = new int[100];
    esz=0;
    gen(0,s);
    cout << esz;
    kiir("masterm01.ki");
    return 0;
}
 
void kiir(char* file)
{
    ofstream ki;
    ki.open(file);
    ki << esz << "\n";
    for(int i=0; i<esz; i++)
    {
        ki<< e[i] << "\n";
    }
    ki.close();
}
 
void beolvas(char* file)
{
    FILE* be = fopen(file,"r");
    fscanf(be, "%d",&n);
    a= new int*[n];
    for(int i=0; i<n; i++)
    {
        a[i]=new int[6];
        for(int j=0; j<6; j++)
        {
            fscanf(be, "%d", &a[i][j]);
        }
    }
    fclose(be);
}
 
bool lehet(int* szam)
{
    int *szam2;
    int azonos;
    int hasonlo;
    szam2= new int[5];
    for(int i=0; i<n; i++)
    {
        azonos=0;
        for(int j=0; j<4; j++)
        {
            if (szam[j]==a[i][j])
            {
                azonos++;
            }
        }
        if(azonos==a[i][4])
        {
            hasonlo=0;
            for(int j=0; j<4; j++)
            {
                int k=0;
                bool found=false;
                while((!found) && (k<4))
                {
                    if (a[i][k]==szam[j])
                    {
                        hasonlo++;  found=true;
                    }
                    k++;
                }
            }
            if(hasonlo-azonos!=a[i][5]) {return false;}
 
        }
        else
        {return false;}
    }
    return true;
}