Как нанять грамотного индуса?

User avatar
Mic
Уже с Приветом
Posts: 6906
Joined: 20 Apr 1999 09:01
Location: Seattle

Re: Как нанять грамотного индуса?

Post by Mic »

jms wrote:А помоему там вполне четко описан циклический свдиг вправо на m.
Тогда вот:

Code: Select all

	
public class Task
{
	// Есть массив A1, A2, ..., Am, Am+1, Am+2, ..., An. 
	// Без использования дополнительного массива преобразовать 
	// в массив Am+1, Am+2, ..., An, A1, A2, ..., Am
	public void LoopShifting()
	{
		int shift = 7; 						
		string[] arr = {"0","1","2","3","4"};

		for (int i = 0; i < shift; i++)
		{
			ShiftRight(arr);
			PrintResult(arr, i);
		}
	}

	private void ShiftRight(string[] arr)
	{
		if (arr == null)
			throw new ApplicationException("The parameter 'string[] arr' is null");

		if (arr.Length < 2)
			return;

		string last = arr[arr.Length - 1];
		for (int i = arr.Length - 1; i > 0; i--)
		{
			arr[i] = arr[i - 1];
		}
		arr[0] = last;
	}

	private void PrintResult(string[] arr, int step)
	{
		if (arr == null)
			throw new ApplicationException("The parameter 'string[] arr' is null");

		Debug.Write(String.Format("Step {0}: ", step));

		foreach (var a in arr)
		{
			Debug.Write(a + " ");
		}
		Debug.WriteLine("");
	}
}
Результат на каждый шаг:

Code: Select all

Step 0: 4 0 1 2 3 
Step 1: 3 4 0 1 2 
Step 2: 2 3 4 0 1 
Step 3: 1 2 3 4 0 
Step 4: 0 1 2 3 4 
Step 5: 4 0 1 2 3 
Step 6: 3 4 0 1 2 
Вообще классически на интервью просят два решения - одно оптимизировано по ресурсам, другое по быстродействию.
Last edited by Mic on 12 Sep 2009 23:57, edited 1 time in total.
User avatar
Mic
Уже с Приветом
Posts: 6906
Joined: 20 Apr 1999 09:01
Location: Seattle

Re: Как нанять грамотного индуса?

Post by Mic »

Я только одного не понимаю - как такого рода задачки характеризуют меня как программера?... :pain1:
Sasha3091
Уже с Приветом
Posts: 1369
Joined: 05 Sep 2008 01:22

Re: Как нанять грамотного индуса?

Post by Sasha3091 »

Вы уж определитесь в вопросе - или грамотного - или индуса. Кот не может быть хорошим с точки зрения мышей.
User avatar
KOT MATPOCKUH
Уже с Приветом
Posts: 2741
Joined: 17 Jul 2000 09:01
Location: Одесса -> Лос-Анджелес -> Делавер -> Мэриленд -> Вирджиния. Хочу снова в Одессу.

Re: Как нанять грамотного индуса?

Post by KOT MATPOCKUH »

Sasha3091 wrote:Вы уж определитесь в вопросе - или грамотного - или индуса. Кот не может быть хорошим с точки зрения мышей.
Кроме того, вот эта цель:
Марик wrote:Придется нам набрать несколько индусов в Индии взамен Московской команды, что бы спихнуть на них саппорт, багфиксы
недостижима в принципе. Седьмой закон Ньютона гласит, что какой бы ни был индус, пофиксив один баг, он обязательно привнесёт как минимум один новый :umnik1:
А я все чаще замечаю, что меня как будто кто-то подменил...
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Как нанять грамотного индуса?

Post by Komissar »

В Америке индустрия (ИТ) уже слишком сильно проедена индусами. Индусов не исправишь, остается только менять профессию. Переквалифицироваться в управдома (лендлорда), например.
User avatar
jms
Уже с Приветом
Posts: 268
Joined: 29 Dec 2006 12:03

