Форум: "Прочее";
Текущий архив: 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("Ïëîõîå i - çàìåíåíî íà 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];
Вроде не было ещё?
← →
isasa © (2006-12-29 20:46) [41]Zeqfreed © (29.12.06 20:41) [40]
Было в оригинале
6. declare onetwo(2) fixed bin(31) init (2,1);
. . .
i=onetwo(i);
Да, старый стал. PL/1(PL/O), уже нюхом не узнаю ...
← →
Zeqfreed © (2006-12-29 20:48) [42]Там через ф-цию насколько я понимаю? :)
Это немножно другое.
← →
Gero © (2006-12-29 20:51) [43]> [42] Zeqfreed © (29.12.06 20:48)
> Там через ф-цию насколько я понимаю? :)
> Это немножно другое.
> [35] Sha © (29.12.06 14:50)
> const
> onetwo: array[1Դ] of integer= (2, 1);
> //#6
> i:=onetwo[i];
← →
Vendict © (2006-12-29 22:12) [44]kaif © (29.12.06 1:59) [22]
2) //экономное
i := i mod 2 + 1;
вот-вот, первое что пришло в голову. только к какому это пункту приписать ? 7 или 8... хотя были мысли о массиве и о аналогии i := 1 + Byte(i = 1) , только первый вариант материализовался.
← →
Vendict © (2006-12-29 22:18) [45]i := i mod 2 + 1;
кстати, этот вариант ещё учитывает, что i не будет равна 1 или 2. всё-таки к 7му ближе.
← →
XProger © (2006-12-29 23:10) [46]i := i shr 1 + 1
это как аналог
i := i mod 2 + 1
← →
tesseract © (2006-12-29 23:16) [47]
> i := i shr 1 + 1
i:= 1 shr 2-i;
← →
XProger © (2006-12-30 01:20) [48]tesseract, что оно делает?
← →
GrayFace © (2006-12-30 10:28) [49]> i:= (i div 2) + 2
Все равно что inc(i);
> i := i shr 1 + 1
i:=i;
> tesseract, что оно делает?
Оно делает i:=-i;
P.S. Я сделал 3-i. А вариант с xor"ом крут. Самый лучший.
← →
Anatoly Podgoretsky © (2006-12-30 17:48) [50]Он крут только для степеней двойки.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.043 c