#include <iostream>
#include <functional>
#include <map>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
string liczba_na_pkn( int w) ;
void sprawdz_wynik( int gracz, int komputer) ;
int main( )
{
string typ{ } ;
const int k{ 0 } , p{ 1 } , n{ 2 } ;
int magiczna_liczba{ } ;
vector< int > gra{ k, k, p, p, n, p, n, k, k, p, k, p, p, n, p, k, n, k, n, k, p, k, p, n } ;
cout << "Napisz losową dodatnią liczbę całkowitą " << endl;
cin >> magiczna_liczba;
cout << endl << "PKM" << endl << endl << "> " ;
while ( cin >> typ)
{
string typ_komputera = liczba_na_pkn( gra[ magiczna_liczba% gra.size ( ) ] ) ;
int typ_gracza = [ ] ( string w) - > int { if ( w == "k" ) return 0 ; if ( w == "p" ) return 1 ; if ( w == "n" ) return 2 ; return 4 ; } ( typ) ;
switch ( typ_gracza)
{
case 0 :
cout << typ << " przeciwko " << typ_komputera << endl;
sprawdz_wynik( typ_gracza, gra[ magiczna_liczba% gra.size ( ) ] ) ;
++ magiczna_liczba;
break ;
case 1 :
cout << typ << " przeciwko " << typ_komputera << endl;
sprawdz_wynik( typ_gracza, gra[ magiczna_liczba% gra.size ( ) ] ) ;
++ magiczna_liczba;
break ;
case 2 :
cout << typ << " przeciwko " << typ_komputera << endl;
sprawdz_wynik( typ_gracza, gra[ magiczna_liczba% gra.size ( ) ] ) ;
++ magiczna_liczba;
break ;
default :
cout << "Dozwolone typy: k, p, n" << endl;
}
cout << endl;
cout << "> " ;
}
}
string liczba_na_pkn( int w)
{
switch ( w)
{
case 0 : return "k" ;
case 1 : return "p" ;
case 2 : return "n" ;
}
return "błąd" ;
}
void sprawdz_wynik( int gracz, int komputer)
{
if ( gracz == komputer)
cout << "remis" << endl;
else if ( ( gracz + 2 ) % 3 == komputer)
cout << "gracz wygrywa" << endl;
else
cout << "komputer wygrywa" << endl;
return ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvbWFuaXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgbGljemJhX25hX3BrbihpbnQgdyk7CnZvaWQgc3ByYXdkel93eW5payhpbnQgZ3JhY3osIGludCBrb21wdXRlcik7CgppbnQgbWFpbigpCnsKCXN0cmluZyB0eXB7fTsKCWNvbnN0IGludCBreyAwIH0sIHB7IDEgfSwgbnsgMiB9OwoJaW50IG1hZ2ljem5hX2xpY3piYXt9OwoJdmVjdG9yPGludD4gZ3JheyBrLCBrLCBwLCBwLCBuLCBwLCBuLCBrLCBrLCBwLCBrLCBwLCBwLCBuLCBwLCBrLCBuLCBrLCBuLCBrLCBwLCBrLCBwLCBuIH07Cgljb3V0IDw8ICJOYXBpc3ogbG9zb3fEhSBkb2RhdG5pxIUgbGljemLEmSBjYcWCa293aXTEhSAiIDw8IGVuZGw7CgljaW4gPj4gbWFnaWN6bmFfbGljemJhOwoJY291dCA8PCBlbmRsIDw8ICJQS00iIDw8IGVuZGwgPDwgZW5kbCA8PCAiPiAiOwoJd2hpbGUgKGNpbiA+PiB0eXApCgl7CgkJc3RyaW5nIHR5cF9rb21wdXRlcmEgPSBsaWN6YmFfbmFfcGtuKGdyYVttYWdpY3puYV9saWN6YmElZ3JhLnNpemUoKV0pOwoJCWludCB0eXBfZ3JhY3phID0gW10oc3RyaW5nIHcpLT5pbnR7aWYgKHcgPT0gImsiKXJldHVybiAwOyBpZiAodyA9PSAicCIpcmV0dXJuIDE7IGlmICh3ID09ICJuIilyZXR1cm4gMjsgcmV0dXJuIDQ7IH0odHlwKTsKCQlzd2l0Y2ggKHR5cF9ncmFjemEpCgkJewoJCWNhc2UgMDoKCQkJY291dCA8PCB0eXAgPDwgIiBwcnplY2l3a28gIiA8PCB0eXBfa29tcHV0ZXJhIDw8IGVuZGw7CgkJCXNwcmF3ZHpfd3luaWsodHlwX2dyYWN6YSwgZ3JhW21hZ2ljem5hX2xpY3piYSVncmEuc2l6ZSgpXSk7CgkJCSsrbWFnaWN6bmFfbGljemJhOwoJCQlicmVhazsKCQljYXNlIDE6CgkJCWNvdXQgPDwgdHlwIDw8ICIgcHJ6ZWNpd2tvICIgPDwgdHlwX2tvbXB1dGVyYSA8PCBlbmRsOwoJCQlzcHJhd2R6X3d5bmlrKHR5cF9ncmFjemEsIGdyYVttYWdpY3puYV9saWN6YmElZ3JhLnNpemUoKV0pOwoJCQkrK21hZ2ljem5hX2xpY3piYTsKCQkJYnJlYWs7CgkJY2FzZSAyOgoJCQljb3V0IDw8IHR5cCA8PCAiIHByemVjaXdrbyAiIDw8IHR5cF9rb21wdXRlcmEgPDwgZW5kbDsKCQkJc3ByYXdkel93eW5payh0eXBfZ3JhY3phLCBncmFbbWFnaWN6bmFfbGljemJhJWdyYS5zaXplKCldKTsKCQkJKyttYWdpY3puYV9saWN6YmE7CgkJCWJyZWFrOwoJCWRlZmF1bHQ6CgkJCWNvdXQgPDwgIkRvendvbG9uZSB0eXB5OiBrLCBwLCBuIiA8PCBlbmRsOwoJCX0KCQljb3V0IDw8IGVuZGw7CgkJY291dCA8PCAiPiAiOwoJfQp9CgpzdHJpbmcgbGljemJhX25hX3BrbihpbnQgdykKewoJc3dpdGNoICh3KQoJewoJY2FzZSAwOiByZXR1cm4gImsiOwoJY2FzZSAxOiByZXR1cm4gInAiOwoJY2FzZSAyOiByZXR1cm4gIm4iOwoJfQoJcmV0dXJuICJixYLEhWQiOwp9Cgp2b2lkIHNwcmF3ZHpfd3luaWsoaW50IGdyYWN6LCBpbnQga29tcHV0ZXIpCnsKCWlmIChncmFjeiA9PSBrb21wdXRlcikKCQljb3V0IDw8ICJyZW1pcyIgPDwgZW5kbDsKCWVsc2UgaWYgKChncmFjeiArIDIpICUgMyA9PSBrb21wdXRlcikKCQljb3V0IDw8ICJncmFjeiB3eWdyeXdhIiA8PCBlbmRsOwoJZWxzZQoJCWNvdXQgPDwgImtvbXB1dGVyIHd5Z3J5d2EiIDw8IGVuZGw7CglyZXR1cm47Cn0=