1 / 15
Jan 2017

Nadaktywna litera

Maly Jasiu dzisiaj byl bardzo nadaktywny na zajeciach lekcyjnych, mowil wiecej niz kazdy z pozostalych uczniow, i to zawsze nie na temat. Pani postanowila ukarac go dodatkowa praca domowa. Dostal tekst, w ktorym musi sprawdzic, czy w kazdym zdaniu pewna litera alfabetu, zdefiniowana jako nadaktywna, wystepuje wiecej niz dwa razy od kazdej z pozostalych liter alfabetu. Na tak zadana prace domowa, jest jeden prosty i szybki sposob. Cala prace nalezy zlecic maszynie liczacej.

Wejscie
Na wejsciu znajduje sie tekst zlozony z malych i duzych liter alfabetu lacinskiego oraz znakow przecinka i kropki, w ktorym znajduja sie zdania. Kazde zdanie sklada sie z co najmniej jednego slowa i zakonczone jest znakiem kropki. Slowa w zdaniu oddzielone sa od siebie znakiem spacji lub znakiem konca linii, przecinek nie nalezy do slowa. Rozmiar plikow wejsciowych nie przekracza 1 MB.

Wyjscie
Na wyjsciu, dla kazdego zdania, w osobnym wierszu nalezy podac jego numer porzadkowy w tekscie, po czym wstawic znak myslnika, a nastepnie albo wypisac mala litere alfabetu, jesli w zdaniu tym litera ta jest nadaktywna, albo wypisac slowo BRAK, gdy w zdaniu nie wystepuje litera nadaktywna.

A. a.
B
,
C ,.
D
,
.
FF, g.
h.

Out

1 - BRAK
2 - BRAK
3 - BRAK
4 - BRAK
5 - BRAK
6 - BRAK
7 - BRAK
8 - BRAK
9 - BRAK
10 - BRAK
11 - a
12 - a
13 - BRAK
14 - d
15 - BRAK
16 - h

Dziękuję bardzo za test i poświęcony czas! :slight_smile: Rozwiał on wszelkie wątpliwości ^^

2 months later

Czyli rozumiem, że w tym inpucie jest w sumie 16 zdań? Napisałem właśnie kod i chciałem się upewnić czy dobrze działa więc zacząłem szukać na forum i teraz widzę, że chyba nie do końca rozumiem zadanie... Według rozumowania mojego i mojego programu, zdań jest o pierwsze 10 mniej.
Można liczyć na jakieś doprecyzowanie?

Ok, już rozumiem. Cały akapit, łącznie z treścią jest inputem. Myślałem, że tylko te litery. Dzięki Wam obu :wink:

A ma ktoś może jakieś inne zestawy? bo widzę, że mi nie przechodzi.

Widzę, że Kolega ma już dość sporo zadań rozwiązanych więc powinien trochę więcej potestować swój kod zanim zwróci się po poradę na forum, a na pewno nie już po pierwszym WA.
Od siebie dodam, że też miałem trochę problemów z tym zadaniem i paradoksalnie spore doświadczenie na SPOJu może wpływać niekorzystnie w tym konkretnym zadaniu. Rutyna czasem sprawia, że to co 'samo' się pisze, może powodować błędy, których początkujący by nie zrobił. Być może w tym przypadku problem wynika z tego samego co u mnie. Mogę tylko napisać, że nie ma w tym zadaniu żadnych haczyków - co łatwo stwierdzić po procencie akceptacji zadania.

Wszystko co napisałeś to prawda :wink: Pierwsze co, to od razu zacząłem podejrzewać jakiś haczyk, a tymczasem okazało się, że popełniłem błąd w poszukiwaniu największych liczb wystąpień liter. Szybkie rozrysowanie w paincie pozwoliło niemal od razu określić przyczynę. Dzięki :wink:

13 days later

Cześć, męczę się z tym zadaniem już kilka dni, wszystkie testy wychodzą mi ok, próbowałem już kilka sposobów ale ciągle przekraczam limit czasu jestem już bliski poddania się, wiec bardzo proszę o jakąś wskazówkę bo być może źle interpretuje temat zadania: jest napisane, że każde zdanie składa się z conajmniej jednego słowa i zakończone jest kropką a przecinek nie należy do słowa, tymczasem loginus pisze, że jak jest 16 kropek to jest 16 zdań - w takim razie co z wyrażeniami złożonymi z samych spacji i przecinków i zakończonymi kropką albo z wielokropkami? Czy pisać też warunek dla zdania na końcu tekstu które nie jest zakończone kropką? Być może niepotrzebnie wykluczam takie wyrażenia i te warunki zajmują czas podczas wykonania programu a nie pojawiają się one w testach? Albo popełniam jakiś prosty błąd podczas zliczania liter chociaż robię to za pomocą pętli lub wyrażeń regularnych - a szybszego sposobu nie znam. Jeżeli będzie potrzeba prześle swój kod na priv, proszę o pomoc bo już trace cierpliwość :slight_smile:

Nie ma wielokropków ani zdań bez liter. Przecinki nie odgrywają żadnego znaczenia, poza tym że są. Czas też nie jest wyśrubowany, bo ktoś w C# zaliczył zadanie z czasem 0.11s. W ogóle przekroczeń czasu jest 35 - z czego chyba prawie wszystkie Twoje :wink: Prawdopodobnie źle pobierasz dane i po pobraniu całego wejścia Twój program dalej oczekuje wprowadzenia danych.

Dzięki za odpowiedź, tak - wstyd się przyznać ale to wszytsko moje :slight_smile: Prawdopodobnie jest tak jak piszesz i popełniam jakiś błąd przy wczytywaniu danych, będę kombinował dzięki wielkie :slight_smile:

W końcu! Już prawie wpadłem w depresje :wink: Po tylu niepowodzeniach w C# związanych z przekroczeniem czasu, po przepisaniu programu w C++ przeszedł on od razu bez problemów. Wychodzi na to, ze w takich przypadkach wiele rzeczy lepiej napisać sobie samemu ręcznie i zejść z metodami w programie poziom niżej. :slight_smile:

Podziwiam Twój upór - prawie 100 nieudanych prób! To świadczy o tym, że jesteś dobrym materiałem na programistę :slight_smile:

Dzięki wielkie, chociaż jak widać moje początki z C# do łatwych nie należą :wink: