#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
class tasowanie
{
public:
tasowanie();
~tasowanie();
tasowanie &shuffle();
int operator[](int i)const { return tab[i]; }
void show();
static const int ilosc;
private:
int *tab;
};
const int tasowanie::ilosc=52;
ostream &operator<<(ostream &s,const tasowanie &T)
{
for(int i=0;i<tasowanie::ilosc;++i) s<<T[i]<<' ';
return s;
}
tasowanie::tasowanie():tab(new int[ilosc])
{
for(int i=0;i<ilosc;++i) tab[i]=i;
}
tasowanie::~tasowanie()
{
delete[] tab;
}
tasowanie &tasowanie::shuffle()
{
for(int i=ilosc;i>1;--i) swap(tab[i-1],tab[rand()%(i)]);
return *this;
}
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
srand(time(0));
tasowanie t;
cout<<t<<endl;
cout<<t.shuffle()<<endl;
t.shuffle();
cout<<t<<endl;
// cin.get();
return 0;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIHRhc293YW5pZQogIHsKICAgcHVibGljOgogICB0YXNvd2FuaWUoKTsKICAgfnRhc293YW5pZSgpOwogICB0YXNvd2FuaWUgJnNodWZmbGUoKTsKICAgaW50IG9wZXJhdG9yW10oaW50IGkpY29uc3QgeyByZXR1cm4gdGFiW2ldOyB9CiAgIHZvaWQgc2hvdygpOwogICBzdGF0aWMgY29uc3QgaW50IGlsb3NjOwogICBwcml2YXRlOgogICBpbnQgKnRhYjsKICB9Owpjb25zdCBpbnQgdGFzb3dhbmllOjppbG9zYz01MjsKCm9zdHJlYW0gJm9wZXJhdG9yPDwob3N0cmVhbSAmcyxjb25zdCB0YXNvd2FuaWUgJlQpCiAgewogICBmb3IoaW50IGk9MDtpPHRhc293YW5pZTo6aWxvc2M7KytpKSBzPDxUW2ldPDwnICc7CiAgIHJldHVybiBzOwogIH0KICAKdGFzb3dhbmllOjp0YXNvd2FuaWUoKTp0YWIobmV3IGludFtpbG9zY10pCiAgewogICBmb3IoaW50IGk9MDtpPGlsb3NjOysraSkgdGFiW2ldPWk7CiAgfQoKdGFzb3dhbmllOjp+dGFzb3dhbmllKCkKICB7CiAgIGRlbGV0ZVtdIHRhYjsKICB9CiAgCnRhc293YW5pZSAmdGFzb3dhbmllOjpzaHVmZmxlKCkKICB7CiAgIGZvcihpbnQgaT1pbG9zYztpPjE7LS1pKSBzd2FwKHRhYltpLTFdLHRhYltyYW5kKCklKGkpXSk7CiAgIHJldHVybiAqdGhpczsKICB9CiAKLy9pbnQgX3RtYWluKGludCBhcmdjLCBfVENIQVIqIGFyZ3ZbXSkKaW50IG1haW4oKQogIHsKICAgc3JhbmQodGltZSgwKSk7CiAgIHRhc293YW5pZSB0OwogICBjb3V0PDx0PDxlbmRsOwogICBjb3V0PDx0LnNodWZmbGUoKTw8ZW5kbDsKICAgdC5zaHVmZmxlKCk7CiAgIGNvdXQ8PHQ8PGVuZGw7CiAgIC8vIGNpbi5nZXQoKTsKICAgcmV0dXJuIDA7CiAgfQog