Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

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

 
1eof   (2006-12-28 22:58) [0]

norman grabowsky "what kind of programmer are you?"
Этот тест расскажет о вашем программировании больше, чем вы сами
хотели бы знать
http://articles.org.ru/cfaq/index.php?qid=2520


 
tesseract ©   (2006-12-28 23:09) [1]

А как вам

  if (2-i)
     {i=1}
  else
     {i=2};


Или

  if i>1 then i=1 else i=2;


Или


   if odd(i) then i=1 else i=2;


Я кто?  акробат, что-ли ?  :-)


 
default ©   (2006-12-28 23:15) [2]

самое нормалное это i=3-i или типа(ввиду читабельности мгновенной и сразу видно допустимую область значений i)
case i of
1: i = 2
2: i = 1
end


 
Zeqfreed ©   (2006-12-28 23:17) [3]

А если i = i ^ 3; ?


 
Axis_of_Evil ©   (2006-12-28 23:18) [4]

default ©   (28.12.06 23:15) [2]
согласен.
тест = лабуда.


 
tesseract ©   (2006-12-28 23:20) [5]


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



Case i of
   1:i:=2;
   2:i:=1;
else
  raise ERangeError.CreateFmt("%d не входит в границы диапазона 1..2", [i]);
end


Матёрее смотриться :-)


 
tesseract ©   (2006-12-28 23:23) [6]


> Zeqfreed ©   (28.12.06 23:17) [3]
> А если i = i ^ 3; ?


1 ^ 3 = 1

2 ^ 3 = 8  

там СЛОВО, а не байт.


 
Gero ©   (2006-12-28 23:26) [7]

Бред сивой кобылы.


 
default ©   (2006-12-28 23:35) [8]

tesseract ©   (28.12.06 23:23) [6]
в си-подобных языках ^=xor
с xor прокатывает:)


 
Zeqfreed ©   (2006-12-28 23:49) [9]

Ну разумеется xor, а не возведение в степень :)
Не видел ни одного компилируемого ЯВУ с оператором возведения в степень ещё.


 
default ©   (2006-12-28 23:52) [10]

Zeqfreed ©   (28.12.06 23:49) [9]
visual basic, например
только не говори, что мол "а это и не язык, а так - игрушка":)
VB.NET совсем не игрушка:)


 
Zeqfreed ©   (2006-12-28 23:55) [11]


> default ©   (28.12.06 23:52) [10]

А я его не видел, только на картинках :)
Тем более он ведь вроде компилируется не в машинный код? .Net то уж точно.


 
Gero ©   (2006-12-28 23:57) [12]

> [9] Zeqfreed ©   (28.12.06 23:49)

Это не значит, что его нет, языков огромное множество.


 
palva ©   (2006-12-29 00:02) [13]


> Не видел ни одного компилируемого ЯВУ с оператором возведения
> в степень ещё.

Фортран - компилируемый язык.


 
tesseract ©   (2006-12-29 00:02) [14]


> default ©   (28.12.06 23:35) [8]


Да забыл :-( Не использовал никогда такую конструкцию. А васик,
он васик :-)


> Zeqfreed ©   (28.12.06 23:55) [11]


Да не компилирует, ради лёкости отладки.


 
default ©   (2006-12-29 00:03) [15]

Zeqfreed ©   (28.12.06 23:55) [11]
говорят, что код с .NET совместимого языка компилируется в промежуточный код

я в курсе, что старый vb не компилирует в машинный код, только вот не знаю переводит ли он код в какой-то "полуфабрикат" вроде IL в .NET или прямо текстовые исходники хранит...


 
tesseract ©   (2006-12-29 00:08) [16]


> я в курсе, что старый vb не компилирует в машинный код,


Он прописывает в exe свою виртмашину, при запуске стартует VM и выполняет код. Так же действуют FoxPro, Clarion. Delphi одна из немногих RAD компилирующих в машинный код.

