Вверх ↑
Этот топик читают: Гость
Ответов: 8886
Рейтинг: 823
#31: 2010-10-23 12:43:14 ЛС | профиль | цитата
ser_davkin, Вы так и не рассказали понятно, что требуется (Впрочем, ясное для всех, популярное, изложение своих мыслей даётся не всем, даже гении на этом спотыкаются ) Вот как я увидел Вашу проблему: файл приложен.
карма: 19

1
файлы: 1bilet.sha [29.2KB] [507]
Голосовали:ser_davkin
Ответов: 16884
Рейтинг: 1239
#32: 2010-10-23 13:18:56 ЛС | профиль | цитата
miver 21 Oct 2010 18:20 писал(а):
Выложу одно нестандартное решение
Леонид, не смотрел наверное.
У miver очень простое и оригинальное решение.
Челевек просто записывает "одиночный билет" аб999557, как диапазон аб999557-аб999557.
А дальше - дело техники. Хочешь - SQLite, хочешь - обыкновенная сортировка.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8886
Рейтинг: 823
#33: 2010-10-23 13:46:38 ЛС | профиль | цитата
Tad,
Tad писал(а):
диапазон аб999557-аб999557
и я так же поступил вчера, во время профилактики на сайте. Конечно, самое то - БД. Ещё проще обработка, если превратить буковки в цифры, но даже при 32-ух маленьких русских значение вплотную к верхнему пределу integer в HiAsm, а с real - тоже могут появиться погрешности. Впрочем, всё это на усмотрение топикстартёра
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#34: 2010-10-23 14:04:33 ЛС | профиль | цитата
Леонид писал(а):
и я так же поступил вчера, во время профилактики на сайте.
Ну да. А когда еще можно закрутить решение на >200 компонент
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1535
Рейтинг: 176
#35: 2010-10-23 18:10:28 ЛС | профиль | цитата
Леонид, огромное спасибо за проявленный интерес. Обратите внимание на синтаксис. Буквенный индекс всегда ставиться в начале значения. Первое условие предыдущего задания было выполнено.
Оговорюсь, что в задание были внесены изменения (в последовательность значений группы "аб"вставлен разрыв, о чём я указал в стартопе и в предыдущем своём сообщении). Второе условие предыдущего задания Леонид, было выполнено, но с натяжкой. Есть строгое обозначение единственного билета пх999061 и диапазонного пх999061-999063, где должно быть не менее трёх единиц билета и где буквенный индекс, единожды указывается в начале. А вот такое обозначение пх999061-пх999061 недопустимо. Та же ошибка с индексом была и в первом решении.
ser_davkin писал(а):
1. В данной задаче необходимо последовательно присоединить каждую строку из колонки B к соответствующим значениям колонки A. Чтобы в результате получилось, как в C
Поймите, представленные задачи не являются ребусами, которые я кстати очень люблю, это готовые результаты, где отсутствует лишь решение. Найдите логику решения, кратчайший путь, как в алгебре, а значит и высокую производительность, вот и всё. Еще раз оговорюсь в таблицу были внесены изменения, т.к. некоторые, применив формулу первого класса, решили, что всё просто. А где решение?
Леонид, с новой таблицей, твой алгоритм не работает.

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8886
Рейтинг: 823
#36: 2010-10-23 19:08:44 ЛС | профиль | цитата
ser_davkin, здравствуйте, я ваша тётя! Так я и скопировал предыдущую таблицу.
Только сейчас увидел "Соревнования"
Леонид писал(а):
изложение своих мыслей даётся не всем
-если берётесь за постановку задачи, подходите ответственней, никаких "это и так все знают", условия должны быть исчерпывающие и понятными, не допускающие разночтений, а уж менять их по ходу дела, и вовсе недопустимо

карма: 19

0
Ответов: 1535
Рейтинг: 176
#37: 2010-10-24 01:55:20 ЛС | профиль | цитата
Вот, решение первой задачи.
А+В=С

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 758
Рейтинг: 112
#38: 2010-10-25 12:56:19 ЛС | профиль | цитата
Не смог сделать через SQL запрос, но в лоб тоже ничего

