-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+136
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
void lcd_show(uint8_t number)
{
uint8_t digit3 = 0;
uint8_t digit2 = 0;
uint8_t digit1 = number > 99u ? 1u : 0;
switch(number)
{
case 0u:
digit3 = 0u;
digit2 = 0u;
break;
case 1u:
digit3 = 1u;
digit2 = 0u;
break;
.....
.....
case 199u:
digit3 = 9u;
digit2 = 9u;
break;
default:
digit3 = '-';
digit2 = '-';
digit1 = 0;
break;
}
display3d(digit3);
display2d(digit2);
display1d(digit1);
}
8-битный микроконтроллер, 32768Гц тактовая частота, батарейное питание, CPU по-максимуму в спячке для экономии энергии.
Функции display3d(), display2d(), display1() отображают цифру в соответствующем знакоместе на 2.5 разрядном LCD от 0 до 199.
Преобразование числа в BCD формат.
Эта жесть даёт выигрыш порядка 10 мкА перед "обычным" преобразования с делениями на 10 за счёт меньшего времени работы CPU для расчёта. Вроде говнокод, но в данном случае оправдан, потому не воняет :)
FlySnake,
09 Июля 2014
-
+86
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
function IsMemoryCommitByAdress(const AAddress: Pointer): Boolean;
var
MemoryInfo: TMemoryBasicInformation;
begin
Result := False;
if not Assigned(AAddress) then
Exit;
VirtualQuery(AAddress, MemoryInfo, SizeOf(MemoryInfo));
Result := MemoryInfo.State and MEM_COMMIT <> 0;
end;
function IsPointerToVMT(const APointer: Pointer): Boolean;
var
VMTPointer, VMTPointerSelf: Pointer;
begin
Result := False;
if not IsMemoryCommitByAdress(APointer) then
Exit;
VMTPointer := APointer;
VMTPointerSelf := Pointer(Integer(VMTPointer) + vmtSelfPtr);
if not IsMemoryCommitByAdress(VMTPointer) then
Exit;
if not IsMemoryCommitByAdress(VMTPointerSelf) then
Exit;
if not IsMemoryCommitByAdress(PPointer(VMTPointerSelf)^) then
Exit;
Result := PPointer(VMTPointerSelf)^ = VMTPointer;
end;
function IsBadptr(apointer:pointer):boolean;
begin
Result := IsMemoryCommitByAdress(APointer) and IsPointerToVMT(PPointer(APointer)^);
end;
Функция, для определения качества указателя, в ситуации "один объект - несколько указателей".
Гк в том, что нет надежности - это все равно, что юзать IsBadReadPtr и аналогичные.
Почему-то никто не пытается использовать операторы is и as (я узнал о них благодаря Тарасу, спасибо ему), чтобы сравнить качество приведения.
brutushafens,
19 Июня 2014
-
+10
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
string intArrayToString(int* array, int size)
{
ostringstream ss;
ss << "[";
for (int i=0; i<size-1; i++)
ss << array[i] << ",";
ss << array[size-1];
ss << "]";
return ss.str();
}
string longIntArrayToString(long int* array, int size)
{
ostringstream ss;
ss << "[";
for (int i=0; i<size-1; i++)
ss << array[i] << ",";
ss << array[size-1];
ss << "]";
return ss.str();
}
О шаблонах мы, видимо, не в курсе. Ну и упаси вас боже передать суда size=0.
Думаю, сюда можно смело выкладывать весь источник, но уж больно он уныл
https://github.com/adobe-research/libkafka
Адобъ Рисёрчъ на острие прогресса#ifdef DEBUG
#define D(x) x
#else
#define D(x)
#endif
#define E(x) cout.flush() << x
Так ведь и придётся своего клиента писать... :(
roman-kashitsyn,
12 Июня 2014
-
+8
- 1
- 2
#define FOR_INCLUSION (iostream) (studio.h) (stdlib.h) (boost/phoenix.hpp) (my_drugs_library.h)
#include <include_and_disable_some_warnings>
laMer007,
01 Июня 2014
-
+134
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
static U32 Round_up_to_next_2_power( U32 value )
{
if ( value > 16 )
if ( value > 64 )
if ( value > 128 )
if ( value > 256 )
if ( value > 512 )
return( 1024 );
else
return( 512 );
else
return( 256 );
else
return( 128 );
else
if ( value > 32 )
return( 64 );
else
return( 32 );
else
if ( value > 4 )
if ( value > 8 )
return( 16 );
else
return( 8 );
else
if ( value > 2 )
return( 4 );
return( value );
}
Simple function to round up to the next power of 2.
Wicked,
23 Мая 2014
-
+141
- 1
- 2
- 3
@echo off
start https://pp.vk.me/c607724/v607724832/6c07/5fRLUPfqMe8.jpg
start https://pp.vk.me/c607724/v607724832/6c1c/LD7Zqx1yZAw.jpg
Для батника, запустите - поймёте ;)
Mobac,
20 Апреля 2014
-
+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
var unselectedColor = 'rgba(255, 255, 255, 0.3)',
selectedColor = 'rgba(255, 255, 255, 0.9)';
function onDownloadPage(){
var temp = $$('.selState');
for(var i = 0; i < temp.length ; i++){
temp[i].style.backgroundColor = new String(unselectedColor);
temp[i].onmouseover = function(){this.style.backgroundColor = new String(selectedColor);};
temp[i].onmouseout = function(){this.style.backgroundColor = new String(unselectedColor);};
}
}
И вот опять с этого сайта...
CSS hover? Не, не слышал.
Dart_Sergius,
18 Апреля 2014
-
+118
- 1
f g l = hylo l (.) (\n -> (g, n-1)) (==0)
Этот пример использует hylomorphism.
Композируем функцию типа (.) g(l) пока не наступит n==0
HaskellGovno,
04 Апреля 2014
-
+150
- 1
var valid = !!files.length;
Fileupload (c)
begmst,
18 Февраля 2014
-
+73
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
class MyException extends Exception {
/* конструкторы, геттеры-сеттеры и прочее-прочее */
public void handle() { /* over 9000 строк */ }
}
class MyClass {
public void myMethod() {
try { /* ... */ }
catch (MyException e) {
e.handle();
}
}
}
исключение, которое обрабатывает, можно сказать, само себя, бред?
evg_ever,
06 Февраля 2014