download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Създаване на 2 програми

< 1 2 3 4 5 6 7 8 >

Автор
Съобщение
anonymous
Чет, 04.06.09, 14:38
Здравейте! От доста време ми се иска да имам 2 програми. Не съм чувал за такива до сега (може и да има), но алгоритмите и за двете са бих казал елементарни. Просто нямам нужните познания по даден език, за да създам такава програма, за това на някой от вас ако му се занимава ще се радвам да ги направи.
1вата: Програма която отброява колко думи има даден текст. Доста често когато пиша домашна трябва да знам броя на думите, а броенето отнема време и е досадно, освен това ако има шум наоколо доста често човек може да се обърка. Алгоритъма за тази програма е много прост, просто тряба да отброи колко знака "интервал" присъстват в текста.
2рата: Тази програма е малко по-сложна и си мисля, че на всеки би му била полезна в даден момент. Програма за намиране на рими. Например искам рими на думата "трева", след което въвеждам "ева" в програмата и тя ми изкарва всички думи в българският език които завършват на "ева" и аз си избирам някоя. Ще е хубаво ако програмата може да търси по две, три или повече букви. Алгоритъма за тази програма също не е много сложен, просто търси в база данни от думи и когато намери съответствие в завършващтите букви с тези които са посочени да ги извежда от страни. Естествено ще трябва доста голяма база от думи, аз мога да се опитам да осигуря всички думи от българският език, ако някои се навие да направи другата част от програмата.
От това което съм виждал в интернет на php също би могло да се създаде, но това ще го кажат спецовете.
Очаквам коментар
редактиран от anonymous на 04.06.09 14:38
редактиран от anonymous на 04.06.09 14:41
insecteater
Чет, 04.06.09, 14:43
Относно първия въпрос - Tools -> Word count... в word-a не ти ли върши работа?

Относно втория - да, може, макар да не е толкова просто на пръв поглед, ако трябва да е качествено. Сега съм на работа, но идеята е интересна. И това - "ева" на нафърфорий фразата "Да го ева" включва ли се в базата данни?

anonymous
Чет, 04.06.09, 14:51
Ами какво да прави човек като не знае всичките функции на Word. Благодаря, това не го знаех...
Относно втората идея... Имах предвид, че самия алгоритъм (поне до колкото мога да си го представя) не ми се вижда чак толкова сложен, просто да търси в база данни и да ги подрежда от зад напред, а другите работи може и да са по сложни, но не знам, все пак както казах не разбирам толкова, че да го създам.
А няма проблем, като сте по-свободни тогава, то не е казано, че трябва точно сега.
Идеята попринцип ми е за рими на "думи", но може да направим няколко изключения за известни култови реплики.
dhtj
Чет, 04.06.09, 14:57
anonymous
Чет, 04.06.09, 15:35
Хее, супер е... Макар, че от една страна исках ние да създадем 1вия
phrozencrew
Чет, 04.06.09, 20:01
sashko92, по първия алгоритъм ще дам едно предложение от мен, което малко поразширено спрямо идеята ти. Използвал съм част от кода за SEO оптимизиране. Този скрипт освен, че брои думите от текстов файл, също и брои коя дума колко пъти се среща във файла:
the_file='ss.txt'
h = Hash.new
f = File.open(the_file, "r")

f.each_line { |line|
  words = line.split
  words.each { |w|
    if h.has_key?(w)
      h[w] = h[w] + 1
    else
      h[w] = 1
    end
  }
}

h.sort{|a,b| a[1]<=>b[1]}.each { |elem|
  puts "\"#{elem[0]}\" се среща #{elem[1]} пъти"
}

file = File.open("ss.txt", "r")
contents = file.read
wc = contents.scan(/w+/).size
print "====================nТекста съдържа: ",wc," думи"

Съдържанието на текстовия файл е:
edno dve tri dve edno
4etiri edno dve tri
pet shest pet

И резултатът е:

Ruby word counter
Ruby word counter

Кода не е особено оптимизиран :) и всяка идея ще е добре дошла. Все пак Ruby е доста приятен и лесен, като логика език и може доста да се поработи по кода. Мисля, че коко, insect и ангелчето биха могли да се включат с някоя и друга хитрина, независимо за Java, PHP, Perl или друг съвременен, задължително изучаем език.

