Модераторы     Правила  
  Судовой журнал
  В помощь разработчику | Правила раздела
  Программистские голо...

Боцманы:  CTAKAH, cthulhu

 Страница   из 15    |  Показывать   на странице
Старые сначала  Тема: Программистские головоломки.
Кот Матроскин
Бывший океанец
Сообщений: 9819459

M_e_p_h_i_s_t_o пишет:
По той же причине, по которой не катит решение Громио, из-за того же специального случая.


ну, я попробывал, у меня быстрее работает
09 Апреля 2005 16:40      
Gromio
Штурман



Сообщений: 702

M_e_p_h_i_s_t_o пишет:
По той же причине, по которой не катит решение Gromio, из-за того же специального случая.

Ax tiper' ponil
pravda ne uchel esli T2 budet pusta to v nezavisimosti ot T1 rezultat budet pusto
xmm toka kak tuta ehto napisat' .... )

Select distinct A
from T1
Inner join T2
on not T1~A is null

che-nit' takoe ...
----------------------
G.R.O.M.I.O.: General Replicant Optimized for Mandatory Infiltration and Observation
09 Апреля 2005 16:43      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

Gromio пишет:
Ах типерь понил
правда не учел если Т2 будет пуста то в независимости от Т1 резултат будет пусто
хмм тока как тута это написать .... )

Селецт дистинцт А
фром Т1
Иннер ёин Т2
он нот Т1~А ис нулл

че-нить такое ...



и опять таки по УНИОНьу все выведится
09 Апреля 2005 16:55      
Vodila
Поручик
Сообщений: 1245

Хоть меня и просили невмешиваться, но
читайте внимательнее условие задания
----------------------
В воздухе появилось что–то окончательное и думать стало некому, нечего, нечем да и незачем.
09 Апреля 2005 20:08      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

Vodila пишет:
Хоть меня и просили невмешиваться, но
читайте внимательнее условие задания


в условии стоит, "быстрее с тем же результатом", вот:

SELECT DISTINCT A FROM (SELECT * FROM T1 UNION SELECT * FROM T2);
09 Апреля 2005 21:54      
Grossmutters_G
Поручик



Сообщений: 1882

another пишет:
более полное условие задачи:

на вход подаётся переменная i со значением x или y;
оптимизироват` выражение

if(i==x){ i=y; } else { i=x; }

убрав все условные операторы

(i-x)?;i=y);
Правильно?
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 22:35      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

Grossmutters_G пишет:
(и-х)?;и=ы);
Правильно?


? - тоже являйется условным оператором
09 Апреля 2005 22:57      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

на самом деле i=(х+y)-i
09 Апреля 2005 22:58      
Grossmutters_G
Поручик



Сообщений: 1882

another пишет:
на самом деле i=(х+y)-i

Очень занимательно (без иронии) А теперь назовите мне случаи, когда такая оптимизация неприемлема?
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 23:01      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

Grossmutters_G пишет:
Очень занимательно (без иронии) А теперь назовите мне случаи, когда такая оптимизация неприемлема?


да нету таких случаев, это же так задачка на воображение, так например как и эта:

if(i=5)
{
printf("i=5");
}
else if(i>5)
{
printf("i>5");
}else if(i
09 Апреля 2005 23:10      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

допишу обрезанное
09 Апреля 2005 23:14      
CrystalSoul
Бывший океанец
Сообщений: 9819459

another пишет:
да нету таких случаев, это же так задачка на воображение, так например как и эта:

иф(и=5)
{
принтф("и=5");
}
елсе иф(и>5)
{
принтф("и>5");
}елсе иф(и

втыкайте   после < чтоб не реплейсило
09 Апреля 2005 23:15      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

что за свинство, даите же мне написать код:
итак

i
09 Апреля 2005 23:16      
Grossmutters_G
Поручик



Сообщений: 1882

another пишет:
да нету таких случаев, это же так задачка на воображение, так например как и эта:

if(i=5)
{
printf("i=5");
}
else if(i>5)
{
printf("i>5");
}else if(i

Случаи есть, но в полемику из-за них я вступать не хочу, т.к. они нисколько не умаляют достоинств данной задачи Пусть это будет дополнительный вопрос:

В каких случаях, вообще говоря, не применима вышеприведенная оптимизация
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 23:17      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

i (men'she) 5){
printf("i(men'she)5");
}

очень полезно новичкам, условие тоже, оптомизировать убрав все условные операторы
09 Апреля 2005 23:17      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

Grossmutters_G пишет:
Случаи есть, но в полемику из-за них я вступать не хочу, т.к. они нисколько не умаляют достоинств данной задачи Пусть это будет дополнительный вопрос


вот, абсолютно с Вами согласен
09 Апреля 2005 23:20      
Grossmutters_G
Поручик



Сообщений: 1882

another пишет:
i (men'she) 5){
printf("i(men'she)5");
}

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

Вспомните HTML - и жизнь в форуме для вас сразу станет потрясающе красочной <а еще мы можем вот так≷ "&", "g", "t", ";"... далее по аналогии
----------------------
"Было бы величайшей ошибкой думать...",-В.И.Ленин
09 Апреля 2005 23:20      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

another пишет:
в условии стоит, "быстрее с тем же результатом", вот:

SELECT DISTINCT A FROM (SELECT * FROM T1 UNION SELECT * FROM T2);

Ладно, объясняю. Gromio все равно уже почти докрутил. Возьмем то, что предлагалось сначала:
SELECT DISTINCT A FROM T1
Результат тот же, что и у изначального запроса с одним исключением: когда T2 пуста, то изначальный запрос выдает пустое множество. Фактически изначальный запрос выглядит так: "Дай содержание поля A из T1, если T2 не пуста и пустое множество, если T2 пуста". Тут, кстати, возникает и проблема с UNION, т. к. UNION в этом случае не дает пустое множество. Чтобы ускорить запрос, надо убрать JOIN-операцию, но учитывать, не пуста ли T2, например, так:
SELECT A FROM T1 WHERE EXISTS (SELECT * FROM T2);
09 Апреля 2005 23:21      
Кот Матроскин
Бывший океанец
Сообщений: 9819459

[quote=Grossmutters_G]Вспомните ХТМЛ - и жизнь в форуме для вас сразу станет потрясающе красочной
09 Апреля 2005 23:21      
Vodila
Поручик
Сообщений: 1245

M_e_p_h_i_s_t_o пишет:
SELECT A FROM T1 WHERE EXISTS (SELECT * FROM T2)


Andrej u tebja Select vypolnjaetsja v ljubom sluchae,
a mozhno sdelat' tak:

IF Exists(Select top 1 * from T2)
begin
select distinct A from T1
end
----------------------
В воздухе появилось что–то окончательное и думать стало некому, нечего, нечем да и незачем.
09 Апреля 2005 23:25      
 Страница   из 15    |  Показывать   на странице
Перейти в
© Stanislav Neuberger 2001-2K24 · Impressum · Служба поддержки