А CLR можно из любого языка создать. Это его сильное преимущество над Java. Ждём выхода Delphi под Mono и наконец-то избавляемся от платформозависимости.


 
default ©   (2006-12-29 00:10) [17]

tesseract ©   (29.12.06 00:08) [16]
это понятно
а в этом exe код бесика хранится напрямую или в какой-то переработанной форме?


 
Real ©   (2006-12-29 00:11) [18]

еще никто не написал? это же - баянище!...


 
tesseract ©   (2006-12-29 00:15) [19]


> а в этом exe код бесика хранится напрямую или в какой-то
> переработанной форме?


Не напрямую вроде, скорее всего в сокращённом бинарном формате. Напрямую код вроде только 1с хранит.


 
ferr ©   (2006-12-29 00:16) [20]

ага, тебя ждали..


 
Zeqfreed ©   (2006-12-29 00:18) [21]

> Gero ©   (28.12.06 23:57) [12]
> palva ©   (29.12.06 00:02) [13]

Это все очень хорошо. Но я то тут причем? :)
Я не утверждал, что таких нет.
Я не утверждал, что я видел фортран. :)

> default ©   (29.12.06 00:03) [15]

> говорят, что код с .NET совместимого языка компилируется
> в промежуточный код

Ну да, это я знаю. Тем не менее это читерство :) Ну да ладно, пусть будет компилируемым.


 
kaif ©   (2006-12-29 01:59) [22]

У меня только два решения.

1)  //понятное

    if i = 1 then
       i := 2
    else if i = 2 then
       i := 1
    else
      raise Exception.CreateFmt("Недопустимое значение i = %d", [i]);

2)  //экономное
    i := i mod 2 + 1;


 
Kirr.   (2006-12-29 03:41) [23]

Ага i:=i xor 3;


 
КиТаЯц ©   (2006-12-29 08:01) [24]

не читая ветки и ответов реши вот так:

case i of
   1: i:= 2;
   2: i:= 1
   else showmessage ("i не равна 1 или 2");
 end;


оказывается уже в [2] такой вариант предложили :)
вот теперь думаю под какой пункт в ответах попадаю?


 
@!!ex ©   (2006-12-29 08:02) [25]


> kaif ©   (29.12.06 01:59) [22]

Естественно эти решения после прочтения результатов теста. :))

У меня до прочтения было только одно:
if i=2 then i=1;
else i=2;

Тест кстати не корректен.
В условии было сказано:
Найдите одно или
несколько наиболее похожих на ваше...
Естественно наиболее похожее и внешне и формально - первое.
Однако оно не корректно.
И меня обвинили в незнании типов. :)


 
ocean ©   (2006-12-29 12:35) [26]

Присоединяюсь к
> @!!ex ©   (29.12.06 08:02) [25]
Частично принимаю упрек теста, что не проверил значение i.
Но если уж проверять, почему бы не проверить что это действительно слово, а не длинное или байт, и так можно зайти далеко. А 10-е решение мне вообще не нравится по нескольким причинам, например никто не просил нас ничего печатать. Корректнее сделать функцию и вернуть в этом случае ошибку.


 
umbra ©   (2006-12-29 12:48) [27]

у меня получилось

i := i mod 2 + 1;


 
umbra ©   (2006-12-29 12:50) [28]

у меня получилось

i := i mod 2 + 1;


 
evvcom ©   (2006-12-29 13:00) [29]

> [17] default ©   (29.12.06 00:10)
> а в этом exe код бесика хранится напрямую или в какой-то
> переработанной форме?

исходного текста точно нет. Когда-то один exe ковырял, по-моему там было что-то сродни ZX Spectrum хранения бейсик кода. Т.е. как бы свой ассемблер, понятный его виртуальной машине: код команды, аргументы и т.д.


 
Sha ©   (2006-12-29 13:10) [30]

Кто-нить заметил, что решения 2 и 10 неверные?


 
XProger ©   (2006-12-29 13:44) [31]

