Zadanie 2 - GRA =============== W Bardzo Głupią Grę gra się tak: jest N graczy i arbiter. Gracze są od siebie odizolowani i komunikują się tylko z arbitrem. Są dwie wersje gry, z następującymi regułami: a) arbiter pobiera kolejno od każdego gracza (pierwszego, drugiego, ..., N-tego i tak w kółko) liczbę całkowitą z przedziału 0..9. Jeżeli gracz poda taką samą liczbę jak jego poprzednik to wygrywa i gra się kończy. b) każdy z graczy, w dowolnej chwili w której ma ochotę, przesyła do arbitra swoją liczbę. Jeżeli ta liczba jest taka sama, jak poprzednio podana arbitrowi liczba i jeżeli ta poprzednia liczba została podana przez innego gracza niż bieżący, to bieżący gracz wygrywa (czyli z grubsza tak jak poprzednio, tylko że kolejność podawania liczb przez graczy może być dowolna). Przykładowy program gracza znajduje się na stronie, obok zadania. Zadanie polega na napisaniu programu arbitra, który z linii poleceń dostaje parametr N, uruchamia N procesów graczy (zakładamy, że wykonywalny program gracza znajduje się w bieżącym katalogu pod nazwą gracz) i przeprowadza rozgrywkę. Program gracza do komunikacji używa swojego standardowego wyjścia, jak w graczu przykładowym. Gra trwa tak długo, aż ktoś wygra, potem arbiter powinien brutalnie wszystkich graczy uśmiercić i wypisać wynik na ekran (może też wypisywać przebieg rozgrywki w trakcie). Dołącz też plik Makefile kompilujący projekt. Implementacja arbitra dla wersji a) reguł gry jest wystarczająca do zaliczenia zadania w całości. Osoby, które uważają to za zbyt małe wyzwanie i chcące się jeszcze czegoś nowego przy okazji nauczyć mogą zaimplementować wersję b). Wskazówka: "man select" (lub, alternatywnie, wątki, ale wtedy trzeba dbać o synchronizację). Jak się to dobrze zrobi to program nie powinien się pewnie wydłużyć o więcej niż kilka linijek. Można założyć, że gracze będą dobrze działać i obsługą błędów się nie przejmować. Termin: 10.01.2007, aszek@mimuw.edu.pl FAQ === Q: Wszystkie programy graczy podaja te sama sekwencje liczb i rozgrywka od razu sie konczy, o co chodzi? A: Niezainicjalizowany generator liczb losowych w graczu. W graczu trzeba dodac na przyklad: srandom(time()) a kolejne programy graczy odpalac z sekundowymi przerwami, zeby czas byl w kazdym inny.