Add(MainForm,2953706,84,35)
{
Width=486
Height=330
}
Add(Button,11936985,21,133)
{
Left=5
Top=5
Width=465
Caption="Go!!"
link(onClick,8575711:doEvent1,[])
}
Add(Memo,601688,84,77)
{
Left=10
Top=30
Width=150
Height=260
Strings=#15:аб999401-999555|8:аб999557|15:аб999559-999900|15:аб999910-999915|8:аб999917|15:аб999920-999950|8:пх999401|8:пх999403|
}
Add(Memo,5156536,133,77)
{
Left=170
Top=30
Width=150
Height=260
Strings=#8:аб999558|8:пх999402|8:аб999556|15:аб999901-999909|15:пх999405-999418|8:пх999404|
}
Add(ArrayEnum,9141762,98,133)
{
link(onItem,11465546:doWork2,[])
link(Array,601688:Array,[])
}
Add(ArrayEnum,2794112,147,140)
{
link(onItem,11465546:doWork3,[(186,146)])
link(Array,5156536:Array,[])
}
Add(HubEx,11465546,182,133)
{
link(onEvent,664482:doAdd,[])
}
Add(Hub,8575711,63,133)
{
OutCount=3
link(onEvent1,9141762:doEnum,[])
link(onEvent2,2794112:doEnum,[])
link(onEvent3,2119467:doSort,[(89,153)(89,202)])
}
Add(Copy,2003707,378,196)
{
Position=1
Count=2
link(onCopy,9742605:doData,[])
}
Add(Hub,325262,315,196)
{
OutCount=3
link(onEvent1,2003707:doCopy,[])
link(onEvent2,10350466:doDelete,[(367,209)(367,251)])
link(onEvent3,1758670:doOperation,[(344,216)(344,405)])
}
Add(Delete,10350466,378,245)
{
Count=2
link(onDelete,4511975:doSplit,[])
}
Add(Memory,15926820,511,89)
{
Default=String()
}
Add(StrPart,4511975,427,245)
{
Char="-"
DirectEvent=0
Point(onNotFound)
link(onSplit,6594052:doWork2,[])
link(onPart,8053579:doWork2,[])
link(onNotFound,14279325:doEvent1,[])
}
Add(Hub,14279325,469,259)
{
link(onEvent1,6594052:doWork3,[(494,265)])
link(onEvent2,8053579:doWork3,[(501,272)])
}
Add(HubEx,6594052,490,245)
{
link(onEvent,7358518:doValue,[])
}
Add(HubEx,8053579,497,252)
{
link(onEvent,3027999:doValue,[])
}
Add(StrList,664482,203,133)
{
}
Add(ArraySort,2119467,217,196)
{
link(onEndSort,7472476:doEnum,[])
link(Array,664482:Array,[])
}
Add(ArrayEnum,7472476,266,196)
{
link(onItem,325262:doEvent1,[])
link(onEndEnum,7132943:doEvent2,[(306,209)(306,440)])
link(Array,2119467:ArraySort,[(272,184)(256,184)(256,237)(223,237)])
}
Add(Memo,12539145,1061,434)
{
Left=330
Top=30
Width=140
Height=260
}
Add(StrList,5103242,616,357)
{
Point(doGetIndex)
Point(onGetIndex)
Point(doInsert)
link(onGetIndex,4220238:doCompare,[])
}
Add(If_else,8064103,511,196)
{
Op2=String()
link(onFalse,13437622:In,[])
link(Op1,3244581:Var2,[])
link(Op2,16037068:Value,[])
}
Add(ChangeMon,9742605,427,196)
{
link(onData,5414127:doEvent1,[])
}
Add(Hub,5414127,476,196)
{
link(onEvent1,8064103:doCompare,[])
link(onEvent2,15926820:doValue,[(500,209)(500,95)])
}
Add(Memory,16037068,518,152)
{
Default=String()
}
Add(StrCatDelim,3413819,406,399)
{
Delimiter=";"
Str2="1"
link(onStrCatDlm,5103242:doGetIndex,[])
}
Add(Memory,7358518,567,245)
{
Default=String()
}
Add(Math,1758670,357,399)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3413819:doStrCatDlm,[])
link(Op1,12948588:Var1,[(363,291)])
}
Add(If_else,4220238,672,364)
{
Op2=Integer(-1)
link(onTrue,224098:doEvent1,[(713,370)(713,325)(432,325)(432,363)])
link(onFalse,7348013:doEvent1,[])
}
Add(StrCatDelim,2112609,514,357)
{
Delimiter=";"
Str2="0"
link(onStrCatDlm,7232765:doWork2,[])
link(Str1,12840867:Var,[])
}
Add(LineBreak,6192994,515,299)
{
Caption="b"
Type=1
link(Data,12948588:Var2,[])
Primary=[12840867,-1,34]
}
Add(Hub,224098,441,357)
{
link(onEvent1,2112609:doStrCatDlm,[])
link(onEvent2,16258121:doWork2,[])
}
Add(StrCatDelim,9677238,472,364)
{
Delimiter=";"
Str2="1"
link(onStrCatDlm,7232765:doWork3,[(557,370)])
link(Str1,10745447:Var,[])
}
Add(HubEx,7232765,553,357)
{
link(onEvent,5103242:doAdd,[])
}
Add(LineBreak,6418313,567,297)
{
Caption="e"
Type=1
link(Data,7358518:Value,[])
Primary=[10745447,-95,36]
}
Add(Memory,3027999,515,252)
{
Default=String()
}
Add(GetDataEx,12948588,515,286)
{
link(Data,3027999:Value,[])
}
Add(LineBreak,15898754,573,371)
{
Caption="del"
link(Out,5103242:doDelete,[])
Primary=[2478863,206,0]
}
Add(Hub,7348013,721,371)
{
link(onEvent1,2478863:In,[])
link(onEvent2,616425:In,[])
}
Add(HubEx,16258121,460,364)
{
link(onEvent,9677238:doStrCatDlm,[])
}
Add(LineBreak,4328554,420,377)
{
Caption="add"
link(Out,16258121:doWork3,[(464,383)])
Primary=[616425,325,1]
}
Add(ArrayEnum,2285285,630,427)
{
link(onItem,14523330:doSplit,[])
link(Array,5103242:Array,[])
}
Add(Hub,7132943,539,427)
{
InCount=2
link(onEvent1,2285285:doEnum,[])
link(onEvent2,5103242:doClear,[(567,440)(567,370)])
}
Add(LineBreak,13312794,497,427)
{
link(Out,7132943:doEvent1,[])
Primary=[13437622,63,-224]
}
Add(StrPart,14523330,679,427)
{
Char=";"
link(onSplit,7136400:doCompare,[])
link(onPart,1137657:doValue,[])
}
Add(Memory,1137657,728,434)
{
Default=String()
}
Add(If_else,7136400,777,427)
{
Op2=Integer(1)
link(onTrue,2247542:doCompare,[])
link(onFalse,3434310:doValue,[])
}
Add(StrCat,14797509,875,434)
{
link(Str1,3244581:Var3,[(881,131)])
}
Add(GetDataEx,3244581,511,126)
{
link(Data,15926820:Value,[])
}
Add(FormatStr,9404581,1001,434)
{
Mask="%1-%2"
link(onFString,6939199:doWork2,[])
link(Str1,16468854:Var3,[(1007,417)])
link(Str2,15497517:Var3,[(1014,410)])
}
Add(Memory,3434310,826,434)
{
Default=String()
Point(Data)
link(onData,14797509:doStrCat,[])
link(Data,15966025:Var2,[])
}
Add(If_else,2247542,917,427)
{
link(onTrue,15851805:doData,[])
link(onFalse,9404581:doString,[])
link(Op1,12145994:Var,[])
link(Op2,15497517:Var2,[])
}
Add(LineBreak,4849381,826,475)
{
Caption="b"
Type=1
link(Data,3434310:Value,[])
Primary=[12145994,91,-91]
}
Add(GetDataEx,15497517,924,405)
{
Angle=3
link(Data,15966025:Var3,[])
}
Add(HubEx,6939199,1043,434)
{
link(onEvent,12539145:doAdd,[])
}
Add(DoData,15851805,959,427)
{
link(onEventData,6939199:doWork1,[(1047,433)])
link(Data,16468854:Var2,[])
}
Add(GetDataEx,16468854,959,412)
{
Angle=3
link(Data,14797509:Result,[(953,417)(953,473)(881,473)])
}
Add(GetDataEx,15966025,826,405)
{
Angle=3
link(Data,1137657:Value,[(767,410)(767,474)(734,474)])
}
ser_davkin твой ход мысли в схеме А+В=С понять не смог
карма: 1