i := 1 + Byte(i = 1)
тест - бред


 
zdm ©   (2006-12-29 13:44) [32]


>  Какой ты программист?

1-го половина будет "не какие"


 
ocean ©   (2006-12-29 14:08) [33]

> i := 1 + Byte(i = 1)
Классно, но я лично так не делаю. Это С-шная техника. А вот еще:
i == 1 ? i = 2 : i = 1;


 
umbra ©   (2006-12-29 14:13) [34]

2 Sha ©   (29.12.06 13:10) [30]

для этого, наверное, надо знать пл/1 :)


 
Sha ©   (2006-12-29 14:50) [35]

Для тех, кто не знает, перевел:

procedure TForm1.Button7Click(Sender: TObject);
const
 onetwo: array[1..2] of integer= (2, 1);
var
 i, j: integer;
label
 skip, done;
begin

 //#1
 if i=StrToInt("2") then i:=1 else i:=2;

 //#2
 if i=2 then i:=1;
 if i=1 then i:=2;

 //#3
 if i=1 then goto skip;
 i:=1;
 goto done;
skip: i:=2;
done:

 //#4
 j:=2;
 if i=2 then j:=1;
 i:=j;

 //#5 --- ê ñîæàëåíèþ â ïàñêàëå íåò ïåðåìåííûõ òèïà ìåòêà
 //à åñëè á áûëè, òî âûãëÿäåëî áû òàê
 //  var 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:

 //#6
 i:=onetwo[i];

 //#7
 i:=3-i;

 //#8
   i:=i - (i div 2 * 2) + 1;

 //#9
 if i=2 then begin
   i:=1;
 end
 else begin;
   i:=2;
 end;

 //#10
 if i=1 then i:=2;
 if i<>2 then begin
   ShowMessage("&#207;&#235;&#238;&#245;&#238;&#229; i - &#231;&#224;&#236;&#229;&#237;&#229;&#237;&#238; &#237;&#224; 1");
   i:=1;
 end;

end;


 
Sha ©   (2006-12-29 14:53) [36]

Повторю пострадавшие примеры 5 и 10:

 //#5 --- к сожалению в паскале нет переменных типа метка
 //а если б были, то выглядело бы так
 //  var 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:

 //#10
 if i=1 then i:=2;
 if i<>2 then begin
   ShowMessage("Плохое i - заменено на 1");
   i:=1;
 end;


 
Gero ©   (2006-12-29 19:12) [37]

Сорри за оффтоп, навеяно тестом:

(***********************************************************)
(*                                                         *)
(*           TrueChecker.pas - TTrueChecked Component      *)
(*                                        Version 1.0      *)
(*                                                         *)
(*                 Copyright (c) 2006 by Yanis Prasol      *)
(*                 All rights reserved.                    *)
(*                                                         *)
(***********************************************************)

unit TrueChecker;

interface

uses
Classes, SysUtils;

const
TrueValue = True;
NonTrueValue = not True;

type
TTrueFalseChanger = class(TObject)
public
  procedure SetTrue(var X: Boolean);
  procedure SetNonTrue(var X: Boolean);
  procedure SetNonTrueIfTrueAndSetTrueIfNonTrue(var X: Boolean);
end;

TTrueChecker = class(TComponent)
private
  FVariable: Boolean;
  function GetIsTrue: Boolean;
  procedure SetVariable(const Value: Boolean);
public
  constructor Create(AOwner: TComponent); override;
published
  property IsTrue: Boolean read GetIsTrue;
  property Variable: Boolean read FVariable write SetVariable default NonTrueValue;
end;

implementation

const
STrueSettingError = "Failed set variable value to true!";
SNonTrueSettingError = "Failed set variable value to non true!";
SNonTrueAndNonFalseError = "Boolean variable value is not true and not false!";
SDontUnderstandingError = "mmmmmmmmmmm...?";

{ TTrueFalseChanger }