dreamskill
Чет, 04.06.09, 21:49

RE: Създаване на 2 програми

” .....Мисля, че коко, insect и ангелчето биха могли да се включат с някоя .... „
А аз няма ли да мога |-(
anonymous
Чет, 04.06.09, 22:07
Благодаря, Phrozen! Това показва и повторенията което е добре и ако нямам Word... Понеже бавно затоплям, как да стартирам това нещо? Пробвах като го написах на bat файл, но не се получи.
insecteater
Чет, 04.06.09, 22:33
За броенето на думите - обикновено това се налага наистина когато се пише по-големичък тест. В такива случаи най-вероятно се ползва word или Open office, където си има за броене на думите. В open office-а имаше нещо за статистика, поправете ме ако греша. При положение че има ... да си призная понамързява ме

Виж, второто е по-интересно. Мисля си следното нещо: римите са рими, когато и ударението е на едно и също място, считано отзад напред. Та ми се струва че една такава програма би била по-полезна ако може да се направи така, че да се вземат предвид и ударенията. Ето какво измислих:

От страна на потребителя:
1. Потребителя въвежда окончанието
2. Потребителя посочва с мишката на коя гласна буква пада ударението в това окончание.Даже може по подразбиране да е на втората гласна буква отзад напред, ако потребителя забрави да посочи позиция, но в такъв случай програмата няма да взема предвид позицията на ударенията.

От страна на програмата:
Огромната работа която трябва да се свърши е, на всяка дума в речника да се определи къде пада ударението. Според мен това може да стане с число, което показва на коя гласна буква седи то (задължително отзад напред).

Когато потребителят въведе окончание и посочи къде се намира ударението, програмата сравнява и позициите на ударението и връща само думи, където позицията на ударението съвпада. Така според мен ще се получат доста по-отбрани и коректни резултати.

Другото което е по-сложното - има едни алгоритми, които определят доколко една дума е близка до друга
например Soundex (http://en.wikipedia.org/wiki/Soundex) но не знам как точно това може да се приложи в случая (и има ли подобно нещо за български - това създателите на софтуер за правописна проверка могат да кажат) - дали може да се отрежат на база броя на буквите в окончанието от текущо проверяваната дума и ако окончанието на тази дума е достатъчно близко да излезе и тя като резултат. И дали изобщо е необходимо - има ли думи които са с различни окончания и все пак се римуват?

Още - речника може да се съхранява с думите в обърнат ред, с цел по-бързото му претърсване, особено ако се набутва в база данни, ако пък е плосък файл, числото показващо позицията на ударението може да е в началото преди думата, за да може извличането на данните да става по-бързо и лесно, но това са технически подробности, зависещи от конкретната реализация.

phrozencrew
Чет, 04.06.09, 22:48
dreamskill, в теб и в Дани ми е надеждата за спасението на света! Въобще не бих си и помислил, че няма да напишете съвършеният код по темата, но нещо толкова елементарно едва ли би ви заинтригувало. Дори си представям как ще разкцъкаш броя на думите с някоя игра в GM, където героя от първо лице избива всичката гад на планетата, която не може да брои само синтактично правилните думи.

sashko92, този скрипт се изпълнява от интерпретатора на Ruby - страхотен език от ново поколение, на който е написан портала Svejo.net. Езика разполага с уникално лесни Обектно-Ориентирани хави за обработка на текстове. Синтаксиса му е сравнително близък до Python.

PS:insecteater, много рационални идеи си нахвърлял! Така написано ми се струва почти лесно за писане. А и както съм се зарибил напоследък по Ruby ми идва на акъла, че с RubyScript2Exe може да се навре и SQLite в embed exe и да се получи едно доста прилично standalone приложение за Win/Linux. Мисля "на глас", но идеята ти за номер пред думата наистина кефи. Може да се напише и криптиращ механизъм, който да се отключва само с правилната комбинация на ударенията на определени думи .

редактиран от phrozencrew на 04.06.09 22:56
редактиран от phrozencrew на 04.06.09 22:58

< 1 2 3 4 5 6 7 8 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.