Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];

Вниз

Тест - какого типа вы программист.   Найти похожие ветки 

 
NightAngel   (2003-07-08 01:41) [0]

Не воспринимайте это слишком серьёзно.

Программа проверяет значение переменной I. Если ее значение 1, то его меняют на 2 и наоборот.

Выберите, как бы это сделали вы:

0.
REM Программа "OneTwo"
IF I=2 THEN I=1
ELSE I=2

1.
REM ЗАМЕНА ЧИСЛА
IF I=2 THEN I=I-1
IF I=1 THEN I=I+1

2.
if I=2 then
begin
I:=1; {МЕНЯЕМ 2 НА 1}
end
else
begin
I:=2; {МЕНЯЕМ 1 НА 2}
end;

3.
J=2
IF I=2 THEN J=1
I=J

4.
DECLARE SWITCH LABEL;
. . .
IF I=1 THEN SWITCH=ONE;
IF I=2 THEN SWITCH=TWO;
GOTO SWITCH;
ONE: I=2;
GOTO DONE;
TWO: I=1;
DONE:

5.
DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
. . .
I=ONETWO(I);

6.
I=3-I;

7.
xor I,3

8.
/* Инициализация ONTW */
int InitONTW(int I);
{
I=I-(I/2*2)+1;
return I;
}

9.
I:=I xor 3;
if I=1 then KillFAT else DestroyMBR;

10.
int OneTwo(int I)
{
if ((I > 2) || (I < 1))
{
printf("Fatal Error %d: Неверное значение параметра - установлено в 1",rand());
printf("Если ошибка повторится, обратитесь в службу технической поддержки");
I=1;
}
return 3-I;
}

11.
short OneTwo(short I) { short ot[2]=2,1; return ot[I]; }

12.
connect(s,(const struct sockaddr *)&sa,sizeof(sa));
send(s, GetAllPossiblePasswords(&psw), strlen(psw), 0);
printf("Не хватает памяти");

Результаты позже.


 
Ihor Osov'yak   (2003-07-08 01:53) [1]


Вар 9, но только первую строчку.. Сорри, это будет вар. 7


 
Asteroid   (2003-07-08 04:18) [2]

Сначала 2, но после раздумий (если вдруг зациклюсь на этом) - 6 или 7. Теоретически 10 или 11. Короче, как всегда я не вписываюсь ни в один из "типов программистов" :)


 
Radionov Alexey   (2003-07-08 07:39) [3]

6-й вариант для читабельности (I:=3-I)
7-й для скорости ;-)


 
SergP   (2003-07-08 08:13) [4]

Смотря на чем пишу. Если бы писал прогу на Дельфи то сделал бы 6, хотя в прочих случаях, когда пишу что-то на других языках то в зависимости от того на чем пишу - применяю аналоги 7 или 6.


 
y-soft   (2003-07-08 08:16) [5]

Вариация 11, только на Pascal:


procedure OneTwo(var I : integer);
const
A : array[Boolean] of integer = (2,1);
begin
I := A[I = A[False]];
end;


 
SergP   (2003-07-08 09:34) [6]


> 1.
> REM ЗАМЕНА ЧИСЛА
> IF I=2 THEN I=I-1
> IF I=1 THEN I=I+1


а это как? :)



 
ПИТОН   (2003-07-08 09:37) [7]

6 или 7.
Сморя на чем и для чего


 
Vlad Oshin   (2003-07-08 09:38) [8]

10 самое надежное


 
Слесарь Матерящийся   (2003-07-08 10:06) [9]

I=(I==1)?2:I;


 
Holy   (2003-07-08 10:09) [10]

Вариант 7. Самый быстрый и экомичный.


 
Sergey Masloff   (2003-07-08 10:14) [11]

10


 
Sandman25   (2003-07-08 10:43) [12]

Если это внутренняя переменная (которую пользователь не может ввести), то 6.
Иначе 10, либо указать тип переменной как 1..2 и спросить ее значение у пользователя :)


 
Anatoly Podgoretsky   (2003-07-08 10:52) [13]

А где вариант с COM+


 
pasha_golub   (2003-07-08 11:41) [14]