procedure TTrueFalseChanger.SetTrue(var X: Boolean);
begin
repeat
  if (X <> TrueValue) or (X = NonTrueValue) then
    begin
      SetNonTrueIfTrueAndSetTrueIfNonTrue(X);
    end
  else
    raise Exception.Create(STrueSettingError);
until X = TrueValue;
end;

procedure TTrueFalseChanger.SetNonTrue(var X: Boolean);
begin
repeat
  if (X <> NonTrueValue) or (X = TrueValue) then
    begin
      SetNonTrueIfTrueAndSetTrueIfNonTrue(X);
    end
  else
    raise Exception.Create(SNonTrueSettingError);
until X = NonTrueValue;
end;

procedure TTrueFalseChanger.SetNonTrueIfTrueAndSetTrueIfNonTrue(var X: Boolean);
begin
if (X <> (X and not X)) = TrueValue then
  begin
    X := NonTrueValue;
  end
else if (X xor NonTrueValue) = NonTrueValue then
  begin
    X := TrueValue;
  end
else
  raise Exception.Create(SNonTrueAndNonFalseError);
end;

{ TTrueChecker }

function TTrueChecker.GetIsTrue: Boolean;
label
TrueLabel, FalseLabel;
var
TrueFalseChanger: TTrueFalseChanger;
begin
TrueFalseChanger := TTrueFalseChanger.Create;
try
  try
    if (FVariable = TrueValue) and (FVariable <> NonTrueValue) then
      begin
        goto TrueLabel;
      end
    else
      begin
        if (FVariable = NonTrueValue) and (FVariable <> TrueValue) then
          begin
            goto FalseLabel;
          end
        else
          raise Exception.Create(SDontUnderstandingError);
      end;
    TrueLabel:
    while (Result <> TrueValue) do
      TrueFalseChanger.SetTrue(Result);
    Exit;
    FalseLabel:
    while (Result <> NonTrueValue) do
      TrueFalseChanger.SetNonTrue(Result);
    Exit;
  except
    Result := NonTrueValue;
  end;
finally
  TrueFalseChanger.Free;
end;
raise Exception.Create(STrueSettingError);
end;

constructor TTrueChecker.Create(AOwner: TComponent);
begin
inherited;
FVariable := NonTrueValue;
end;

procedure TTrueChecker.SetVariable(const Value: Boolean);
begin
if FVariable <> Value then
  FVariable := Value;
end;

end.


Пример использования:


procedure TForm1.Button1Click(Sender: TObject);
const
TestedValiable = True;
var
TrueChecker: TTrueChecker;
ResultValiable: Boolean;
begin
TrueChecker := TTrueChecker.Create(nil);
try
  TrueChecker.Variable := TestedValiable;
  ResultValiable := TrueChecker.IsTrue;
  if ResultValiable then
    ShowMessage("Variable is True!")
  else
    ShowMessage("Variable is False!");
finally
  TrueChecker.Free;
end;
end;


 
Footballer ©   (2006-12-29 20:31) [38]

А я во ещё чё придумал:
 i:= (i mod 2) + 1 //придумали до меня
или
 i:= (i div 2) + 2


 
Gero ©   (2006-12-29 20:33) [39]

> [38] Footballer ©   (29.12.06 20:31)

Плохо ты придумал.


 
Zeqfreed ©   (2006-12-29 20:41) [40]

const
 values : array[1..2] of Word = (2, 1);

i := values[i];


Вроде не было ещё?



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

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.057 c
15-1167220696
Ega23
2006-12-27 14:58
2007.01.21
К вопросу о наличии рыбы в Волге


4-1152801050
iNV
2006-07-13 18:30
2007.01.21
Как узнать подключенные к компу Card Reader ы?


2-1167913674
Neket
2007-01-04 15:27
2007.01.21
Иконка Программы


4-1157415257
Psychedelic
2006-09-05 04:14
2007.01.21
EnumDisplaySettingsEx - crash


2-1167971096
delphim
2007-01-05 07:24
2007.01.21
печать с помощью chartFX (ActiveX)