Interview question
60 отговора
2507 прегледа
Interview question
Ei tazi zadacha mi razkaza igrata na interviewto:
Imate array of size n. Zapochvate da izkluchvate vseki m element, dokato ostane samo edin nakraia. Koi e indeksa na poslednia ostavasht element. Zadachata ima slednia prototip:
int Foo(int n, int m){
...
return index;
}
Uspeh!
Imate array of size n. Zapochvate da izkluchvate vseki m element, dokato ostane samo edin nakraia. Koi e indeksa na poslednia ostavasht element. Zadachata ima slednia prototip:
int Foo(int n, int m){
...
return index;
}
Uspeh!
Зависи
Имам в Билдъра един обект - TList.
Последния елемент в него винаги е с индекс 0.
Bеer? Moooorrre?
Последния елемент в него винаги е с индекс 0.
Bеer? Moooorrre?
Re: Interview question
Очевидно накрая ще останат m-1 елемента, или по-скоро m елемента доколкото индексирането почва от от 0. Откъдето ще да почва индексирането, последния елемент ще е с индекс m-1.
Re: Interview question
тази задачка съм я срещал с чекмеждета:) абсолютно същата е. има я в наскоро излязлата книга - интервюта за програмисти. на мен ми се стори твърда:( това обикновенно са задчачки за по двайсетина минутки...ако минат то едва ли някога ще се сетиш.
Re: Interview question
Nakraia ostava samo edin element! Naprimer neka array da e ABCDEF - n = 6, m = 12, togava poredno se izkluchvat: F, B, E, D, C i ostava A - indexa na poslednia element e 0 (ili pyrvi element). Broeneto e krygovo ABCDEFABCDEFABCDEF...i t.n.
Re: Interview question
Zadachata s chehmidjetata ia znam - dvete niamat nishto obshto.
Re: раздуй за фирмата
какво токова? може утре да ида на интервю та да съм подготвен:)
задачата е некоректна
какво значи, изключване на елемент от МАСИВ
такова животно нема в никой език, има класове в които може да се прави, но поне аз не знам език в който от МАСИВИТЕ да могат да се изключват елементи, най-много да ноже да им се променя размера.
така че както е написана тука, единствения начин да се "изключи" елемент е да му се даде невалидна стойност, и при такава постановка, нищо не може а се каже за индекса на последния останал елемент
такова животно нема в никой език, има класове в които може да се прави, но поне аз не знам език в който от МАСИВИТЕ да могат да се изключват елементи, най-много да ноже да им се променя размера.
така че както е написана тука, единствения начин да се "изключи" елемент е да му се даде невалидна стойност, и при такава постановка, нищо не може а се каже за индекса на последния останал елемент
Re: задачата е некоректна
Na prav pyt si bose! Ot men NE iskaha tochno da izkluchvam elementa, daje ne e vajno kakvo ima v masiva - chisla, iabylki ili topki...Prosto 'markirai' ili 'zacherkni' porednia m-ti element i ne go broi pri sledvashto preminavane prez masiva.
Ot men iskaha samo edin otgovor: indeksa na poslednia ostanal!
Ot men iskaha samo edin otgovor: indeksa na poslednia ostanal!
Улеснение
Нека да улесним малко задата: Представете си,е елементите на масива са индексите, тоест: a = i; или масива представлява: 123456... или 012345...
да не би да искаш да кажеш
индекса на последния, който току що си изключил, а не последния останал.
ако е така, той е m :-)
ако е така, той е m :-)
Re: Interview question
Хмм задачата определено е интересна...
Само, че не е казано какво се прави когато m стане > n.
Спираш или продължаваш с броенето повтаряйки вече преброени елементи в цикъла.
Трябва да се вземе и в предвид дали
n и m дали са четни/нечетни ... и май те това е теоритичната постановка
сега остават само сметките :))
ама мен ме мързииии....
Само, че не е казано какво се прави когато m стане > n.
Спираш или продължаваш с броенето повтаряйки вече преброени елементи в цикъла.
Трябва да се вземе и в предвид дали
n и m дали са четни/нечетни ... и май те това е теоритичната постановка
сега остават само сметките :))
ама мен ме мързииии....
n-1
при база 0
или на vb - ubound(array)
естествено за езици позволяващи задаване на долна граница, m може да е по-малко от n и тогава можеш да се гръмнеш
или на vb - ubound(array)
естествено за езици позволяващи задаване на долна граница, m може да е по-малко от n и тогава можеш да се гръмнеш
Редактирано от бoc на
Продължаваш с броенето!
Продължаваш с броенето повтаряйки вече преброени елементи в цикъла.
Да, m може да по-голямо n, може и да е по-малко - броенето се завърта: например, ако масива е АБВГДЕ и m е 13 се брои: АБВГДЕАБВГДЕА и А се маркира за изклчючване. Продължаваш да работиш с масива: БВГДЕБВГДЕБВГ и маркираш Г и т.н. Трудното е да се напише верния код, който върши работата и да се върне верния отговор, иначе идеята и алгоритъма са ясни!
Да, m може да по-голямо n, може и да е по-малко - броенето се завърта: например, ако масива е АБВГДЕ и m е 13 се брои: АБВГДЕАБВГДЕА и А се маркира за изклчючване. Продължаваш да работиш с масива: БВГДЕБВГДЕБВГ и маркираш Г и т.н. Трудното е да се напише верния код, който върши работата и да се върне верния отговор, иначе идеята и алгоритъма са ясни!
Re: Продължаваш с броенето!
>> Трудното е да се напише верния код, който върши работата и да се върне верния отговор, иначе идеята и алгоритъма са ясни!
Това трябва да е първият случай когато имаш идея и алгоритъм пък не знаеш как да напишеш кода
Кое му е толкова трудното, просто въртиш из масива и изключваш елементите един по един. Друг е въпросът че хората вероятно искат по-елегантно решение - базирано на сметки с m и n.
----------
Кирилица Forever
Това трябва да е първият случай когато имаш идея и алгоритъм пък не знаеш как да напишеш кода
Кое му е толкова трудното, просто въртиш из масива и изключваш елементите един по един. Друг е въпросът че хората вероятно искат по-елегантно решение - базирано на сметки с m и n.
----------
Кирилица Forever
Напиши го!
Хайде напиши кода - дела, дела и пак дела!
На думи е лесно, а пък аз ти обещавам да ти тествам функцията и ще ти покажа поне 2 места на които ГЪРМИШ!
На думи е лесно, а пък аз ти обещавам да ти тествам функцията и ще ти покажа поне 2 места на които ГЪРМИШ!
Математика не учите ли вече???
// c language
int Foo(int n, int m) {
const int theRightIndex = ( (((m%n)+n)%n)-1 ); //it's so long just in case you send me m < 0 ;)
int iNextIndex = theRightIndex;
ASSERT((n>0)&&(m!=0));
if( n <= 0 ) {
ERROR("Strange %s, mmm? (%d)",m!=0?"array","increment",m!=0?n:m);
return m!=0?n:m; // ok - deal with this wrong parameter ;)
else {
//if you realy want to alter the array, do it here and set iNextIdex appropriate
ASSERT( iNextIndex == theRightIndex ); // YOU doing something wrong - try again
return theRightIndex; //heheeeee - that is why it's "the right"
}
}
// ebasi, kato se napia i neznam kude cheta i pisha, mmm?
int Foo(int n, int m) {
const int theRightIndex = ( (((m%n)+n)%n)-1 ); //it's so long just in case you send me m < 0 ;)
int iNextIndex = theRightIndex;
ASSERT((n>0)&&(m!=0));
if( n <= 0 ) {
ERROR("Strange %s, mmm? (%d)",m!=0?"array","increment",m!=0?n:m);
return m!=0?n:m; // ok - deal with this wrong parameter ;)
else {
//if you realy want to alter the array, do it here and set iNextIdex appropriate
ASSERT( iNextIndex == theRightIndex ); // YOU doing something wrong - try again
return theRightIndex; //heheeeee - that is why it's "the right"
}
}
// ebasi, kato se napia i neznam kude cheta i pisha, mmm?
И къде е тук математиката?!?
... че нещо не ми стана много ясно. Тук виждам некви безмислени ассерти тип "Аз съм MFC прогърмист".
Какво ти пречи m да има произволна целочислена стойност?
Тук (((m%n)+n)%n)-1 виждам (X+N) mod N, което си е X mod N, та май те няма много с математиката.
Ще обясниш ли все пак какво си имал предвид с горната формула да разберем и ние простите дето не сме учили математика? Щото не дава верен резултат и може да имаш някъде печатна грешка.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Какво ти пречи m да има произволна целочислена стойност?
Тук (((m%n)+n)%n)-1 виждам (X+N) mod N, което си е X mod N, та май те няма много с математиката.
Ще обясниш ли все пак какво си имал предвид с горната формула да разберем и ние простите дето не сме учили математика? Щото не дава верен резултат и може да имаш някъде печатна грешка.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_