![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam,
męczę się z pewnym problemem, a nie mogę nigdzie znaleźć odpowiedzi na to albo źle szukam... Od razu przejdę do rzeczy - mam tablicę zawierającą wartości: 1000000, 1010000, 1011000, 1011010. Muszę zrobić następującą akcję: dodać na początek stringa 0 (co nie jest oczywiście problemem) i następnie od końca stringa usunąć 00 parami, tzn. na podanych przykładach powinno po wykonaniu skryptu wyjść: 1000000 -> 01 1010000 -> 0101 1011000 -> 010110 1011010 -> 0011010 innymi słowy - powinny zostać usunięte po dwa zera od tyłu tylko jeżeli istnieją w parze, aż nie natrafi na inny znak lub parę skłądającą się z 0 i czegoś lub czegos i 0. Kombinuje dosłownie jak koń pod górę i po próbowaniu różnych sposobów - jedyne co do tej pory mi wyszło to pętla for... Może ktoś kojarzy funkcję, która pozwala na odcinanie od końca? Czy w jaki sposób to ugryźć?!
próbowałem w to wmieszać pętlę while, ale nie wychodziło mi zupełnie. Nie wiem jak do tego podejść... ;/ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja bym się bawił w coś w stylu:
Oczywiście w pętli by takie coś z każdym elementem robił. Dlaczego tak? Bierze element i sprawdza jego dwa ostatnie znaki. Jeśli jest to ciąg 00 to zamienia ciąg na pozbawiony ich i ustawia flagę, ze zaszła zmiana. Oraz próbuje robić to tak długo jak tylko się da. Flaga $change jest by rozpoznawać czy kontynuować zmienianie czy nie. zaś $was changed by rozpoznać czy zmiany zaszły i w razie czego dodać 0 na początku. Nie dawałem sprawdzenia z -2 do warunku while bezpośrednio bo by nam umknęło czy mamy owo dodatkowe 0 na początek dodać czy nie. Zastosowanie samego: gubi nam informację czy dodać to zero na początku czy nie. Nie wiemy bowiem ile razy się wykona i czy choć raz. Jeśli zaś dodamy dokładanie owego zera wewnątrz pętli while to może nam je dodać kilka razy a tego nie chcemy. Ma dodać tylko jednokrotnie. EDIT: No i mnie ubiegli z wyrażeniem regularnym (IMG:style_emoticons/default/winksmiley.jpg) A poza tym tak patrzyłem i w sumie do-while tu może być, bo przebiega całość przynajmniej raz (IMG:style_emoticons/default/smile.gif) Które jest szybsze to trzeba by sprawdzić. Ten post edytował thek 23.09.2009, 14:00:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 23:16 |