Ciąg Spójrz i Powiedz to nietypowy ciąg, którego kolejne wyrazy powstają poprzez wypowiedzenie poprzedniego wyrazu. Wyraz wypowiada się mówiąc ile jest każdej kolejnej cyfry w wyrazie. Najpierw należy podać ile takich samych cyfr po sobie następuje, a następnie jaka to jest cyfra.
Pierwszy wyraz takiego ciągu to 1, a oto kolejne przekształcenia
n | Wyraz | Czytamy jako |
---|---|---|
1 | 1 | jedna jedynka |
2 | 11 | dwie jedynki |
3 | 21 | jedna dwójka, jedna jedynka |
4 | 1211 | jedna jedynka, jedna dwójka, dwie jedynki |
5 | 111221 | trzy jedynki, dwie dwójki, jedna jedynka |
6 | 312211 | ... |
Wyrazy tego ciągu można ustawić następująco: 1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, 31131211131221, 13211311123113112211, ..
Oto przykładowy kod funkcji SpojrziPowiedz(), która przyjmuje jeden argument wyraz - poprzedni wyraz, który wystąpił w ciągu Spójrz i Powiedz. Jeśli nie zostanie przekazana żadna wartość to zostaje zwrócony pierwszy wyraz tego ciągu czyli "1".
Na początku funkcji należy sprawdzić czy został podany jakikolwiek argument. Jeśli nie to zwracamy pierwszy wyraz. Rozpoczynamy przeglądanie kolejnych cyfr wybierając pierwszy znak i inicjalizując licznik na wartość 1. Następnie w pętli przeglądamy kolejne znaki. Jeśli natrafimy na taki sam znak jak ostatnio wybrany to zwiększamy licznik. W przeciwnym razie należy dopisać na koniec nowego wyrazu parę licznik × cyfra, zaktualizować wybrany znak i zresetować licznik. Po przejrzeniu wszystkich znaków należy dopisać ostatnią parę i zwrócić nowy wyraz.
Poniższy fragment kodu wczytuje ile wyrazów ciągu wypisać, a następnie je wszystkie wypisuje. Użycie funkcji polega na pobraniu pierwszego wyrazu, a następnie jego aktualizowaniu poprzez użycie tej samej funkcji SpojrziPowiedz().