Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПереставить местами 2 числа. Найти похожие ветки
← →
12 © (2010-02-01 18:22) [0]Спрашивают довольно часто.
a,b:integer;
Последний раз написал в тестах :)
a:=a+b;
b:=a-b;
a:=a-b;
a:=a xor b;
b:=a xor b;
a:=a xor b;
push a
push b
pop a
pop b
еще можно
mov EAX,a
XCHG EAX,b
mov a,EAX
Еще?
← →
Dimka Maslov © (2010-02-01 18:48) [1]
> push a
> push b
> pop a
> pop b
>
> еще можно
> mov EAX,a
> XCHG EAX,b
> mov a,EAX
А разве EAX и память в стеке уже не считается за "дополнительную" переменную?
← →
12 © (2010-02-01 18:53) [2]конечно, считается.
← →
KilkennyCat © (2010-02-01 19:00) [3]я бы вначале написал if a == b then "идите нафиг, Штирлиц"
← →
XXL (2010-02-01 19:35) [4]я бы вначале написал
a, b, с:integer;
← →
DVM © (2010-02-01 20:21) [5]
> 12 © (01.02.10 18:22)
> Переставить местами 2 числа.
Единственный нормальный и понятный способ это:
c:=a;
a:=b;
b:=c;
← →
uw © (2010-02-01 20:25) [6]Dimka Maslov © (01.02.10 18:48) [1]
А разве EAX и память в стеке уже не считается за "дополнительную" переменную?
А разве Intel двухадресная машина, чтобы без eax посчитать a := a + b?
← →
turbouser © (2010-02-01 20:36) [7]
> 12 © (01.02.10 18:22)
> Еще?
а если
a,b:integer;
a:=MaxInt;
дальше что?
← →
KilkennyCat © (2010-02-01 20:38) [8]
> а если
> a,b:integer;
> a:=MaxInt;
a := b;
b := MaxInt;
← →
DVM © (2010-02-01 20:39) [9]
> KilkennyCat © (01.02.10 20:38) [8]
> b := MaxInt;
смешно
← →
Anatoly Podgoretsky © (2010-02-01 20:49) [10]
> turbouser © (01.02.10 20:36) [7]
А дальшеa:=a+b;
b:=a-b;
a:=a-b;
Только сними проверку диапазонов, чтобы не ругалось.
← →
turbouser © (2010-02-01 21:10) [11]
> Anatoly Podgoretsky © (01.02.10 20:49) [10]
И это будет правильно работать? Почему?
← →
Anatoly Podgoretsky © (2010-02-01 21:15) [12]> turbouser (01.02.2010 21:10:11) [11]
По законам математики, просто предствь, что это беззнаковые числа и можешь проверить выполнением. Более того это будет работать и для Cardinal, только тут уже надо вспоминать про переносы и заемы.
← →
Dimka Maslov © (2010-02-01 21:34) [13]
> А разве Intel двухадресная машина, чтобы без eax посчитать
> a := a + b?
После работы оптимизатора вполне возможно, что a окажется в eax, а b в ecx. Тогда можно.
← →
uw © (2010-02-01 22:22) [14]Dimka Maslov © (01.02.10 21:34) [13]
После работы оптимизатора вполне возможно, что a окажется в eax, а b в ecx. Тогда можно.
Так ведь изначально первая переменная в ячейке a, а вторая - в b, а не в eax и ecx.
← →
Rouse_ © (2010-02-01 23:16) [15]Хм, никогда не понимал логику создателей синтетических тестов...
Ну поменяю я две переменные и что?
← →
Anatoly Podgoretsky © (2010-02-01 23:18) [16]Почувствуешь гордость за себя.
← →
antonn © (2010-02-01 23:23) [17]ну если оптимизация будет иметь место, то это будет заметно если каждую секунду выполнять эту операцию 4 миллиарда раз :)
← →
Rouse_ © (2010-02-01 23:23) [18]
> Anatoly Podgoretsky © (01.02.10 23:18) [16]
> Почувствуешь гордость за себя.
Ну это врятли, постебаться над аффтаром еще могу, выкатив ему стопицот вариантов (утрируя) а гордость за столь унылое творчество...
Кипятильники ищут чайников - это навевает грусть...
← →
Rouse_ © (2010-02-01 23:25) [19]
> antonn © (01.02.10 23:23) [17]
> ну если оптимизация будет иметь место, то это будет заметно
> если каждую секунду выполнять эту операцию 4 миллиарда раз
> :)
Ога, осталось найти ту задачу, где важна столь суровая оптимизация :)
← →
KilkennyCat © (2010-02-01 23:30) [20]
> Ну поменяю я две переменные и что?
исправишь допущенную ранее ошибку, где присвоилось наоборот
← →
oxffff © (2010-02-01 23:44) [21]
> Спрашивают довольно часто.
Я например спрашиваю у новичков по работе в чем отличие динамических методов от виртуальных. Еще никто правильно не ответил.
P.S. Заходит чел, я ему сразу в лоб вопрос. Обычно мычание про полиморфизм и на этом все.
Автор почитай про полиморфное лямбда исчисление и сломай мозг.
Я уже почти сломал.
← →
Rouse_ © (2010-02-01 23:54) [22]
> oxffff © (01.02.10 23:44) [21]
> Я например спрашиваю у новичков по работе в чем отличие
> динамических методов от виртуальных
Серег, у нас в глубине архивного бэкапа сохранились вещи, где люди конструктор класса вызывают в деструкторе его-же. На вапрос: ?????????? ответ был - а там дето мемлик был, после чего клас падал - а вот так работает...
А ты про виртуальные методы... :)
← →
Eraser © (2010-02-02 00:18) [23]> [21] oxffff © (01.02.10 23:44)
> отличие динамических методов от виртуальных.
вопрос не на много лучше сабжа, кстати )
← →
Ega23 © (2010-02-02 00:35) [24]
> Я например спрашиваю у новичков по работе в чем отличие
> динамических методов от виртуальных.
Я прошу прощения: а разве сейчас разница есть? Я так понимаю, что разница была когда-то давно, не?
← →
Игорь Шевченко © (2010-02-02 01:23) [25]Ega23 © (02.02.10 00:35) [24]
"Virtual Деректива Позволяет методу класса быть отменённым в производных классах. Директива Virtual позволяет методу класса быть отменой (замененной) так же названным методом в производном классе. Директива Virtual может сопровождаться директивой Abstract. Это изменяет эффект директивы Virtual. Это означает, что текущий класс не должен кодировать метод - он здесь только как метка-заполнитель, чтобы напомнить и гарантировать, что полученные классы осуществят его."
"Dynamic Деректива Позволяет методу класса быть заменённым в производных классах. Директива Dynamic позволяет методу класса быть отменой (замененной) так же названным методом в производном классе.
Директива dynamic может сопровождаться директивой Abstract. Это изменяет эффект директивы Dynamic . Это означает, что текущий класс не должен кодировать метод - он здесь только как метка-заполнитель, чтобы напомнить и гарантировать, что полученные классы осуществят его."
Понял, да ?
← →
Германн © (2010-02-02 02:12) [26]
> Кипятильники ищут чайников - это навевает грусть...
>
+1
← →
Германн © (2010-02-02 02:25) [27]
> Игорь Шевченко © (02.02.10 01:23) [25]
Откуда взят этот перевод на "не русский"?
← →
Не занят (2010-02-02 02:32) [28]
> Переставить местами 2 числа.function ExchangeNumbers(const source: TPoint): TPoint;
begin
Result.X := source.Y
Result.Y := source.X
end;
← →
Игорь Шевченко © (2010-02-02 02:36) [29]http://www.delphibasics.ru/Virtual.php
http://www.delphibasics.ru/Dynamic.php
← →
Германн © (2010-02-02 02:42) [30]
> Игорь Шевченко © (02.02.10 02:36) [29]
>
> http://www.delphibasics.ru/Virtual.php
> http://www.delphibasics.ru/Dynamic.php
По обеим ссылкам нашел термин "Директива". Что я сделал не так?
← →
Дмитрий С © (2010-02-02 04:45) [31]
> Игорь Шевченко © (02.02.10 01:23) [25]
А в чем разница-то?
> Ога, осталось найти ту задачу, где важна столь суровая оптимизация
> :)
Ну как, поменять местами две переменные четыре миллиарда раз, чем не задача :)
← →
12 © (2010-02-02 09:05) [32]
> Rouse_ © (01.02.10 23:23) [18]
>
>
> > Anatoly Podgoretsky © (01.02.10 23:18) [16]
> > Почувствуешь гордость за себя.
>
> Ну это врятли, постебаться над аффтаром еще могу, выкатив
> ему стопицот вариантов (утрируя) а гордость за столь унылое
> творчество...
>
> Кипятильники ищут чайников - это навевает грусть...
жду
← →
oxffff © (2010-02-02 09:19) [33]
> Ega23 © (02.02.10 00:35) [24]
>
> > Я например спрашиваю у новичков по работе в чем отличие
>
> > динамических методов от виртуальных.
>
>
> Я прошу прощения: а разве сейчас разница есть? Я так понимаю,
> что разница была когда-то давно, не?
Позднее связывание осуществляется различным образом.
Виртуальные - через смещение в таблице.
Динамические - через просмотр списка таблиц. С возможностью вызова обработчика по умолчанию
Но главное отличие в том, что для виртуальных методов подтип полжен быть подклассом. Для динамических подтип не обязательно является подклассом.
← →
Anatoly Podgoretsky © (2010-02-02 09:34) [34]> Германн (02.02.2010 02:25:27) [27]
Ключница водку делала.
← →
oxffff © (2010-02-02 09:45) [35]
> Rouse_ © (01.02.10 23:54) [22]
>
> > oxffff © (01.02.10 23:44) [21]
> > Я например спрашиваю у новичков по работе в чем отличие
>
> > динамических методов от виртуальных
>
> Серег, у нас в глубине архивного бэкапа сохранились вещи,
> где люди конструктор класса вызывают в деструкторе его-
> же. На вапрос: ?????????? ответ был - а там дето мемлик
> был, после чего клас падал - а вот так работает...
> А ты про виртуальные методы... :)
Приветствую.
К вопросу о корректности программ. Собственно никто не мешает вызывать конструктор класса из деструктора класса (я не призываю никого к этому. Но против высказываний в категорическом стиле ИШ. При всем конечно уважении к нему)
Только насколько я помню в Delphi 2010 их только ввели.
Что касаемо вызова обычного конструктора из деструктора, то и это не запрещается. Например если вызов произодить с указанием отсутствия аллокации, то он будет вести себя как обычный экземплярный метод. Поэтому это безопасно с точки зрения утечки. Можно и с аллокацией. Но нужно смотреть не перекрыт ли newinstance и соответствующий деаллокатор.
Опять же повторюсь это нужно делать лишь только в том случае когды знаешь как это работает. Но это делать можно. Это все к вопросу выразительности языков и frameworks.
← →
KSergey © (2010-02-02 09:50) [36]Занятно, как постарел чтоли форум.
Ранее такие задачки вроде вызывали искрометность решений.
А теперь - главное простота и доступность кода, поддерживаемость. И то, что речь по сути лишь про задачку, где это все не важно - а тут так вот вдруг.
Занятно.
← →
oxffff © (2010-02-02 09:53) [37]
> Опять же повторюсь это нужно делать лишь только в том случае
> когды знаешь как это работает. Но это делать можно. Это
> все к вопросу выразительности языков и frameworks.
Безусловно корректно программы проектировать изначально правильно.
Но признайтесь себе честно, что в течение жизни у вас были моменты когда вы удивлялись новым требованиям со стороны постановщика уже в конце цикла разработки. И просто не в соостоянии были их предусмотреть. Особенно когда предметная область для вас была первым опытом.
Поэтому иногда экономически более целесообразно вносить в программу прямые и категорические патчи.
Вообщем так, как ты любишь Rouse. :)
← →
12 © (2010-02-02 09:54) [38]
> Ранее такие задачки вроде вызывали искрометность решений.
на это ваш покорный и рассчитывал
а тут..
да еще и нахамили :(
← →
Не занят (2010-02-02 23:49) [39]это задача для микроконтроллера стиральной машины, а мы тут больше на дельфи для людей пишем...
← →
@!!ex © (2010-02-03 00:18) [40]> [21] oxffff © (01.02.10 23:44)
> Я например спрашиваю у новичков по работе в чем отличие
> динамических методов от виртуальных. Еще никто правильно
> не ответил.
И я правильно не отвечу. Наверно я плохой программист...
dynamic - не часть ООП, это часть конкретной реализации на конкретном языке.
ИМХО проектировать что-то для конкретного языка в большинстве задач не совсем верно.
Именно поэтому я в общем случае против использования RTTI.
← →
oxffff © (2010-02-03 00:50) [41]
> dynamic - не часть ООП,
У ООП нет рекомендаций по реализации.
← →
Аноним © (2010-02-03 00:52) [42]
> dynamic - не часть ООП, это часть конкретной реализации
> на конкретном языке.
а можно было еще и по haskell`у (а я бы еще пролог и форт) пройтись, чо
не знает? - усе, не программист
← →
oxffff © (2010-02-03 01:03) [43]
> Наверно я плохой программист
Честное слово прекрати. :)
Мы все учимся(во всяком случае могу за себя сказать).
Главное чтобы это желание(учится) не уходило с годами.
Поскольку увы большинство выпускников просто не хочет развиваться по окончанию вуза.
P.S. Давным давно занимался Direct3D. И даже баловался с написанием шейдеров. Правда вершинных. Читал и про пиксельные.
И не могу вспомнить как в них задается зависимость от положения в локальных координатах(и задается ли вообще. Например для расчета освещения от источника света. ведь должна быть). Не напомнишь? :)
А то на работе завтра нужно рассказать ребятам.
Вообщем взял SDK завтра перечитаю в любом случае.
← →
oxffff © (2010-02-03 01:05) [44]
> Аноним © (03.02.10 00:52) [42]
>
> > dynamic - не часть ООП, это часть конкретной реализации
>
> > на конкретном языке.
>
> а можно было еще и по haskell`у (а я бы еще пролог и форт)
> пройтись, чо
> не знает? - усе, не программист
И спросить для чего нужен комбинатор неподвижной точки.
И про экзистенциальные типы. КАк раз недавно себе голову этим ломал.
← →
Игорь Шевченко © (2010-02-03 01:08) [45]
> ИМХО проектировать что-то для конкретного языка в большинстве
> задач не совсем верно.
Одна и та же задача с легкостью должна быть решена на Perl, SmallTalk и SQL.
← →
vuk © (2010-02-03 01:23) [46]А еще можно вспомнить, что message - методы, они тоже на самом деле dynamic, но с другим синтаксисом.
← →
@!!ex © (2010-02-03 08:57) [47]> [43] oxffff © (03.02.10 01:03)
> Честное слово прекрати. :)
Мое вчерашнее сообщение прошу считать бредом... бред и есть.
> [43] oxffff © (03.02.10 01:03)
> И не могу вспомнить как в них задается зависимость от положения
> в локальных координатах(и задается ли вообще. Например для
> расчета освещения от источника света. ведь должна быть).
> Не напомнишь? :)
Зависимость от локальных координат??
Не совсем понял что ты имеешь ввиду.
← →
oxffff © (2010-02-03 10:36) [48]
> @!!ex © (03.02.10 08:57) [47]
Я собственно хотел при растеризации треугольника в пиксельном шейдере высчитывать например яркость пикселя в зависисмости от его положения в треугольнике. Но прочитал что много очень хочу. Во всяком случае в Direct3D 9.
← →
tesseract © (2010-02-03 10:46) [49]
> это задача для микроконтроллера стиральной машины, а мы
> тут больше на дельфи для людей пишем...
Сколько видел микроконтроллеров, там с гемморой с экономией RAM и ROM. Так что алгоритмы используются наиболее короткие и желательно без задействия математики.
← →
@!!ex © (2010-02-03 10:54) [50]> [48] oxffff © (03.02.10 10:36)
в вершине сохраняешь яркость.
В фрагментном шейдере получешь эту же яркость только интерполированную между тремя значениями в зависимости от расстояния до каждой из вершин.
← →
oxffff © (2010-02-03 11:21) [51]
> @!!ex © (03.02.10 10:54) [50]
> > [48] oxffff © (03.02.10 10:36)
>
> в вершине сохраняешь яркость.
Нет. Я хотел чтобы яркость была не интерполированная, а чтобы я мог сам высчитывать ее в зависимости от положения точки. То есть по факту производить расчет освещения самостоятельно.
← →
oxffff © (2010-02-03 11:55) [52]
> oxffff © (03.02.10 11:21) [51]
Хотя можно задействовать алгоритмы par. map и par.ocl. map для сходной реализации.
← →
@!!ex © (2010-02-03 13:28) [53]> [51] oxffff © (03.02.10 11:21)
ну так какая разница?
забей три числа, в каждой вершине
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
по их интерполированным значениям получишь "координаты" фрагмента
← →
app © (2010-02-03 13:30) [54]> @!!ex (03.02.2010 13:28:53) [53]
Заведите свою отдельную тему по вершинам.
← →
oxffff © (2010-02-03 14:16) [55]
> @!!ex © (03.02.10 13:28) [53]
> > [51] oxffff © (03.02.10 11:21)
>
> ну так какая разница?
> забей три числа, в каждой вершине
> 1.0 0.0 0.0
> 0.0 1.0 0.0
> 0.0 0.0 1.0
> по их интерполированным значениям получишь "координаты"
> фрагмента
Понял. :)
← →
KSergey © (2010-02-03 14:37) [56]> @!!ex © (03.02.10 00:18) [40]
> > не ответил.
>
> И я правильно не отвечу. Наверно я плохой программист...
Где-то было написано "плохой"? На собеседовании вовсе не обязательно отвечать на все вопросы для успешного прохождения оного, про это давно здесь в том числе уже говорилось. Т.к. задача совсем другая, это не экзамен, где надо непременно все ответы знать.
Ссылка в тему
http://0x8.livejournal.com/31546.html
Выдержка:
"...Вакансии Senior C++, Senior C# - я, в приципе, смотрю и тех и других.
Задача 1
Вычислить 2^8 (два в восьмой степени)
Кандидаты думают по нескольку минут, считают на бумаге, 2 раза дают неправильные ответы...."
← →
@!!ex © (2010-02-03 15:12) [57]> [56] KSergey © (03.02.10 14:37)
Ну уж степень двойки хотя бы до 12 степени почти все знают. :))
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.098 c