Вверх ↑
Этот топик читают: Гость
Ответов: 1376
Рейтинг: 197
#16: 2010-10-18 00:10:14 ЛС | профиль | цитата
В демонстрационном случае схема Леонида наглядна, но если в программе, то достаточно XOR с нужной разрядностью
------------ Дoбавленo в 00.10:
опоздал...
карма: 1

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#17: 2010-10-18 00:12:49 ЛС | профиль | цитата
foksov писал(а):
В демонстрационном случае схема Леонида наглядна

Не в обиду Леониду, но в его схеме я не вижу никакой наглядности. Она имеет право на существование, но представляет собой схему уровня начинающего пользователя
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#18: 2010-10-18 00:21:09 ЛС | профиль | цитата
Схема Леонида
code_21088.txt
Твоя схема

Add(Edit,11286152,259,112)
{
Left=120
Top=15
Width=205
Color=12639424
Ctl3D=1
Text="011001011011"
ReadOnly=0
}
Add(Edit,12862673,364,217)
{
Left=120
Top=45
Width=205
Color=12639424
Ctl3D=1
ReadOnly=0
link(Str,9132757:Var2,[])
}
Add(Str_Enum,3221021,259,161)
{
Delimiter=""
link(onEnum,12439598:doOperation,[])
link(onEndEnum,12862673:doText,[(304,174)(304,223)])
link(String,11286152:Text,[])
}
Add(StrCat,15661064,364,161)
{
link(Str1,9132757:Var1,[(370,149)(358,149)(358,205)])
}
Add(GetDataEx,9132757,364,200)
{
link(Data,15661064:Result,[])
}
Add(Math,12439598,315,161)
{
OpType=6
Op2=1
link(onResult,15661064:doStrCat,[])
}
Add(Button,4939403,189,161)
{
Left=165
Top=160
link(onClick,3221021:doEnum,[])
}
Если отбросить обязательные компоненты, то схема Леонида сделана на одном компоненте, а твоя на трех.
После компиляции
схема Леонида - 48 154 b
твоя 53 804 b

Леонид выиграл ~5.6 kb (>10% )
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_21088.txt [653B] [142]
Ответов: 1376
Рейтинг: 197
#19: 2010-10-18 00:24:18 ЛС | профиль | цитата
nesco писал(а):
я не вижу никакой наглядности
Просто, он не стал как числом пользоваться, а использовал как строку, оригинально... Что, при использовании в схеме, совершенно ни к чему, т.к. задача была про инвертирование битов кого-то числа, хотя я сейчас уже и не уверен, те биты должны были показываться или они просто в переменной инвертировались
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#20: 2010-10-18 00:38:16 ЛС | профиль | цитата
foksov писал(а):
Просто, он не стал как числом пользоваться
А nesco что накапливает в StrCat число ? Строку. В таких случаях лучше использовать что-то одно или строку или число от начала и до конца, что и сделал Леонид
А замечание
nesco писал(а):
представляет собой схему уровня начинающего пользователя
скорее относится не к схеме Леонида.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#21: 2010-10-18 02:48:43 ЛС | профиль | цитата
foksov писал(а):
Просто, он не стал как числом пользоваться, а использовал как строку, оригинально...

Это общепринятый метод для любой разрядности, твоя же схема ограничена 31 разрядом.

Tad, я могу сказать в ответ одно -- схема Леонида не несет никакой математической нагрузки, она выполнет свою функцию, но не учит пользователя пользоваться математическим методами обработки. Если вас это устраивает, то наздоровье, я ничего потив иметь не буду, но и не буду терпеть утверждени типа
Tad писал(а):
Только схема Леонида всегда отработает верно и с любой разрядностью

Что не являтся правдой.
------------ Дoбавленo в 00.46:
Tad, или ты не встречался с алгоритмами обрботки двоичных строк, или ты шлангом прикинулся, и пытаешься отмазки найти, что вполне тебе свойственно
Tad писал(а):
скорее относится не к схеме Леонида

А твоей схемы я не видел вообще, так что на твои утвеждения можно забить большой болт. И вообще сказать DIXI.
------------ Дoбавленo в 00.52:
Хорошо, если на то пошло, сделайте мне двоичный сумматор на неограниченное количество разрядов вашими строковыми методами Replace. Условие простое -- есть двоичное число до 2^99 степени, необходимо к нему прибавить число до 2^31 степени и вывести полученное двоичное число на экран. Я поделюсь своим решением, но после того, как увижу ваше. Я не заставляю, можете и не делать

------------ Дoбавленo в 02.48:
Продолжение следует
Я принял вызов со слов
Tad писал(а):
скорее относится не к схеме Леонида

считая это камнем в свой огород. Вот, реализация схемы инверсии на FTCG не на математическом методе. И пусть кто-то еще скажет, что это схема уровня начинающего



