Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
Problem hidden on 2013-04-22 13:56:30 by SÅ‚awomir Wernikowski
WIPING11 - Szyfrator |
Zadanie eliminacyjne w konkursie PING 2013 organizowanym przez
Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie
Szyfrator
Prototypowy szyfrator PING-SEKRET szyfruje i deszyfruje wiadomości przesyłane eksperymentalnym grawitacyjnym kanałem transmisyjnym. Alfabet znaków, jakie można użyć w wiadomości jest na razie bardzo skromny - składa się na niego spacja, 26 liter alfabetu łacińskiego, kropka, wykrzyknik, pytajnik, przecinek i znak minus. Kodowanie wiadomości przebiega następująco:
- jeśli wiadomość wejściowa ma długość nie będącą wielokrotnością liczby osiem, to odpowiednio wydłuża się ją z prawej strony znakami minus; znaki te usuwa się przy dekodowaniu tak, aby uwidaczniały się po stronie odbiorcy; oznacza to, że znaki minus nie powinny być umieszczane na końcu wiadomości źródłowej
- każdy znak wiadomości zastępuje się ciągiem 5 bitów odpowiadającym umownemu kodowi znaku; w obecnej implementacji spacja ma kod 0, litery mają kody od 1 do 26, kropka 27, wykrzyknik 28, pytajnik 29, przecinek 30 i minus 31
- powstały strumień bitów przedstawia się przy pomocy cyfr szesnastkowych z użyciem wielkich liter alfabetu łacińskiego i przesyła do odbiorcy.
Twoim zadaniem jest implementacja szyfratora i deszyfratora kodu PING-SEKRET.
Wejście
Dwa wiersze tekstu:
- pierwszy zawierający jedno ze słów KODUJ i DEKODUJ, określające tryp pracy szyfratora
- drugi zawierajacy łańcuch o maksymalnej dlugości 1000 znaków, przeznaczony do szyfracji/deszyfracji
Wyjście
Jeden wiersz tekstu zawierający zaszyfrowany/zdeszyfrowany komunikat.
Przykład
Wejście:
KODUJ
PING-SEKRET
Wyjście:
825C7FCCAB9169FFFFFF
Wejście:
DEKODUJ
825C7FCCAB9169FFFFFF
Wyjście:
PING-SEKRET
Informacje dodatkowe
-
program zostanie uruchomiony 10 razy dla różnych zestawów danych
-
każde poprawne rozwiązanie daje 10% punktacji zadania
-
zadanie ma wartość punktową 6,0
Dodane przez: | Sławomir Wernikowski |
Data dodania: | 2013-03-17 |
Limit czasu wykonania programu: | 1s |
Limit długości kodu źródłowego | 5000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | C CSHARP C++ 4.3.2 CPP C99 JAVA PAS-GPC PAS-FPC PERL PERL6 PHP |