wtorek, 12 maja 2015

Tydzień 12: kolekcje cz. 2

Ćwiczenia

MasterMind to gra planszowa dla dwóch osób. Gracze mają do dyspozycji pionki w sześciu kolorach. Pierwszy gra układa z pionków kod czteroelementowy, kolory w kodzie mogą się powtarzać. Zadaniem drugiego gracza jest odgadnięcie kodu wybranego przez pierwszego gracza.
Drugi gracz ma parzystą liczbę prób (zwykle 10). W każdej próbie gracz podejmuje próbę odgadnięcia kodu wybranego przez przeciwnika. Pierwszy gracz ocenia próbę drugiego gracza za pomocą białych i czarnych pionków. Za każdy pionek we właściwym kolorze i na właściwej pozycji przyznaje czarny pionek. Za każdy pionek we właściwy kolorze, ale na niewłaściwej pozycji przyznaje biały pionek. Następnie drugi gracz ma prawo podjąć kolejną próbę.
Zadanie: zaimplementować jeden krok algorytmu grającego w MasterMind. Zaimplementujemy algorytm, który trzyma zbiór możliwych jeszcze układów. Zgadywanie polega na wybraniu ze wszystkich możliwych jeszcze układów takiego, który najlepiej dzieli ten zbiór (generuje podział minimalizujący wielkość największego zbioru możliwych układów po zapytaniu). Przy parametrach standardowego MasterMinda taki algorytm radzi sobie bez problemu.

Laboratorium

  1. Napisz program, który dla danego pliku tekstowego wypisze następujące informacje:
    • z ilu słów składa się plik,
    • słowo na pozycji 45,
    • z ilu różnych słów składa się plik,
    • wszystkie słowa pliku w kolejności alfabetycznej (każde słowo na liście pojawia się tylko raz),
    • dla każdego słowa, ile razy to słowo występuje w pliku,
    • wszystkie słowa, które mają więcej niż 6 liter, w kolejności alfabetycznej, bez powtórzeń.
    Do rozwiązania zadania należy użyć odpowiednich kolekcji.
  2. Przy wypisywaniu zawartości katalogu domyślne sortowanie jest leksykograficzne. Zatem plik laboratorium12.txt jest wypisywany przed plikiem laboratorium2.txt. Napisz własny komparator, który sortuje tak, że nazwa laboratorium2.txt jest wcześniej niż nazwa laboratorium12.txt. Użyj go do wypisania w odpowiedniej kolejności listy plików z wybranego katalogu.
    Wskazówka. Do odczytywania zawartości katalogu można użyć klasy File.

Brak komentarzy:

Publikowanie komentarza