egorius: (Default)
[personal profile] egorius

У Йона Бентли прочитал однажды про поиск методом половинного деления: Большинство программистов полагают, что про приведенному выше описанию можно легко написать код. Они ошибаются. Не верите — отложите на время книгу и напишите сами. Попробуйте. Отложил, написал, работает. Ну ладно.

Сейчас вот ширим ряды, собеседую разработчиков. Дай, думаю, подкину задачку, посмотрим. И что же? Пока 2:0 в пользу Бентли. Ладно бы кандидаты написали не вполне корректно, я бы простил. Но они просто ничего не написали! Вот задумайтесь: профессиональные разработчики с многолетним стажем не смогли внятно записать на бумаге школьный алгоритм на своем любимом языке программирования. Не укладывается это в моей бедной голове.

Индусы, говорите? Ха.

Date: 2012-08-08 09:03 pm (UTC)
From: [identity profile] pigdeon.livejournal.com
К таким постам надо добавлять строчку: "А вот в мои годы... кхе-кхе..." :Е

Date: 2012-08-09 07:18 pm (UTC)
From: [identity profile] egorius.livejournal.com
Это когда на пенсию выйду. А пока я в строю, у них большие проблемы :)

Date: 2012-08-08 10:09 pm (UTC)
From: [identity profile] autoench.livejournal.com

$start = 0;
$end = 1000;

do {
	$guess = myGuess($start, $end);
	echo "My guess is {$guess}. Is your number (g)reater, (s)maller or (e)qual? ";
	$line = trim(fgets(STDIN)); 
	if ($line == "g") {
		// bigger
		$start = $guess+1;
	} elseif ($line == "s") {
		// smaller
		$end = $guess-1;
	} elseif ($line == "e") {
		// equal
		die("And the answer is: ".$guess."\n");
	} else {
		echo "Please enter 'e' for x == {$guess}, 's' if x < {$guess} or 'g' for x > {$guess}\n";
	}
} while (true);

function myGuess($start, $end) {
	return round(($start+$end)/2);
}



Типа такого что-то?

Date: 2012-08-09 07:23 pm (UTC)
From: [identity profile] egorius.livejournal.com
В задаче надо было определить индекс заданного элемента массива, при условии, что элементы упорядочены по возрастанию. Но суть та же, да.
Правда ведь, не очень сложно?

Date: 2012-08-10 11:56 am (UTC)
From: [identity profile] autoench.livejournal.com
Задача-то школьная. Может, стрессовая ситуация на собеседовании?

Date: 2012-08-09 05:34 am (UTC)
From: [identity profile] slone.livejournal.com
Я чего-т не понимаю? Енто ж попросту дихотомия какая-то, коллега... нну, скажем...
while ((b-a) > precision)
{
c = (a+b)/2;
if(f(b)*f(c)<0)
a=c;
else
b=c;
}
precision это в принципе некая желаемая точность.. ну, понятно, что начальные точки отрезка надо определить и саму функцию задать - просто кнопки давить лень...
но я опять о своём - я не понял задания или как хотя бы ЭТО можно было не написать?...

Date: 2012-08-09 07:30 pm (UTC)
From: [identity profile] egorius.livejournal.com
Ну примерно. Нахождение корня функции тоже из той же серии, а моя задача была на поиск индекса элемента в массиве, упорядоченного по возрастанию. Я вот тоже недоумеваю, коллега.

Date: 2012-11-24 09:38 am (UTC)
From: [identity profile] nikname.livejournal.com
Достаточно открыть и тупо спереть реализацию binary_search. Но вообще многие молодые люди, приходящие на работу в качестве программистов, ничего не читали. Бинарный поиск - классика, описан у Вирта, описан у Кнута, не удивлюсь, если и у Страустрапа.
Можно сказать, что написание классических алгоритмов - велосипедизм и стоит использовать готовые решения - наверняка он есть и для контейнеров в C#, но беда в том, что они не понимают, как это работает и не могут оценить сложность (трудность). Видимо это какой-то фундаментальный пробел в образовании + отсутствие интереса.

Date: 2012-11-24 09:17 pm (UTC)
From: [identity profile] egorius.livejournal.com
Мне в этом плане очень нравится вот эта статья Спольски: «Назад, к основам».

Date: 2012-11-25 06:22 am (UTC)
From: [identity profile] nikname.livejournal.com
Да. Отличная статья. Спасибо, что напомнили про Спольски - давно я его не читал.

Profile

egorius: (Default)
egorius

September 2025

M T W T F S S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 16th, 2026 07:52 am
Powered by Dreamwidth Studios