Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#31: 2011-08-13 15:45:06 ЛС | профиль | цитата
1nd1g0 писал(а):
А то и базами данных (тут с поиском всё в порядке).

а с быстродействием ?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#32: 2011-08-13 15:48:25 ЛС | профиль | цитата
hitman249 писал(а):
а с быстродействием ?

При мелких задачах накладные расходы на работу с базами нивелируют все преимущества. Если данных очень много (?), то БД - самый быстрый вариант.
карма: 1

0
Ответов: 1528
Рейтинг: 57
#33: 2011-08-13 15:53:21 ЛС | профиль | цитата
порядка 100000 номеров(одно- двух-значных) на одну БД
------------ Дoбавленo в 15.53:
как добавлять данные в БД, чтобы их можно было искать как по строке ?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#34: 2011-08-13 16:07:48 ЛС | профиль | цитата
hitman249 писал(а):
искать как по строке ?

Какие виды поиска и операций нужны в целом? Минимальная группа чисел, идущих подряд, максимальная группа чисел, идущих подряд, нужен ли поиск по маске (когда часть чисел в группе неважна или должна соответствовать особым правилам? Будут ли удаляться данные из середины массива, вставляться в середину, сортироваться, заменяться и т.п. Раскрывайте задачу целиком тогда уже. При работе со строкой, если последовать моему совету с лидирующими нулями и разделителем, потребуется порядка 300 Кб. Я сейчас не могу посмотреть, какой предел у строки, использованной в компонентах HiAsm, строки бывают динамической длины с замыкающим нулём и с заголовком - маркером длины, от его разрядности зависит предел строки.
карма: 1

0
Ответов: 1528
Рейтинг: 57
#35: 2011-08-13 17:04:18 ЛС | профиль | цитата
Tad писал(а):
и нафига она(удобочитательность) нужна ?

чтобы с визуализацией не париться, все числа уже в удобочитаемом виде

Tad писал(а):
конкретизируй "огромная".
hitman249 писал(а):
порядка 100000 номеров

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#36: 2011-08-13 17:32:46 ЛС | профиль | цитата
hitman249, проблема выдумана на ровном месте.
hitman249 писал(а):
ищутся совпадение по всей строке (которая будет просто огромная).
конкретизируй "огромная".
hitman249 писал(а):
кроме того что удобочитательность падает
а это что? и нафига она(удобочитательность) нужна ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#37: 2011-08-13 17:37:03 ЛС | профиль | цитата
Tad, IMHO, он собирается выводить в прокручиваемое горизонтально поле сто тысяч чисел, разделённых пробелом и раскрашенных в разные цвета в зависимости от диапазона, в который эти числа попадают. Пополнять числа с хвоста вбивая вручную (сто тысяч раз ). Прошу заметить, что это лишь мои догадки на основе анализа всех его тем и постов в разных местах.
карма: 1

0
Ответов: 1528
Рейтинг: 57
#38: 2011-08-13 17:56:47 ЛС | профиль | цитата
блин форум глюканул, потёр моё предыдущее сообщение новым
------------ Дoбавленo в 17.40:
1nd1g0 писал(а):
он собирается выводить в прокручиваемое горизонтально поле сто тысяч чисел

только последних 30 введённых пар
------------ Дoбавленo в 17.56:
Add(MainForm,2953706,378,224)
{
}
Add(Edit,904778,462,224)
{
Left=10
Top=17
Width=60
Height=35
Font=[Arial,18,1,0,1]
Text=""
Alignment=2
ClearAfterEnter=1
}
Add(BitBtn,2896208,378,266)
{
Left=70
Top=16
Width=60
Height=38
Caption="OK"
link(onClick,12886191:doEvent1,[])
}
Add(HilightMemo,6028793,826,252)
{
@Hint=#58:Здесь находятся последние введённые пользователем 30 чисел|
Left=130
Top=16
Width=231
Height=60
Color=16314690
Font=[Arial Black,18,1,0,204]
HilightStrings=#5:0=Red|7:1=Black|5:2=Red|7:3=Black|5:4=Red|7:5=Black|5:6=Red|7:7=Black|5:8=Red|7:9=Black|6:10=Red|8:11=Black|6:12=Red|8:13=Black|6:14=Red|8:15=Black|6:16=Red|8:17=Black|6:18=Red|8:19=Black|6:20=Red|8:21=Black|6:22=Red|8:23=Black|6:24=Red|8:25=Black|6:26=Red|8:27=Black|6:28=Red|8:29=Black|6:30=Red|8:31=Black|6:32=Red|8:33=Black|6:34=Red|8:35=Black|6:36=Red|0:|
HilightFont=[Courier New,8,0,0,1]
ReadOnly=0
SmartTabs=1
Indent=1
RightMargin=1
ColorRightMargin=536870911
AutoFocus=1
AddHint(-221,-51,185,26,@Hint)
}
Add(DoData,6112955,462,266)
{
link(onEventData,14346795:doCase,[])
link(Data,904778:Text,[])
}
Add(StrCatDelim,12412645,721,273)
{
@Hint=#14:Накопитель(БД)|
Delimiter=" "
link(onStrCatDlm,6028793:doText,[])
link(Str2,12412645:Result,[(734,261)(730,261)(730,317)(727,317)])
AddHint(89,51,98,13,@Hint)
}
Add(Hub,12886191,434,266)
{
link(onEvent1,6112955:doData,[])
link(onEvent2,904778:doText2,[(456,279)(456,237)])
}
Add(Hub,13112301,644,266)
{
link(onEvent1,6028793:doClear,[(678,272)(678,265)])
link(onEvent2,12412645:doStrCatDlm,[])
}
Add(If_else,10500283,595,266)
{
Type=2
Op2=Integer(37)
link(onFalse,13112301:doEvent1,[(635,279)(635,272)])
}
Add(Convertor,10896206,553,266)
{
Mode=1
link(onResult,10500283:doCompare,[])
}
Add(Case,14346795,511,266)
{
link(onNextCase,10896206:doConvert,[])
}
Add(Button,10023479,378,308)
{
@Hint=#62:Функция для удаления последнего введённого пользователем числа|
Left=70
Top=55
Width=60
Caption="Откатить"
AddHint(78,14,197,26,@Hint)
}
Add(BitBtn,4868509,378,371)
{
@Hint=#31:Функция поиска комбинаций чисел|
Left=10
Top=95
Width=115
Height=45
Caption="Найти"
AddHint(43,80,197,13,@Hint)
}
Add(Edit,12372617,441,371)
{
Left=140
Top=110
Width=220
Text="числа стоящие перед найденными комбинациями "
AddHint(46,18,194,26,Text)
}

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#39: 2011-08-13 18:13:04 ЛС | профиль | цитата
hitman249 писал(а):
только последних 30 введённых пар
30 последних "пар" - это всего (с пробелами) 90 знаков.
hitman249 писал(а):
порядка 100000 номеров
откуда взял
Илии ты запоминаешь все раннее введенные пары ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#40: 2011-08-13 18:52:23 ЛС | профиль | цитата
Tad писал(а):
30 последних "пар" - это всего (с пробелами) 90 знаков.

не всегда число 2 значное, но чаще всего, поэтому я так сказал чтобы было понятно что есть числа не однозначные.
Tad писал(а):
Илии ты запоминаешь все раннее введенные пары ?

всё верно, все введённые цифры запоминаются и последние n введённых ищатся на совпадение
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#41: 2011-08-13 20:22:37 ЛС | профиль | цитата
code_24887.txt
------------ Дoбавленo в 20.21:
Вот тебе тест на 200000 пар. Время в микросекундах
------------ Дoбавленo в 20.22:
Tad писал(а):
hitman249, проблема выдумана на ровном месте.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_24887.txt [2.4KB] [129]
Ответов: 1528
Рейтинг: 57
#42: 2011-08-13 20:41:05 ЛС | профиль | цитата
Tad, дык правильно ты зачемто пары отдельные создаёшь, и ещё ко всему втыкаешь искомую пару первой, вот и скорость высокая

вот например берём созданные тобой по порядку первые пары (данные rand())
04253408
23330831

ищем число 34082333, оно среди них было, а он его ведь не найдёт, и смысл ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#43: 2011-08-13 21:21:07 ЛС | профиль | цитата
hitman249 писал(а):
ещё ко всему втыкаешь искомую пару первой
Ну искомый блок пар я втыкаю последним, а не первым.
------------ Дoбавленo в 21.21:
а так ?
Add(MainForm,2953706,21,56)
{
Width=540
Height=115
}
Add(Convertor,10855241,245,105)
{
SymbolFill="0"
link(onResult,16471941:doWork2,[])
}
Add(For,10722598,119,126)
{
Start=1
End=100000
link(onEvent,6232137:doRandom,[(181,132)(181,111)])
link(onStop,2111856:doEvent1,[(170,139)(170,167)])
}
Add(Random,6232137,196,105)
{
Max=36
link(onRandom,10855241:doConvert,[])
}
Add(Hub,674272,77,105)
{
OutCount=4
link(onEvent3,4592949:doWork1,[(105,125)(105,202)])
link(onEvent4,10722598:doFor,[])
}
Add(StrCat,3103764,308,105)
{
Point(doClear)
link(Str1,22163:Var1,[(314,93)(302,93)(302,149)])
}
Add(DoData,5884232,224,161)
{
Data=String(01020304)
link(onEventData,16471941:doWork3,[(291,167)])
}
Add(Button,5146406,322,196)
{
Left=125
Top=40
Width=105
Visible=1
Caption="Найти"
Data=String(01020304)
Point(doVisible)
link(onClick,1517838:doEvent1,[])
}
Add(Label,12603180,581,203)
{
Left=275
Top=40
}
Add(Button,11775358,21,105)
{
Left=125
Top=10
Width=130
Caption="Заполнить"
link(onClick,674272:doEvent1,[])
}
Add(TimeCounter,14979580,511,196)
{
Precision=1
link(onStop,12603180:doText,[])
}
Add(Hub,2111856,189,161)
{
link(onEvent1,5884232:doData,[])
link(onEvent2,4592949:doWork2,[(210,174)(210,209)])
}
Add(ChanelToIndex,4592949,280,196)
{
link(onIndex,5146406:doVisible,[])
}
Add(HubEx,16471941,287,105)
{
link(onEvent,3103764:doStrCat,[])
}
Add(Position,1631695,420,203)
{
link(onSearch,5107367:doEvent1,[])
link(Str,22163:Var2,[(426,174)(307,174)])
}
Add(GetDataEx,22163,301,144)
{
Angle=1
link(Data,3103764:Result,[(314,149)])
}
Add(Hub,1517838,378,196)
{
link(onEvent1,14979580:doStart,[])
link(onEvent2,1631695:doSearch,[])
}
Add(Hub,5107367,476,203)
{
link(onEvent1,14979580:doStop,[])
link(onEvent2,1435818:doText,[(503,216)(503,251)])
}
Add(Label,1435818,581,245)
{
Left=445
Top=40
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#44: 2011-08-13 21:36:02 ЛС | профиль | цитата
я почему про быстродействие подумал, потому что при поиске со строкой длинной 10000 числовых пар, будет происходить ~9990 инициализаций
------------ Дoбавленo в 21.36:
Tad, это то с чего я и начинал, т.е. уже ближе
но нужно добавлять туда удаление последнего числа (тобишь 2 цифры с права.. наверно), ну в таком виде это уже не так сложно,
но также по сложнее найти впереди стоящую перед 01020304 пару цифр, на каждом найденном месте, т.е. если найдено 01020304 не один раз а например 5 раз, то нужно дёргать впередистоящие цифры со всех 5 мест, сохранять можно темже StrCat методом склеивания.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#45: 2011-08-13 21:53:57 ЛС | профиль | цитата
hitman249, давай алгоритм игры.
------------ Дoбавленo в 21.53:
Вопрос вдогонку:
1. если найдено 2 совпадения, то что с ними делать ?
2. если найдено 100 совпадений, то что с ними делать ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)