Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 2
Рейтинг: 0
#1: 2020-09-06 13:04:58 ЛС | профиль | цитата
Добрый день! Возможно ли отфильтровать список строк на наличие дублирующихся слов, и на выходе составить таблицу, в которой будет отфильтрованый список строк в первом столбце, а во втором столбце будет отображаться количество повторений напротив каждой повторяющейся строки?

Add(ArrayFilterRepeats,10239790,679,469)
{
link(onFilter,366962:doAdd,[(787,475)(787,420)])
link(Array,5372899:Array,[(685,390)(748,390)])
}
Add(MainForm,13105371,539,343)
{
Width=682
Height=348
Caption="ArrayFilterRepeats"
Position=1
link(onCreate,6143661:doData,[])
}
Add(Button,9912960,574,462)
{
Left=165
Top=230
TabOrder=-1
Caption="Filter"
Data=Integer(0)
link(onClick,1184839:doEvent1,[])
}
Add(Memo,7888607,770,336)
{
Left=10
Top=10
Width=180
Height=190
}
Add(DoData,6143661,665,357)
{
link(onEventData,7888607:doText,[])
link(Data,5372899:Text,[(671,334)(734,334)])
}
Add(Hub,1184839,623,462)
{
link(onEvent2,10239790:doFilter,[])
}
Add(StringTableMT,366962,862,414)
{
Left=255
Top=10
Width=235
Height=190
Font=[MS Sans Serif,10,0,0,1]
Columns=#7:Имя=15010:Кол-во=100|
StrDelimiter="%"
ColumnWidth=300
TabGrid=0
TabGridFrame=0
SingleString=0
Grid=0
IconsCheck=[]
MiscIcons=[]
Icons=['Icon'=[]]
AutoTblStrLst=0
SaveColProp=0
SaveWidth=0
Point(onMT_CellClick)
Point(onEscCell)
Point(Matrix)
Point(Index)
Point(SubItem)
Point(Cell)
Point(doAddColumn)
Point(Strings)
Point(StrLstArray)
Point(onChange)
Point(onDblClick)
Point(TextStrLst)
Point(doMT_Add)
Point(doAddStrLst)
Point(doMT_Replace)
Point(FileName)
Point(doBringToFront)
Point(doVisible)
Point(doInitTxtTab)
Point(doTblStrLst)
}
Add(Memo,5372899,728,266)
{
Left=10
Top=10
Width=180
Height=190
Visible=1
Strings=#4:Вася|6:Петя12|4:Петя|9:yandex.ru|14:Ольга Игоревна|30:На дворе трава, на траве дрова|4:Петя|7:.......|4:Вася|16:Манька-облигация|4:Петя|6:и т.д.|
}
|

Например слово "Вася" повторяется 2 раза, значит в таблице в первом столбце будет слово "Вася", а напротив него число 2.

Редактировалось 1 раз(а), последний 2020-09-06 13:07:39
карма: 0

0
Ответов: 2059
Рейтинг: 132
#2: 2020-09-06 13:59:41 ЛС | профиль | цитата
Не понятна задача.
Допустим мы не строки сравниваем, а слова в каждой строке.
Делаем словарь. https://yadi.sk/d/hVY_IR-G-9jAHA
Каждому слову соответствует своя числовая переменная, или делаем таблицу.
Сканируем все строки на совпадение последовательно с каждым словом и инкрементируем соответствующую переменную.
Это можно делать параллельно.
Вообще это называется частотностью, если применительно к словам, а грубо - статистика.

Редактировалось 2 раз(а), последний 2020-09-06 14:08:25
карма: 6

0
Ответов: 721
Рейтинг: 154
#3: 2020-09-06 14:06:10 ЛС | профиль | цитата
92_dmitry_92, список слов большой?

Add(MainForm,13105371,322,224)
{
Width=682
Height=348
Caption="ArrayFilterRepeats"
Position=1
link(onCreate,9213086:doCount,[])
}
Add(Memo,5372899,378,175)
{
Left=15
Top=15
Width=180
Height=190
Strings=#4:Вася|6:Петя12|4:Петя|9:yandex.ru|14:Ольга Игоревна|30:На дворе трава, на траве дрова|4:Петя|7:.......|4:Вася|16:Манька-облигация|4:Петя|6:и т.д.|
}
Add(ArrayCountRepeats,9213086,392,238)
{
link(onCount,12758289:doStr,[])
link(Array,5372899:Array,[])
}
Add(MT_String,12758289,462,238)
{
link(onResult,13383604:doAdd,[])
}
Add(StringTable,13383604,525,238)
{
Left=230
Top=15
Width=305
Height=190
Columns=#5:Слово|6:кол-во|
}

карма: 15

0
Ответов: 2
Рейтинг: 0
#4: 2020-09-06 15:51:03 ЛС | профиль | цитата
Отлично, то что нужно, спасибо!
карма: 0

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)