Re: Как нанять грамотного индуса?

Post by jms »

Mic wrote:
jms wrote:А помоему там вполне четко описан циклический свдиг вправо на m.
Тогда вот:

Code: Select all

	
public class Task
{
	// Есть массив A1, A2, ..., Am, Am+1, Am+2, ..., An. 
	// Без использования дополнительного массива преобразовать 
	// в массив Am+1, Am+2, ..., An, A1, A2, ..., Am
	public void LoopShifting()
	{
		int shift = 7; 						
		string[] arr = {"0","1","2","3","4"};

		for (int i = 0; i < shift; i++)
		{
			ShiftRight(arr);
			PrintResult(arr, i);
		}
	}

	private void ShiftRight(string[] arr)
	{
		if (arr == null)
			throw new ApplicationException("The parameter 'string[] arr' is null");

		if (arr.Length < 2)
			return;

		string last = arr[arr.Length - 1];
		for (int i = arr.Length - 1; i > 0; i--)
		{
			arr[i] = arr[i - 1];
		}
		arr[0] = last;
	}

	private void PrintResult(string[] arr, int step)
	{
		if (arr == null)
			throw new ApplicationException("The parameter 'string[] arr' is null");

		Debug.Write(String.Format("Step {0}: ", step));

		foreach (var a in arr)
		{
			Debug.Write(a + " ");
		}
		Debug.WriteLine("");
	}
}
Результат на каждый шаг:

Code: Select all

Step 0: 4 0 1 2 3 
Step 1: 3 4 0 1 2 
Step 2: 2 3 4 0 1 
Step 3: 1 2 3 4 0 
Step 4: 0 1 2 3 4 
Step 5: 4 0 1 2 3 
Step 6: 3 4 0 1 2 
Вообще классически на интервью просят два решения - одно оптимизировано по ресурсам, другое по быстродействию.
Ok. Но это опять квадратичное время а не линейное..
-- who says a penguin can't fly? http://www.youtube.com/watch?v=9dfWzp7rYR4
User avatar
jms
Уже с Приветом
Posts: 268
Joined: 29 Dec 2006 12:03

Re: Как нанять грамотного индуса?

Post by jms »

deve wrote:
jms wrote:Че то как то я не уловил логики. Работающуюу программу я написал. Вопроса "о почему о других так плохо думаете или о себе слишком хорошо ?" я если чесно не понял. Я думаю о людях плохо когда они того заслуживают.
Так с логикой похоже тоже не лады. Ну ладно, расшифруем: с чего вы решили, что вы тут "один Д`Артаньян", а "правильное решение (за O(n)) подавляющее большинство местных гуру :nono: не напишет на собеседовании" ?
Это моя субьективная оценка обьективной реальности. Кстати я нигде не давал себе оценку как програмисту, это ваша фантазия.
-- who says a penguin can't fly? http://www.youtube.com/watch?v=9dfWzp7rYR4
User avatar
jms
Уже с Приветом
Posts: 268
Joined: 29 Dec 2006 12:03

Re: Как нанять грамотного индуса?

Post by jms »

Bonny P. wrote:
jms wrote:
Bonny P. wrote:
jms wrote:Не знаю будет ли это работать, но сложность явно O(nm).
Что там может не работать?
Какая разница.
Ответ, достойный интервьюера! :)
Вы вырвали фразу из контекста.
-- who says a penguin can't fly? http://www.youtube.com/watch?v=9dfWzp7rYR4
User avatar
jms
Уже с Приветом
Posts: 268
Joined: 29 Dec 2006 12:03

Re: Как нанять грамотного индуса?

Post by jms »

John Smith wrote:Кстати о гугле, вот ответ на задачу o циклическом сдвиге (Внимание! кто хочет сам решить - туда не смотреть): http://stackoverflow.com/questions/8762 ... m-position

