Zadanie polega na napisaniu algorytmu, który w podanym tekście podmieni pewien fragment na inny oraz wykona to w drugą stronę, ale nie będzie używać tymczasowej zawartości, aby uniknąć komfliktu. Przyjmujemy, że zamieniane fragmenty tekstu są tej samej długości.
Weźmy przykładowo tekst "123412". Chcemy zamienić w nim fragment 12 na 34, a 34 na 12. Czyli ostatecznie chcemy osiągnąć "341234". Zadanie można rozwiązać wykonując kolejno trzy operacje zamiany na całym tekście tj. 12 na 00, potem 34 na 12, a potem 00 na 34. Oznaczałoby to, że kolejne przekształcenia zwracałyby: 123412 - 003400 - 001200 - 341234. Jest to poprawne podejście analogiczne do wymiany wartości dwóch zmiennych. W tym jednak zadaniu chcemy, aby algorytm TYLKO RAZ przejrzał cały tekst.
Podczas zamiany trzeba uwzględnić sytuację, gdy dany znak może zostać zastąpiony dwa razy. Przykładowo weźmy 12221, gdzie będziemy zastępować 12 przez 21. Pierwszy fragment występuje na początku 12221 - 21221. Po zamianie kolejna ramka również wychwytuje 12 do zamiany, ale 1 już raz została zamieniona, więc taka zamiana jest niepoprawna! Wynikiem końcowym powinno być 21212.
Oto przykładowy algorytm realizujący przedstawione wyżej zadanie:
Algorytm przegląda kolejne litery tekstu. Jeśli od i-tej litery zaczyna się któryś z fragmentów to zastępuje tym drugim, a następnie zwiększa indeks i o długość zastępowanego fragmentu. Ma to na celu uniknięcie sytuacji, że dany znak zostanie zastąpiony dwukrotnie choć nie powinien.
Do przetestowania napisanych funkcji można skorzystać z poniższego fragmentu programu, który wczyta potrzebne wartości od użytkownika i wypisze wynik na konsole.