1
Голосовали:ser_davkin
Ответов: 8886
Рейтинг: 823
#39: 2010-10-25 13:15:35 ЛС | профиль | цитата
miver,
miver писал(а):
твой ход мысли в схеме А+В=С понять не смог
анекдот писал(а):
но ход мысли понравился!

карма: 19

0
Ответов: 758
Рейтинг: 112
#40: 2010-10-25 13:44:19 ЛС | профиль | цитата
[offtop]
Tad Help!!
Каким SQL запросом, можно из такого

dataindex
9994010
9995551
9995560
9995561
9995570
9995571
9995580
9995581
9995590
9999001
9999010
9999091
9999100
9999151
9999170
9999171
9999200
9999501
получить такое

dataindex
9994010
9999151
9999170
9999171
9999200
9999501
[/offtop]
карма: 1

0
Ответов: 1535
Рейтинг: 176
#41: 2010-10-25 18:58:04 ЛС | профиль | цитата
miver, вот это оптимизация, признаюсь честно, такое решение меня шокировало в хорошем смысле, спасибо! За мной ещё один плюс!
ser_davkin писал(а):
и диапазонного пх999061-999063, где должно быть не менее трёх единиц билета

miver, подкорректируй, пожалуйста, в своей последней схеме под это условие. Например, это обозначение"пх999061-999063" - верное, а это "пх999061-999062" - уже неверное. Попробуй изменить значение "пх999405-999418" на "пх999406-999418" и ты увидешь в место пх999401-999404, вот это пх999404. Моя схема это условие выполняет.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#42: 2010-10-25 20:56:33 ЛС | профиль | цитата
miver писал(а):
в лоб тоже ничего
Твой код (который в лоб) :
code_21242.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_21242.txt [6.5KB] [598]
Голосовали:miver
Ответов: 758
Рейтинг: 112
#43: 2010-10-26 11:09:07 ЛС | профиль | цитата
[offtop]Tad что скажешь про SQL запрос
я сутки над ним думал, но так и не придумал, как удалить ненужное или выбрать нужное [/offtop]
------------ Дoбавленo в 11.09:
Tad писал(а):
Твой код (который в лоб) :
code_21242.txt

Эх рано я тебе + поставил, наверно еще не проснулся
Без сортировки и памяти не работает
Результат схема miver
Результат схема Tad

ser_davkin писал(а):
miver, подкорректируй, пожалуйста, в своей последней схеме под это условие. Например, это обозначение"пх999061-999063" - верное, а это "пх999061-999062" - уже неверное. Попробуй изменить значение "пх999405-999418" на "пх999406-999418" и ты увидешь в место пх999401-999404, вот это пх999404. Моя схема это условие выполняет.

Честно не увидел , может не туда смотрел
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#44: 2010-10-26 12:52:01 ЛС | профиль | цитата
miver, ну и чем отличаются результаты сортировки?
sproject45.sha
------------ Дoбавленo в 12.52:
Да, miver, у меня результаты работы обеих схем одинаковы
Такой разницы, как ты привел на скриншотах нет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 758
Рейтинг: 112
#45: 2010-10-26 13:07:01 ЛС | профиль | цитата
А ты вот так делал
ser_davkin писал(а):
Попробуй изменить значение "пх999405-999418" на "пх999406-999418"

И какой у тебя результат 1-й или 2-й
карма: 1

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