Add(MainForm,4145455,182,196)
{
}
Add(Edit,11286152,238,196)
{
Left=120
Top=15
Width=205
Color=12639424
Ctl3D=1
Text="011001011011"
ReadOnly=0
}
Add(Edit,12862673,287,245)
{
Left=120
Top=45
Width=205
Color=12639424
Ctl3D=1
ReadOnly=0
}
Add(FTCG_Tools,14868783,238,245)
{
link(onResult,12862673:doText,[])
link(Data,11286152:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,12398146,21,21)
{
WorkCount=#9:doInverse|0:|
EventCount=#8:onResult|
DataCount=#4:Data|
Width=293
Height=172
VOffset=70
HOffset=14
link(doInverse,7663590:doLoad,[])
}
Add(FT_StringToArray,7663590,35,91)
{
link(onLoad,9390669:doFor,[])
link(Data,12398146:Data,[])
}
Add(ArrayRead,5873059,147,91)
{
link(onRead,9627115:doRead,[])
link(Array,7663590:Array,[(153,79)(133,79)(133,141)(41,141)])
}
Add(FT_For,9390669,91,91)
{
Start=1
link(onEvent,5873059:doRead,[])
link(onStop,5118938:doData,[(140,104)(140,153)])
link(End,6642141:Result,[])
}
Add(FT_Length,6642141,91,42)
{
link(SrcStr,7663590:Str,[(97,30)(73,30)(73,135)(48,135)])
}
Add(StrArray,4279956,196,42)
{
Strings=#1:1|1:0|
}
Add(ArrayRead,9627115,196,91)
{
link(onRead,1887622:doStrCat,[])
link(Array,4279956:Array,[])
}
Add(FT_StrCat,1887622,245,91)
{
Extern=1
link(Str1,10865022:Var1,[(251,79)(239,79)(239,135)])
}
Add(FT_DoData,5118938,245,147)
{
link(onEventData,12398146:onResult,[(295,153)(295,97)])
link(Data,10865022:Var2,[])
}
Add(GetDataEx,10865022,245,130)
{
link(Data,1887622:Result,[])
}
END_SDK
Add(Button,16302585,182,245)
{
Left=200
Top=75
Data=Integer(1)
link(onClick,14868783:doInverse,[])
}

карма: 22

1
Голосовали:foksov
Ответов: 16884
Рейтинг: 1239
#22: 2010-10-18 02:52:35 ЛС | профиль | цитата
kamakama писал(а):
Допустим строка, или несколько переменных содержат следующее - 001011 - нужно инвертировать значение
но судя по его примеру ему нужно не инвертировать значение числа, а просто изменить 0 на 1, а 1 на 0. Инвертировать значение - это "немного" совсем другое.
nesco писал(а):
А твоей схемы я не видел вообще, так что на твои утвеждения можно забить большой болт.
дело хозяйское.
nesco писал(а):
отмазки найти, что вполне тебе свойственно
незнаю кому больше.
Всё. Спокойной ночи...
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#23: 2010-10-18 03:04:47 ЛС | профиль | цитата
Tad писал(а):
незнаю кому больше

Ну уж, по крайней мере, не стал бы заявлть, что
Tad писал(а):
схема Леонида сделана на одном компоненте

С таким же успехом, схему на 100 Case, можно считать схемой на одном компоненте.
карма: 22

0
Ответов: 8926
Рейтинг: 823
#24: 2010-10-18 10:23:35 ЛС | профиль | цитата
nesco, а я-то думаю, чего это мне не спится и икается а тут спорят ни о чём Да во всех языках есть поразрядная логика и во всех процессорах обязательно есть такие же машинные команды
карма: 19

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#25: 2010-10-18 10:33:16 ЛС | профиль | цитата
Леонид писал(а):
Да во всех языках есть поразрядная логика и во всех процессорах обязательно есть такие же машинные команды

А я чего, против. Да нет, не против. Я это и доказываю, кстати, именно про поразрядную логику.
Леонид писал(а):
а тут спорят ни о чём

Действительно, ни о чем. Вот не скажи свою крылатую фразу Tad
Tad писал(а):
Только схема Леонида всегда отработает верно и с любой разрядностью

Я бы ни за что не полез в бутылку. Ну не правильно это -- заявлять так категорично. Минимум две схемы я ему привел на любое количество разрядов, мало будет, я ему еще наклепаю. Наша задача здесь -- учить молодежь, и учить не только применять нестандартные методы, но и уметь применять математический аппарат, в частности

карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2010-10-18 11:38:46 ЛС | профиль | цитата
Леонид писал(а):
а тут спорят ни о чём
Именно.
nesco, схеме Леонида можно скормить строку из 0 и 1 длинной, ограниченой только возможностями StrCat.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#27: 2010-10-18 12:16:32 ЛС | профиль | цитата
Tad писал(а):
схеме Леонида можно скормить строку из 0 и 1 длинной, ограниченой только возможностями StrCat

То же самое можно скормить и схеме на Str_Enum.

Tad, я все не могу понять, ты что не догоняешь, что Replace тоже имеет встроенные Str_Enum с посимвольным перебором, только на уровне кодов И в схеме Леонида их будет аж целых три, те трижды будет перебираться строка одной и той же длины
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#28: 2010-10-18 12:22:32 ЛС | профиль | цитата
nesco, извини, ошибся. В схеме Леонида (в отличие от твоих) нет StrCat, т.е. практически у него длина не ограничена.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#29: 2010-10-18 12:24:55 ЛС | профиль | цитата
Tad писал(а):
нет StrCat, т.е. практически у него длина не ограничена

А кто сказал, что длина StrCat ограничена, там применяется тот же самый тип String, который имеет одну и туже размерность, что в Replace, что в StrCat

Я тебя не пойму, ты что с пеной у рта пытаешься мне доказать преимущества схемы Леонида, в чем заключается такая рьяная защита его метода, в оригинальности и только, или еще в чем-то

Еще раз -- я не против применения оригинальных методов преобразования, я против окультных утверждение о единственности таких решений для конкретных задач
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#30: 2010-10-18 13:09:04 ЛС | профиль | цитата
А я за время обработки строки не говорил. То что схема Леонида будет тормозить на больших строках - это и козе понятно.
И в Replace ещё используются ReadString,Pos, PosEx,Delete, Insert, _hi_onEvent - представь себе - тоже знаю. Про скорость разговора небыло.
Было про нестандартно и оригинально. За что и поставил +

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)