6 или 7, но с проверкой...


 
Milz   (2003-07-08 11:52) [15]

Тоже не воспринимать серьёзно.
Я бы подумал зачем мне такая прога и решил не писать ;)


 
@lex   (2003-07-08 11:52) [16]

I:=I mod 2 + 1;



 
kaif   (2003-07-08 12:38) [17]

Принципиально вариант 1.
В этом тексте ясна постановка самой задачи. Потом не запутаюсь при поддержке.


 
Anatoly Podgoretsky   (2003-07-08 12:48) [18]

Если говорить о чистоте и понятности конечно варианты 0 и 2, кроме того вариант 2 можно написать и без операторных скобок

if i=2 then i:=1 else I:=2;

Но все равно остается темным вопрос, насчет варианта когда I <> 1 или I <> 2, а в условии не так, отсюда можно сказать, что эти варианты неверные.

if I = 2 then I = 1
else if I = 1 then I := 2;

вот так будет " Если ее значение 1, то его меняют на 2 и наоборот." и будет понятно даже не программисту.


 
keymaster   (2003-07-08 12:49) [19]

Вариант 2.

ОТВЕТЫ ЛЮДЯМ!


 
Anatoly Podgoretsky   (2003-07-08 12:51) [20]

Вообще то мне понравился вариант один, поскольку строго по вопросу :-)


 
kaif   (2003-07-08 12:57) [21]

Блин, я ошибся.
У тебя нумерация с нуля... Заметил после ответа Подгорецкого.
Я имел в виду самый первый вариант 0.
Но комментарий я бы все же убрал.

IF I=2 THEN I=1
ELSE I=2


 
Вован   (2003-07-08 13:06) [22]

Варинат 6
Но для надежности сделал бы так:

case i of
1: i:=2;
2: i:=1;
end;


 
Вован   (2003-07-08 13:33) [23]

Или так:

asm
mov ax,i
cmp ax,1
jne l1
mov ax,2
jmp near l3
l1: cmp ax,2
jne l3
mov ax,1
l3: mov i,ax
end


 
ZeroDivide   (2003-07-08 13:46) [24]

10 - ый вариант.


 
SergP   (2003-07-08 14:40) [25]

Вообще-то если предполагается что i может принимать только эти 2 значения то вариант 7 самый подходящий.

Но все равно все зависит от конкретного случая.
Например мож помните времена когда еще не было нормальных компов, и пользовались большой популярностью СПЕКТРУМы (на Z80)
так я когда писал одну прогу, в некоторых случаях для таких вещей пользовался xor a,3 (если такое приходилось один раз делать), но когда это находилось в цикле или использовалось много раз и были свободные регистры, то сначала в один такой регистр заносил 3 ( типа ld d,3 )
а потом в проге использовал xor a,d (в процессоре Z80 xor a,3 выполняется за 7 тактов, а xor a,d за 4 такта)



 
ZeroDivide   (2003-07-08 16:27) [26]

Результаты то будут? Или они от ответов зависят? :)))


 
JibSkeart   (2003-07-08 16:41) [27]

#define OneTwo(x) x>=2 ? 1:2

можно даже и так ...
и помоему проще :))


 
Poirot   (2003-07-08 16:47) [28]


> @lex © (08.07.03 11:52)
> I:=I mod 2 + 1;



 
JibSkeart   (2003-07-08 16:55) [29]

Poirot © (08.07.03 16:47)

остаток прибавляем к еденицее ...
и помойму ошибочка


 
SergP   (2003-07-08 18:15) [30]


> JibSkeart © (08.07.03 16:55)
> Poirot © (08.07.03 16:47)
>
> остаток прибавляем к еденицее ...
> и помойму ошибочка


Почему? Если i=1 то i mod 2 =1
А если i=2 то i mod 2 = 0
Вроде бы все правильно...


 
wicked   (2003-07-08 18:33) [31]

2 JibSkeart ©
хмм....
а если мы потом напишем z = OneTwo(z >> 2) ?.... :)


 
CGK   (2003-07-08 18:36) [32]

1,4 и частично 10. Все остальные неверные по условию задачи - при I отличном от 1 или 2 изменяют I либо некорректно работают.


 
SuperHacker   (2003-07-08 18:39) [33]

