Ostatnie posty

Skoro można, to proszę o kilka przykładowych liczb, dla których odpowiedzią powinno być NIE.
Niby mało w porównaniu do tego, co się działo kiedyś, nadal jednak >1000 osób.
Za to strasznie mało rozmowni :]
Wydaje mi się, że w tej sytuacji bardziej opłaca się zebrać drugiego dnia z trzeciej polany, a trzeciego dnia – z drugiej.
Taką sprawdzarkę popełniłem:

#!/usr/bin/perl -wpl
/^NIE$/ or
!/^((?:1|\((?1)[+*](?1)\))(?:[+*](?1))?)$/ and $_="!" or
y/1//>100 and $_=">" or
$_=eval

Dla każdego wiersza wejścia na wyjściu jest wypisywane:
NIE - jeśli na wejściu było NIE,
! - jeśli coś jest nie tak ze składnią wyrażenia,
> - jeśli jest więcej niż sto jedynek,
wartość wyrażenia - w pozostałych przypadkach.

Na wyjściu powinno być to co było w .in z wyjątkiem wierszy NIE i pierwszej linijki (ilości przypadków testowych).
Pierwszego dnia na kolejnych polanach jest 10, 0 i 10 grzybów. Załóżmy że zbieramy 10 z pierwszej. Drugiego dnia jest odpowiednio 5, 16 i 15 grzybów. Zbieramy z drugiej i mamy 26 (OK). Trzeciego dnia jest odpowiednio 10, 16 i 20 grzybów. Dlaczego wobec tego trzecia odpowiedź to 57??
Pozdrawiam,
L.P.
Odpowiedź znajduje się w treści zadania.
Przykładowe dane do zadania :
3
5 10
16 0
5 10

Czy ktoś może mi wytłumaczyć jak to się dzieje ze po pierwszym dniu można uzbierać 10 grzybów podczas gdy na polanie jest 5, 16 lub znowu 5 ( jeszcze nie było nocy ).

Pierwszego dnia najwięcej zbierze się z 2 polany 16 grzybów - tak wnioskuje po przeczytaniu zadania -- ale przykładowa odpowiedz jest inna . A więc według jakiego algorytmu pojawiają się te grzyby ??
Prawie w co drugim teście są duplikaty. Nie polecam, zeszło mi trochę czasu na debuggowaniu.
Nie wszystkie testy są zgodne ze specyfikacją. W 45 teście dwa razy występuje wpis 606 563 T. W kilku innych (45,55,95,163) testach prawdopodobnie są analogiczne nieścisłości.
Potwierdzam
Wydaje mi się że to zadanie z typu łatwych, o ile ktoś pamięta metodę z liceum. Przechodzi Wam poniżej 100 jedynek dla danej testowej 982451653?

Edit: A poprawność względem podanej w zadaniu gramatyki najłatwiej sobie udowodnić indukcyjnie na marginesie.

Edit2: O, nawet ogłoszenie dali na ten temat. W sumie tylko produkcja W -> (W) sprawia problemy jak się ma złe przypadki bazowe, pozostałe łatwo zamienić na sekwencję produkcji z gramatyki w zadaniu.
bc mi ładnie liczy dla około miliarda:
./jed < in | fgrep -v 'NIE' | bc

Oraz sprawdzenie ilości jedynek:
./jed < in | awk -F '1' '{if (NF-1 > 100) print NR}'

Sprawdzania poprawności wyrażenia zgodnie z podanymi regułami się nie podejmuję. ;)
latwo mozna sprawdzic swoje pliki out za pomoca:
python -c "print(eval(open('x.out').read()))" gdzie x.out jest plikiem, ktory wygenerowalismy (oczywiscie eval() dziala tylko dla wyrazen, wiec trzeba pamietac na czym sie go wola)
Patrzę na zadanie, nic do głowy nie przychodzi...
No to sobie pomyślałem, że rozwiążę łatwiejsze, dzięki czemu przynajmniej odfiltruję sobie nietrywialne testy.
Najpierw Bajtek robi wszystkie swoje ruchy, czyli efektywnie _wybiera_ talię Bitka do rozgrywki, potem Bitek.
Tu rozwiązanie jest proste. Czy Bitek ma talię przegrywającą ze wszystkim? Albo chociaż taką, co co najwyżej remisuje?

Odpalam testy... wszystko się zgadza.
Chwilę zajęło mi przekonanie samego siebie, że obie gry są równoważne;-)
Odpowiedź czasem może sugerować sposób rozwiązania w sposób istotniejszy, niż przy innych problemach. Ponadto pomaga sprawdzić poprawność w niewielkim stopniu (istnieje bardzo wiele możliwych odpowiedzi, a znajomość jednego nie pomaga zweryfikować własnego). Dlatego prosimy o nie publikowanie outów do zadania.

Można jednak dzielić się testami (.in) i dyskutować o istnieniu rozwiązania dla poszczególnych liczb.

Oczywiście nie będziemy nikogo karali za niewiedzę. W tym autorów wszystkich wypowiedzi, które pojawiły się przed publikacją tego posta i zostały ukryte.