-
Лучший говнокод
- В номинации:
-
- За время:
-
-
−105
- 1
- 2
- 3
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
При решении этой задачи не стоит пользоваться инструкцией if.
Вообще не разбираюсь в строках. Помогите пожалуйста.
alexsid13,
19 Апреля 2013
-
+23
- 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
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
#include <iostream>
#include <stdlib.h>
#include <typeinfo>
using namespace std;
#define ololo for(volatile register int i=0;i<10;++i);
struct VB
{
virtual void f() const =0;
};
class V1: public VB
{
void f() const {ololo}
};
class V2: public VB
{
void f() const {ololo}
};
struct TU1
{
inline void f() const {ololo}
};
struct TU2
{
inline void f() const {ololo}
};
struct TUB
{
const type_info* type;
union
{
TU1 tu1;
TU2 tu2;
};
template<class T>
void ctor()
{
this->type=&typeid(T);
}
template<class T>
inline void call(const T& f)
{
if(this->type==&typeid(TU1))
f(this->tu1);
else
f(this->tu2);
}
};
enum {N=1000, N2=N*50};
int main() {
cout<<"ok"<<endl;
{
VB*v[N];
for(int i=0;i<N;++i)
if(rand()%2)
v[i]=new V1;
else
v[i]=new V2;
volatile clock_t a=clock();
for(int j=0;j<N2;++j)
for(int i=0;i<N;++i)
v[i]->f();
volatile clock_t b=clock();
cout<< (double)(b - a) / CLOCKS_PER_SEC<<endl;
}
cout<<"ok"<<endl;
{
TUB v[N];
for(int i=0;i<N;++i)
if(rand()%2)
v[i].ctor<TU1>();
else
v[i].ctor<TU2>();
struct Continuation
{
inline void operator()(const TU1& a) const {a.f();}
inline void operator()(const TU2& a) const {a.f();}
} cps;
volatile clock_t a=clock();
for(int j=0;j<N2;++j)
for(int i=0;i<N;++i)
v[i].call(cps);
volatile clock_t b=clock();
cout<< (double)(b - a) / CLOCKS_PER_SEC<<endl;
}
cout<<"ok"<<endl;
return 0;
}
http://ideone.com/plFaLM
Тут в соседней теме разгорелся спор, что быстрее - полиморфизм виртуальных функций или полиморфизм tagget union. По сути последнее - выбор по if нужной виртуальной функции. Говорят в Java быстрее второе.
Тема родилась из http://govnokod.ru/12025#comment158188
Получилось по результатам измерений:
Виртуальные функции: 1.8 секунд.
tagget union: 1.94 секунд.
Притом это всего 2 полиморфных типа в tagget union, а если рост числа полиморфных классов будет расти, то разрыв между виртуальными функциями и tagget union только увеличится. Притом производительность tagget union будет только падать.
Тема поднята ещё со взглядом на функциональные языки. Это ведь там так модны ADT с постоянным внутри ifподобным паттернматчингом по ним.
Жду указания на косяки или способы поднять производительность tagget union.
LispGovno,
31 Октября 2012
-
+124
- 1
- 2
http://habrahabr.ru/post/147484/
Я просто оставлю это здесь.
Fai,
10 Июля 2012
-
+121
- 1
- 2
- 3
- 4
- 5
- 6
private List<string> _items
...
if (_items.Count <= 0)
return;
Alx,
23 Января 2012
-
+162
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
$('p.li').click(function(){
var li = $(this).attr("id");
switch (li) {
case 'a': ($('div.win').load('a.html')); break
case 'b': ($('div.win').load('b.html')); break
case 'c': ($('div.win').load('c.html')); break
case 'd': ($('div.win').load('d.html')); break
case 'e': ($('div.win').load('e.html')); break
case 'f': ($('div.win').load('f.html')); break
default: ($('div.win').load('Error.html'));
}
UnderShot,
01 Января 2011
-
+145
- 1
- 2
- 3
//вместо эпиграфа:
обезьяна и очки - это полбеды.
обезьяна с гранатой - это хуже
Обращаюсь к дорогому тов. Страйко,
с вопросом, почему же на говнокоде нет никакой элементарной защиты от дураков?
хрен с ним с флеймом, переживем
а тот же флуд - это ж можно напилить, шобы от одного хрена не больше комментария в 3 минуты, причем похожий комментарий считается тем же и не проходит (саундекс или левенштейн)
Lure Of Chaos,
25 Декабря 2010
-
+157
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
//sort rr
unsigned int i = 0;
unsigned int random = time(NULL);
unsigned int nummx = rr->size();
while (nummx > 0){
unsigned long numsame=1;
i = 0;
for (unsigned int j = 1;j < nummx;++j)
if ((*rr)[j].m_pref > (*rr)[i].m_pref){
i = j;
numsame = 1;
}else if ((*rr)[j].m_pref == (*rr)[i].m_pref){
++numsame;
random = random * 69069 + 1;
if ((random / 2) < (2147483647 / numsame))
i = j;
}
swap((*rr)[i],(*rr)[--nummx]);
}
Что делает код - достоверно неизвестно. Скорее всего, что-то сортирует и одновременно перемешивает.
gpr,
05 Июня 2010
-
−2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
package main
func main() {
var str = "Hello World"
var length = len([]rune(str))
println("Length of the string is :", length)
}
String Length in Golang
To get the length of a String in Go programming, convert the string to array of runes, and pass this array to len() function.
3_dar,
26 Мая 2022
-
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
function* foo2() {
yield 2;
yield 3;
}
function* foo() {
yield 1;
yield* foo2();
yield 4;
}
function main() {
for (const o of foo()) {
print(o);
}
print("done.");
}
продолжаем "наговнокодить". Добавил "елдак" со "звездой". Где тут наши препроцессорописатели.. дайте аналог на C/C++.
ASD_77,
31 Августа 2021
-
+1
- 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
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int perevod(char a)
{
switch (a)
{
case 'A': {return 1; break;}
case 'B': {return 2; break;}
case 'C': {return 3; break;}
case 'D': {return 4; break;}
case 'E': {return 5; break;}
case 'F': {return 6; break;}
case 'G': {return 7; break;}
case 'H': {return 8; break;}
}
return 0;
}
int proverka(char a)
{
switch (a)
{
case '1': {return 1; break;}
case '2': {return 2; break;}
case '3': {return 3; break;}
case '4': {return 4; break;}
case '5': {return 5; break;}
case '6': {return 6; break;}
case '7': {return 7; break;}
case '8': {return 8; break;}
}
return 0;
}
int main()
{
string s;
cin >> s;
int x1, x2, y1, y2;
x1=perevod(s[0]);
x2=perevod(s[3]);
y1=proverka(s[1]);
y2=proverka(s[4]);
if(s.length() != 5 || x1 == 0 || x2 == 0 || y1 == 0 || y2 == 0||s[2]!='-')
{
cout << "ERROR";
}
else{
if(abs(x2 - x1) == 1 && abs(y2 - y1) == 2 || abs(x2 - x1) == 2 && abs(y2 - y1) == 1)
{
cout << "YES";
}
else
{
cout << "NO";
}
}
return 0;
}
Простенькая проверка на возможность хода конем.
Verenick,
02 Июня 2020