Нарветесь на грамотного индуса - спеца по задачкам, вот он вам напрограммирует.
Кстати мой алгоритм быстрее, у них 2n итерации, а у меня n :umnik1:
Хотя записывается их намного элегантнее.

Update: хотя если подумать у меня операций в итерации намного больше, так что у них полюбому круче.
-- who says a penguin can't fly? http://www.youtube.com/watch?v=9dfWzp7rYR4
User avatar
GarikToo
Уже с Приветом
Posts: 24387
Joined: 03 Jan 2007 08:32
Location: Львов->Израиль->Убей Эрия

Re: Как нанять грамотного индуса?

Post by GarikToo »

Komissar wrote:В Америке индустрия (ИТ) уже слишком сильно проедена индусами. Индусов не исправишь, остается только менять профессию. Переквалифицироваться в управдома (лендлорда), например.
Да ладно. Можно подумать белые програмеры все идеальны
Оливье готовлю, холодец варю, посуду мою, пылесоса не боюсь. Скупой.
User avatar
GarikToo
Уже с Приветом
Posts: 24387
Joined: 03 Jan 2007 08:32
Location: Львов->Израиль->Убей Эрия

Re: Как нанять грамотного индуса?

Post by GarikToo »

KOT MATPOCKUH wrote:
Sasha3091 wrote:Вы уж определитесь в вопросе - или грамотного - или индуса. Кот не может быть хорошим с точки зрения мышей.
Кроме того, вот эта цель:
Марик wrote:Придется нам набрать несколько индусов в Индии взамен Московской команды, что бы спихнуть на них саппорт, багфиксы
недостижима в принципе. Седьмой закон Ньютона гласит, что какой бы ни был индус, пофиксив один баг, он обязательно привнесёт как минимум один новый :umnik1:

Закон сохранения энергии по–индусски :D
Оливье готовлю, холодец варю, посуду мою, пылесоса не боюсь. Скупой.
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Как нанять грамотного индуса?

Post by Komissar »

Ну индусы же себя тоже белой расой считают.
User avatar
John Smith
Уже с Приветом
Posts: 1680
Joined: 04 Oct 2006 23:30
Location: Las Vegas

Re: Как нанять грамотного индуса?

Post by John Smith »

jms wrote:
John Smith wrote:Кстати о гугле, вот ответ на задачу o циклическом сдвиге (Внимание! кто хочет сам решить - туда не смотреть): http://stackoverflow.com/questions/8762 ... m-position

Нарветесь на грамотного индуса - спеца по задачкам, вот он вам напрограммирует.
Кстати мой алгоритм быстрее, у них 2n итерации, а у меня n :umnik1:
Хотя записывается их намного элегантнее.

Update: хотя если подумать у меня операций в итерации намного больше, так что у них полюбому круче.
У них тоже за n итераций ( хинт: реверс массива длины n делается за n/2 итераций)
User avatar
jms
Уже с Приветом
Posts: 268
Joined: 29 Dec 2006 12:03

Re: Как нанять грамотного индуса?

Post by jms »

John Smith wrote:
jms wrote:
John Smith wrote:Кстати о гугле, вот ответ на задачу o циклическом сдвиге (Внимание! кто хочет сам решить - туда не смотреть): http://stackoverflow.com/questions/8762 ... m-position

Нарветесь на грамотного индуса - спеца по задачкам, вот он вам напрограммирует.
Кстати мой алгоритм быстрее, у них 2n итерации, а у меня n :umnik1:
Хотя записывается их намного элегантнее.

Update: хотя если подумать у меня операций в итерации намного больше, так что у них полюбому круче.
У них тоже за n итераций ( хинт: реверс массива длины n делается за n/2 итераций)
Да, точно, туплю :-(
-- who says a penguin can't fly? http://www.youtube.com/watch?v=9dfWzp7rYR4
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Как нанять грамотного индуса?

Post by Komissar »

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

Проснитесь, братья! "Вихри враждебные веют над нами..."(с)

Return to “Работа и Карьера в IT”