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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.046 c
15-1167661170
Tasia
2007-01-01 17:19
2007.01.21
Как связать проекты?


15-1166026178
shulcsan
2006-12-13 19:09
2007.01.21
О среде разработки


1-1164875301
Krants
2006-11-30 11:28
2007.01.21
Проблема при копировании таблиц через ClipBoard


3-1162302080
MAX727
2006-10-31 16:41
2007.01.21
Как создать .mdb - файл


2-1167910338
newone
2007-01-04 14:32
2007.01.21
поиск файла





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский