EDYCJA Zmodyfikowałem sformułowanie zasad, aby niektóre rzeczy, które były ukryte, były bardziej wyraźne. Położyłem też nacisk na wyjaśnienie niektórych punktów pozornego zamieszania i wyraźnie zdefiniowałem opcję tworzenia samodzielnego programu zamiast funkcji.
Celem jest tutaj utworzenie funkcji, która pobierze plik tekstowy (lub ciąg znaków) i przetransponuje go, tak aby linie stały się kolumnami i odwrotnie.
Przykład:
Jestem SMS-em Transponuj mnie. Możesz to zrobić?
Prowadzi do:
ITC ra aan mn sy apo ou ts eed xo tm .ei .t ?
Zasady:
- Masz prawo przypuszczać, że tylko białych znaków stosowane są
" "i"\n"i że nie ma końcowe białe znaki na każdej linii. - Możesz założyć, że plik to ASCII. Który znacznik linii końcowej, którego chcesz użyć, zależy od Ciebie (CRLF lub LF). Musi działać poprawnie na przykładzie, ale powinien również działać na każdym wejściu, który spełnia powyższe założenia.
- Być może będziesz musiał wstawić spacje (jak w przykładzie) tam, gdzie ich nie było, aby utrzymać kolumny w linii.
- Twój wynik nie może zawierać końcowych białych znaków w żadnej linii .
- Ostatni znak nowej linii (dla ostatniego wiersza) jest opcjonalny.
- Powinna to być funkcja lub pełny program. Jeśli twoja funkcja akceptuje ciąg, powinien zwrócić wyniki jako ciąg. Jeśli akceptuje nazwę pliku, zwracana jest nazwa pliku, w którym zapisano wynik. Dodatkowo możesz napisać pełny program, który akceptuje dane wejściowe ze STDIN i wypisuje poprawny wynik do STDOUT; jeśli to zrobisz, musisz nie wyjście coś na stderr.
- Najkrótsza procedura wygrywa, ale będę głosować za każdą odpowiedzią, którą lubię.
W oparciu o reguły dane wyjściowe w tym przykładzie mają długość 53 lub 52 bajty (dla nowych linii LF) w zależności od tego, czy dołączony jest końcowy nowy wiersz, czy nie.
Uwaga: Nie jest to szczególne wymaganie, ale jeśli twoja funkcja, gdy uruchomisz ją dwa razy z rzędu, nie jest identyczna z oryginalną (końcowa nowa linia może być inna, a puste linie na końcu pliku zostaną usunięte), oznacza to, że prawdopodobnie złamanie jednej z zasad.