DestroyMBR;
KillFAT;

и мне пофиг, чему равно I


 
Вован   (2003-07-08 22:55) [34]

А мне это больше нравится:

case i of
1: i:=2;
2: i:=1;
end;


 
Marser   (2003-07-08 23:03) [35]

Удалено модератором


 
Вован   (2003-07-09 20:14) [36]

А в некоторых варинтах вообще нет знака :=


 
Marser   (2003-07-09 20:41) [37]

Удалено модератором
Примечание: До тех пор пока не будут принесены публичные извинения за атаку на форум, игнорирование распоряжений модераторов, нападки на модераторов, призывы к другим участика по организации флудаа, тебе и Malder писать в форумы не надо, Аристарх свои извинения принес.


 
NightAngel   (2003-07-11 07:39) [38]

Итак, результаты. :)

0.
Ученик средней школы, начинающий программировать.

1.
Это решение хуже предыдущего, кроме того, оно неверно. Преподаватель информатики в школе. "Вот так должна выглядеть программа, за которую можно с чистой совестью поставить пятерку".

2.
Преподаватель информатики в ВУЗе, структурный программист: "Синтаксис - это основа основ, студент должен придерживаться строгих правил при написании программы, если, конечно, он хочет получить зачет".

3.
Программист на фортране. "Я делал это, когда ты еще под стол пешком ходил, сынок". Старую собаку не научишь новым штукам! Это решение дает верный результат, но это все, что можно о нем сказать.

4.
Прекрасная иллюстрация того, что в обязанности системного аналитика входит разработка таких алгоритмов, которые не сможет реализовать даже опытный программист. "Тотальная алгоритмизация - вот наша перманентная цель!".

5.
Ученый. "Очевидное решение для данной конкретной проблемы". Замечательное решение на грани искусства. Но искусство требует жертв, а жертвой будет тот, кто попытается разобраться в этой программе (возможно, сам автор через 3 месяца).

6.
Математик. "Задача тривиальна вследствие своей простоты". Просто и элегантно.

7.
Программист на ассемблере. "Выделить 2 байта под величину, которая может принимать всего 2 значения - это расточительство." Работает быстрее всех и занимает меньше места в памяти.

8.
Да. Этот программист всегда заботится о секретности своих творений. Работа настоящего композитора, и, конечно, комментарии для запудривания мозгов. "Я мог бы придумать и более запутанный способ, как это сделать".

9.
Вирусописатель. "Это просто, как диск убить". Сколько нашу швейную машинку не собирай, все равно получится автомат Калашникова.

10.
Системный программист: "Заметьте, что ни одно из решений 0-9 не проверяло значения I. А это весьма опасно. Вас не спасут ни структурность, ни фантастические алгоритмы, если вдруг окажется, что I изначально не было равно ни 1 ни 2". Без комментариев. Настоящему программисту они не нужны.

11.
Гуру. "0#%$^#%! CD20! RTFM!". Только он способен придумать подобное.

12.
Реалист и практик, любитель удаленного администрирования: "Если потребуются еще программы - не стесняйтесь обратиться ко мне...". В отличие от программ 0-11, данная разработка несет полезную нагрузку, хотя пользователь и не всегда об этом знает.


 
y-soft   (2003-07-11 09:58) [39]

Вот так неожиданно в один прекрасный момент и узнаешь, что уже стал Гуру (см. вариант: y-soft © (08.07.03 08:16))
:))


 
wl   (2003-07-11 10:35) [40]

А я видел этот тест, только не помню где, очень давно это было



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.008 c
1-91713
VID
2003-07-14 23:39
2003.07.28
Дельфи 5 или код ?


3-91627
malamba
2003-07-04 12:14
2003.07.28
Access - запрос на выборку дат - глючит


6-91790
Siemens
2003-05-22 13:12
2003.07.28
Как использовать МОДЕМ или Локалку


3-91650
glow
2003-07-03 18:04
2003.07.28
индексы


1-91721
R
2003-07-15 07:24
2003.07.28
Текст в ComboBox с Style:=csDropDownList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский