- 1
- 2
- 3
public function xor(lhs:Boolean, rhs:Boolean):Boolean {
return !( lhs && rhs ) && ( lhs || rhs );
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−92
public function xor(lhs:Boolean, rhs:Boolean):Boolean {
return !( lhs && rhs ) && ( lhs || rhs );
}
Из http://as3snippets.blogspot.com/2010/09/logical-xor.html
Как известно, в AS3 есть численный оператор XOR ^, а вот для логических значений ^^ нет. Поэтому ребята придумали такую конструкцию (и ещё вариант return Boolean(int(a) ^ int(b)); в комментах), и только через год какой-то чувак догадался что XOR для логических значений всё-таки есть и называется !=
+94
function Dist(dx, dy: integer): integer;
begin
//result := trunc(sqrt(sqr(dx)+sqr(dy)));
dx := abs(dx);
dy := abs(dy);
if dx>dy then begin
dy := dy shr 1 - dx shr 3;
if dy >= 0 then result := dx+dy else result := dx;
end else begin
dx := dx shr 1 - dy shr 3;
if dx >= 0 then result := dx+dy else result := dy;
end;
end;
Ещё по теме приближённых расчётов в игровом движке.
+62
for($i=0; $i<strlen($input); $i++)
{
$ip=$input{$i};
$op='';
if ($intag)
{
if ($ip=="=") $op="=3D";
else $op= $ip;
}
else
{
if ($ip=="\"") $op='"';//'
else if ($ip=="&") $op="&";
else if ($ip=="'") $op="'";
else $op= $ip;
}
if ((strlen($line)+strlen($op))>=$line_max)
{
$output.=$line.'='.$eol;
//if ($intag) $output.=$line.'='.$eol;
//else $output.=$line.$eol;
$line='';
}
$line.=$op;
if($ip=='<')
$intag=true;
else if ($ip=='>')
$intag=false;
}
Заголовки у письма отфильтрованы... Всё «путём» катимся дальше...
+74
$lang_ru = '<a class=lang-ru-RU href="#" id="btn1">RU</a>';
$lang_en = '<A class=lang-en-US href="#" id="btn2">EN</A>';
$lang_de = '<A class=lang-de-DE href="#" id="btn3">DE</A>';
if (!isset($HTTP_COOKIE_VARS["language"])) {
$lang_1 = $lang_ru;
$lang_2 = $lang_en;
$lang_3 = $lang_de;
} else {
if ($HTTP_COOKIE_VARS["language"] == 'en') {
$lang_1 = $lang_en;
$lang_2 = $lang_ru;
$lang_3 = $lang_de;
} else {
if ($HTTP_COOKIE_VARS["language"] == 'de') {
$lang_1 = $lang_de;
$lang_2 = $lang_ru;
$lang_3 = $lang_en;
} else {
$lang_1 = $lang_ru;
$lang_2 = $lang_en;
$lang_3 = $lang_de;
}
}
}
А если языков было бы больше?
+123
static bool HasSp1()
{
try
{
WaitHandle h = new ManualResetEvent(true);
h.WaitOne(0);
return true;
}
catch
{
return false;
}
}
Проверка наличия Service Pack 1 к .NET Framework 3.5 (в продолжение предыдущего ГК). Да, есть другие варианты, но этот не выглядит хуже.
−136
function iofam(val a)
var fio[3];
fio[1]=""; fio[2]=""; fio[3]="";
a=trimall(a);
while strcountoccur(a," ")>0 do
a=strreplace(a," "," ");
enddo;
i=1;
while (strcountoccur(a," ")>0) and (i<=2) do
fio[i]=left(a,find(a," ")-1);
a=right(a,strlen(a)-1-strlen(fio[i]));
i=i+1;
enddo;
fio[i]=a;
return (left(fio[2],1)+"."+left(fio[3],1)+". "+fio[1]);
endfunction
−138
select 20.0 / -2.0 / 5.0 * 3.0
-16.666666
select 20.0 / (-2.0) / 5.0 * 3.0
-6.00000
SQL-Server как калькулятор
+163
fadeOutAnimate($("#bigsun"), 500);
fadeInAnimate($("#littlesun"), 500, function(){
fadeInAnimate($("#point1"), 300, function(){
fadeInAnimate($("#point2"), 300, function(){
fadeInAnimate($("#point3"), 300, function(){
fadeInAnimate($("#point4"), 300, function(){
fadeInAnimate($("#point5"), 300, function(){
fadeInAnimate($("#point6"), 300, function(){
fadeInAnimate($("#point7"), 300, function(){
fadeInAnimate($("#point8"), 300, function(){
fadeInAnimate($("#arrows"), 600, function(){
fadeInAnimate($("#direction1"), 300, function(){
fadeInAnimate($("#direction2"), 300, function(){
fadeInAnimate($("#direction3"), 300, function(){
fadeInAnimate($("#direction4"), 300, function(){
fadeInAnimate($("#direction5"), 300, function(){
fadeInAnimate($("#direction6"), 300, function(){
fadeInAnimate($("#direction7"), 300, function(){
fadeInAnimate($("#direction8"), 300, function(){
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
Анимация.
+997
void TexQ::Move()
{
mx = quad.v[0].x;
my = quad.v[0].y;
if(hge->Input_GetKeyState(HGEK_RBUTTON) || hge->Input_KeyDown(HGEK_LBUTTON))
{
hge->Input_GetMousePos(&nx, &ny);
move = true;
sx = GetPositionX();
sy = GetPositionY();
subx = nx - sx;
suby = ny - sy;
if ( abs(subx) > abs(suby) )
{
iter = abs(subx);
ms = subx;
subx = (subx < 0) ? -1.0f : 1.0f;
suby = (suby < 0 ) ? suby/abs(ms) : abs(suby/ms);
}
else
{
iter = abs(suby);
ms = suby;
suby = (suby < 0) ? -1.0f : 1.0f;
subx = (subx < 0 ) ? subx/abs(ms) : abs(subx/ms);
}
}
if (move)
{
if (iter >= shift)
{
iter-=shift;
this->SetPosition(
GetPositionX() + subx * shift,
GetPositionY() + suby * shift);
}
else
{
this->SetPosition(nx , ny);
move = false;
}
}
}
Хреновый из меня математик. Этот метод втыкается в функцию фрейминга. И текстура едет по прямой туда, куда мышью тыкнешь.
Позже узнал, как можно тригонометрией в 5 строк написать такую же )
+131
private static bool state;
public static bool InWork
{
get
{
return state;
}
internal set
{
switch (value)
{
case true:
{
try
{
// попытка запуска сервиса
...
}
catch (Exception ex)
{
throw;
}
}
break;
case false:
{
if (!state) return;
// попытка остановить сервис
...
}
break;
}
state = value;
}
}
public static void Start(...)
{
...
InWork = true;
}
public static void Stop()
{
...
InWork = false;
}
Интересный ход, правда?