1 / 21
May 2016
1 year later

@tarpauwatratar Widzę, że rozwiązałeś ostatecznie zadanie. Jakiś kruczek znalazłeś? Próbowałem już na 2 różne sposoby i dalej WA. Więc albo nie rozumiem do końca treści, albo robię coś głupiego;).

Nie od razu je rozwiązałem :wink:

Myślę, że ze zrozumieniem treści nie masz większych problemów. Problemem jest “wredność” zadania. Z tego co widzę mój kod to trochę ifów, funkcja reverse, isdigit, isalpha i w sumie tyle. Polecam napisać dwie oddzielne funkcje do kompresji i dekompresji.

A ja zachęcam do nieużywania instrukcji go to, zmiennych globalnych, użycie jednej [lub dwu klas], z metodami: kompresja i dekompresja i wreszcie, tak jak to robią “najlepsi koderzy”, nie [nad]używać funkcji main() i wszystko rozpoczynać w funkcji start() lub starter() :wink:
Czyli:
main(){
start();
return 0;
// i to by było na tyle :wink:
}

A tak na poważnie, co ma piernik do wiatraka? Co powyższe [także dwie funkcje] ma wspólnego z rozwiązaniem zadania? Powyższe ma tylko wpływ na jakość kodu, jego czystość[brudność :wink: ] czy ewentualnie nawet piękność kodu.
“zwykły” kod <= czysty kod <= piękny kod <-- w takiej kolejności.

Do rozwiązania tego zadania wystarczy uważne przeczytanie treści zadania i skupienie się na kompresji, a szczególnie na:
Kompresji liter dokonujemy tylko wtedy gdy ich długość po skompresowaniu jest mniejsza niż długość liter bez kompresji.
i
Podobnie jak ma to miejsce w przypadku liter kompresję przeprowadzamy tylko wtedy gdy wyraz w postaci skompresowanej jest krótszy niż dana liczba jego wystąpień porozdzielana spacjami.

gdzie krótsza [mniejsza] to co innego niż mniejszarówna. Natomiast jak to zastosujesz w swoim kodzie, nie ma żadnego znaczenia. Polecam użyć instrukcji goto :wink: i AC gwarantowane.

PS
Sędzia w tym zadaniu jest bardzo miłościwy i mało dokładny. Ignoruje wszystkie nadmiarowe białe znaki, gdzie nadmiarowe to więcej niż 1 wymagany i konieczny…

1 year later

Witam,
Mam pytanie odnośnie tego zadania.
We wzorcowym teście w drugiej linii występuje spacja po 2 słowie kkkkompressja.
KOMPRESJA
kkkkompressja kkkkompressja
kkkkompressja tekstu tekstu

Czy to oznacza że na końcu każdego wiersza (oprócz ostatniego) występuje dodatkowa spacja i nie trzeba jej już dodawać przy wczytywaniu linii do stringa(inaczej wyrazy by się zlały w jeden wyraz)?
Poniżej zamieszczam mój kod. Wydaje mi się że problem leży właśnie w białych znakach. Proszę o jakomś wskazówke w rozwiązaniu problemu.

Masz rację, problem leży w białych znakach: https://ideone.com/wTM64i23
Nie wiem czy w testach jest spacja na końcu (pewnie nie), ale przecież nikt ci nie zabrania samemu jej dodać, gdyby nie było :slight_smile:

Zmodyfikowałem trochę program odnośnie tych spacji na końcu lini. Nadal dostaje błędną odpowiedź.

Mogły ktoś podać jakieś testy, których mój program nie przechodzi lub podać jakąś podać jakoś wskazówkę odnośnie mojego błędnego rozumienia treści tego zadania?
Z góry dziękuje za pomoc

Treść rozumiesz dobrze, błędy są w jej realizacji.
Spróbuj ten test:

KOMPRESJA
aaaabaaaa aaaabaaa

Witam.
poprawiłem swój kod jednak ciągle nie mogę dostać AC. Moge prosić jeszcze o jakieś testy lub wskazówki?

KOMPRESJA
baaaaaaba baaaaabaa baaaabbbbbbba baaaabbbbbbba

Wskazówka - nie wczytuj od razu całego tekstu do jednego stringa, najpierw kompresuj pojedyncze wyrazy, potem cały tekst.

3 years later

Proszę bardzo :wink:
DEKOMPRESJA
AGA/3 AG*4A WODAA

8 months later

Dobry wieczór. Ma ktoś może dla mnie jakiś test?

Z góry dziękuję.

2 months later

Witam, czy mógłby mi ktoś podpowiedzieć i podać testy, których nie przechodzi mój kod bo sam nie mam już pomysłów, dzięki.
Edit: Tu był kod

4 months later

jaki powinien być wynik dla

KOMPRESJA
q q q

?
Czy q/3 bo skróciło to zapis (o dwie spacje) czy q q q bo nie bierzemy spacji pod uwagę licząc zysk kompresji?