GitS OST + Ruby = projekt z lingwistyki komputerowej
Dzisiaj się obudziłem, ze na środę należy zrobić jakiś mini-projekt z Lingwistyki Komputerowej. Były na to chyba 4 tygodnie, ale co się będę spieszył, czas nie zając.. Szybciutko wybrałem zadanie - Napisz program, który wczytuje tekst i konstruuje sieć skończoną „przechowującą” wyrazy zawarte w tekście. - i zasiadłem do pracy.
Stwierdziłem, że to dobra okazja do zaznajomienia się z Rubym i tak rzeczywiście było. Pisanie sieci skończonej w C zajęłoby mi spokojnie kilka godzin (wliczając debugging i wyszukiwanie gdzie wychodze poza zakres tablicy, a gdzie nie dochodze do końca), natomiast mój nowy ulubieniec dając mi do dyspozycji zagnieżdżane rekurencyjnie tablice haszowe pozwolił mi na wykonanie zadania w godzinkę. Wliczając w to zapoznanie się z językiem, jego składnią, itd... Coś czuję, że szykuje się dłuższa współpraca ;)
A linijek kodu ile zaoszczędziłem.. Wersja robocza:
#przerobka danych wejsciowych
main = {}
string = gets.chomp
tab_string = string.split
tab_string.each do |str|
tab_str = str.split(//) # dziele string na tablice znakow
tab_str[tab_str.length] = '0'
#dodawanie do main:
i = 0;
hasz_tmp = main
while (tab_str[i])
if hasz_tmp[tab_str[i]] # takie przejscie istnieje, wiec nie nadpisujemy
hasz_tmp = hasz_tmp[tab_str[i]]
else # przejscie jeszcze nie istnieje - dodajemy
hasz_tmp[tab_str[i]] = {}
hasz_tmp = hasz_tmp[tab_str[i]]
end
i+=1
end
end
puts main
Czy wasz język to potrafi? ;)
O wpisie
- Dodano:
- 04 kwietnia 2005, 15:20
- Kategorie:
- programowanie ruby
4 komentarze
przeskocz do formularza