Funkcja przeszukująca stringa


(northwest) #1

Witam serdecznie,

Mam taki blok danych:

E|2014-10-26 04:00:00|usa|Chopin|<finish>
C|26-10-2014 04:00:01|26-10-2014 05:00:00|2|1||dzisiaj|FULL||usa|Chopin|<finish>
F|26-10-2014 04:00:01|usa|Chopin|<finish>
D|26-10-2014 05:00:01|26-10-2014 15:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
C|26-10-2014 15:00:01|26-10-2014 16:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
D|26-10-2014 16:00:01|27-10-2014 02:00:00|2|1||jutro|FULL||usa|Chopin|<finish>

 

 

Na przykładzie drugiego wiersza: C|26-10-2014 04:00:01|26-10-2014 05:00:00|2|1||dzisiaj|FULL||usa|Chopin|<finish>

Oznacza że pojazd będzie poruszał się w godzinach od 26-10-2014 04:00:01 do 26-10-2014 05:00:00

 

Na przykładzie czwartego wiersza: D|26-10-2014 05:00:01|26-10-2014 15:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>

Oznacza że pojazd będzie się poruszał od 26-10-2014 05:00:01 do 26-10-2014 15:00:00.

 

Wiesz E|2014-10-26 04:00:00|usa|Chopin|<finish> - oznacza że pojazd stoi.

 

Potrzebuję funkcję która przeszuka powyższego stringa i wyszuka blok danych najbliższego wskazanej dacie.

Czyli np. szukam daty 26-10-2014 05:00:01 - to zwróci mi blok: C|26-10-2014 15:00:01|26-10-2014 16:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>

 

 

Ma ktoś pomysł jak to zrobić?

 

Bardzo proszę o pomoc,

Northwest


(Grzelix) #2

Jest kilka nie dopowiedzeń co do domeny zadania … ale pobieżnie zrobiłbym to tak:

stworzył słownik który jako klucz miałby datę (tu pytanie tylko pierwszą datę mamy, czy obydwie bierzemy pod uwagę - nie mniej ogólny zarys koncepcji zostaje) a wartością byłby wiersz. Następnie posortować i zwrócić najbliższą wartość.

 

I tak trzeba przeczytać całość żeby znaleźć odpowiedni rekord, więc dużego narzutu tu nie widzę. Z drugiej strony jeśli takie rozwiązania są ci potrzebne dobrze by było zastanowić się nad lepszym sposobem przetrzymywania danych.


#3

Jaki język progrmaowania?

 

Przelatujesz w pętli po wszystkich liniach{

   zamieniasz date na liczbę (np. unixsowy timestamp)

   jak liczba jest mniejsza od szukanej i jednocześnie większa od zmiennej ‘znaleziona’ to zapisujesz ją do zmiennej ‘znaleziona’. Zapisujesz tez numer wiersza.

}

 

Wypisujesz liczbę ze zmiennej znaleziona zamieniając ją na datę. i wypisujesz numer wiersza ostatnio zapisany.