- 1
((x<0) && (y < 0)) ? ({x =-x; y=-y;}) : (((x < 0) || (y < 0)) ? ({x+=0.5; y+=0.5;}) : ( (!(((x > 2.0) || (x < 0.5)) && ( (y > 2.0) || (y < 0.5) ))) ? : ({x/=10;y/=10;}) ) );
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+24
((x<0) && (y < 0)) ? ({x =-x; y=-y;}) : (((x < 0) || (y < 0)) ? ({x+=0.5; y+=0.5;}) : ( (!(((x > 2.0) || (x < 0.5)) && ( (y > 2.0) || (y < 0.5) ))) ? : ({x/=10;y/=10;}) ) );
простейшее задание на условия...
+37
int hamming(int i, int j, vector<state>& net) //returns Hamming distance between i and j nodes
{
int res = 0;
if (net[i].nodes[0] != net[j].nodes[0])
{
res++;
}
if (net[i].nodes[1] != net[j].nodes[1])
{
res++;
}
if (net[i].nodes[2] != net[j].nodes[2])
{
res++;
}
if (net[i].nodes[3] != net[j].nodes[3])
{
res++;
}
if (net[i].nodes[4] != net[j].nodes[4])
{
res++;
}
if (net[i].nodes[5] != net[j].nodes[5])
{
res++;
}
if (net[i].nodes[6] != net[j].nodes[6])
{
res++;
}
if (net[i].nodes[7] != net[j].nodes[7])
{
res++;
}
if (net[i].nodes[8] != net[j].nodes[8])
{
res++;
}
if (net[i].nodes[9] != net[j].nodes[9])
{
res++;
}
if (net[i].nodes[10] != net[j].nodes[10])
{
res++;
}
if (net[i].nodes[11] != net[j].nodes[11])
{
res++;
}
if (net[i].nodes[12] != net[j].nodes[12])
{
res++;
}
return res;
}
Человеку срочно нужно узнать про существование циклов.
+27
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <utility>
#include <sstream>
#include <assert.h>
using namespace std;
struct PeriodDescription{
size_t length, repeat_amount, last_items_amount;
/*friend ostream& operator<<(ostream& os, const PeriodDescription& s){
os<<" (PeriodDescription){"<<s.length<<", "<<s.repeat_amount<<", "<<s.last_items_amount<<"} ";
return os;
}*/
};
/*template<class C>
string co(C&& c){
ostringstream r;
r<<" (C) {";
copy(c.begin(), c.end(), ostream_iterator<typename C::value_type>(r, ", "));
r<<"}; ";
return move(r.str());
}*/
vector<PeriodDescription> find_repeat_sequences_since_begin(const string& sequence){
vector<PeriodDescription> result;
if(sequence.empty())
return result;
auto position_at_last_period=sequence.begin();
const char first_item = *position_at_last_period;
const auto after_last=sequence.end();
auto position_at_current_period = position_at_last_period;
while(true){
position_at_last_period=sequence.begin();
position_at_current_period = find(next(position_at_current_period), after_last, first_item);
PeriodDescription new_period {size_t(distance(position_at_last_period, position_at_current_period)), 1, 0};
while(position_at_current_period!=after_last && *position_at_last_period==*position_at_current_period){
++position_at_last_period; ++position_at_current_period;
if(++new_period.last_items_amount>=new_period.length){
new_period.last_items_amount = 0;
++new_period.repeat_amount;
}
}
if(new_period.repeat_amount==1 && new_period.last_items_amount==0)
return result;
result.push_back(new_period);
if(position_at_current_period==after_last)
return result;
}
}
vector<size_t> generate_FSM_failJumpIndices(const vector<PeriodDescription>& periodDescriptions, const size_t stringLength){
vector<size_t> r(stringLength+1);
for(const auto& pd : periodDescriptions){
for(size_t periodIndex=1; periodIndex<pd.repeat_amount; ++periodIndex)
for(size_t indexAtPeriod=0; indexAtPeriod<pd.length; ++indexAtPeriod)
r[(periodIndex*pd.length)+indexAtPeriod]=(periodIndex-1)*pd.length + indexAtPeriod;
for(size_t indexAtAfterPeriods=0; indexAtAfterPeriods<pd.last_items_amount; ++indexAtAfterPeriods)
r[pd.length*pd.repeat_amount+indexAtAfterPeriods]=pd.length*(pd.repeat_amount-1)+indexAtAfterPeriods;
}
return r;
}
vector<size_t> make_FSM_failJumpIndices(const string& sequence){
return generate_FSM_failJumpIndices(find_repeat_sequences_since_begin(sequence), sequence.size());
}
class FSM_for_find_equal_ranges{
size_t state;
vector<size_t> failJumpIndices;
string sequence;
string::const_iterator find_next(string::const_iterator checkPosition, const string::const_iterator last){
struct atReturn{
size_t& state;
~atReturn(){state = 0;}
}nullify{state};
if(checkPosition==last)
return last;
if(sequence.empty())
return next(checkPosition);
if(size_t(distance(checkPosition, last))<sequence.size())
return last;
while(true){
if(checkPosition==last)
return last;
if(*checkPosition==sequence[state])
++state;
else
state=failJumpIndices[state];
++checkPosition;
if(state>=sequence.size())
return prev(checkPosition, sequence.size());
}
}
public:
template<class T>
FSM_for_find_equal_ranges(T&& sequence):
Очередное собеседование. Пригласили на должность дельфина. Но оп отказался проходить собеседование на дельфи.
http://ideone.com/zp5CRb
+32
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <iterator>
#include <iomanip>
using namespace std;
vector<string> bracesExpressionExamples = {
"({[{}]{}[]})",
"({}}{[{}]{}[]})",
"({[{}]{}[]}",
"({[{}]{}]})",
"({[{}{}[]})",
"",
"{}"
};
string openBrace = "({[";
string closeBrace = ")}]";
typedef map<char, char> otc;
const otc& openToCloseBrace(){
static const otc o2c([](){
otc o2c;
transform(
openBrace.begin(), openBrace.end(),
closeBrace.begin(),
inserter(o2c, o2c.begin()),
[](const char open, const char close){return make_pair(open, close);}
);
return o2c;
}());
return o2c;
}
bool checkBraces (const string& e){
vector<char> s;
for(const char b: e)
if(string::npos!=openBrace.find(b))
s.push_back(openToCloseBrace().at(b));
else if(string::npos!=closeBrace.find(b) && (!s.empty()) && b==s.back())
s.pop_back();
else return false;
return s.empty();
}
int main() {
cout<<boolalpha;
transform(
bracesExpressionExamples.begin(),
bracesExpressionExamples.end(),
ostream_iterator<bool>(cout, "\n"),
checkBraces);
return 0;
}
http://ideone.com/AbO4tw
Кот с собеседований.
Проверка правильности расстановки скобок для каждого выражения из bracesExpressionExamples.
+88
#include <cstdlib>
#include <ctime>
main(){
srand((unsigned)time(NULL));
int x = 1^~0-(((1+&x?2||0:(~1))-(1 & 2)*.1-(1+-1?5:3)%1)==0?10:-rand()%5+1);
return 0;
}
perl'овцы развлекаются.
+36
#include <iostream>
class StaticClassData {
int *pointer, value;
public:
StaticClassData(): pointer(&value) {}
void add(int i) {
std::cout << "Hello, this is " << this << std::endl;
value = i;
std::cout << "I'm fine" << std::endl;
*pointer = i;
std::cout << "You never read this text" << std::endl;
}
};
class SomeClass {
struct StaticConstructor {
StaticConstructor(){ storage.add(1); }
};
static StaticConstructor constructor;
static StaticClassData storage;
};
SomeClass::StaticConstructor SomeClass::constructor;
StaticClassData SomeClass::storage;
int main(){}
Долго думал, с какого хрена программа падает на заполнении static поля в "статическом конструкторе". Поле вроде бы есть, но толку от этого мало.
http://ideone.com/Ux14ep - из раздела ub.govnokod.ru или как выстрелить себе в ногу до выполнения main.
+46
//В хедере
QVector<double> stateStack;
//Сохраняем
stateStack.push_back((double)renderInclusionsAs3DMeshSpheres);
stateStack.push_back((double)transparencyForClosestSidePolies);
stateStack.push_back((double)renderFEMGrid);
stateStack.push_back((double)NEST_results_detail_per_unit);
stateStack.push_back((double)sourceLineActive);
stateStack.push_back((double)renderScale);
stateStack.push_back((double)c2DZoom1To1);
stateStack.push_back((double)render2DInclusions);
stateStack.push_back((double)render3DInclusions);
stateStack.push_back((double)renderNESTResults);
stateStack.push_back((double)renderFEAResults);
stateStack.push_back((double)NEST_anumTime);
stateStack.push_back((double)isAnimRun);
stateStack.push_back((double)NEST_timeIterToRender);
stateStack.push_back((double)NEST_RenderResultsIn3D);
stateStack.push_back((double)NEST_renderTestPoints);
stateStack.push_back((double)nestNewResults);
stateStack.push_back((double)fibers_renderFormedRegions);
stateStack.push_back((double)sourceLineStarted);
stateStack.push_back((double)renderSourceLine);
stateStack.push_back((double)heatQuadsModifyMode);
stateStack.push_back((double)renderTopHeats);
stateStack.push_back((double)sliceModifyMode);
stateStack.push_back((double)useSlicePlane);
stateStack.push_back((double)showSlicedPart);
stateStack.push_back((double)cRenderMenuOpended);
stateStack.push_back((double)cForbidRenderResultsOverLayers);
stateStack.push_back((double)renderCoordLines);
stateStack.push_back((double)renderDimensions);
stateStack.push_back((double)renderLimits);
stateStack.push_back((double)cResTransparency);
stateStack.push_back((double)cRenderResultsOverLayers);
stateStack.push_back((double)cActiveLayer);
stateStack.push_back((double)renderMiniMapAtTop);
stateStack.push_back((double)subCompositeMode);
stateStack.push_back((double)subCompositeMapRendering);
stateStack.push_back((double)fibersRenderable);
stateStack.push_back((double)renderFibersAsMesh);
stateStack.push_back((double)droplets_detailedSpheres);
stateStack.push_back((double)cViewType);
//Загружаем
renderInclusionsAs3DMeshSpheres =(bool)stateStack[0];
transparencyForClosestSidePolies= stateStack[1];
renderFEMGrid=(bool) stateStack[2];
NEST_results_detail_per_unit= stateStack[3];
sourceLineActive=(bool) stateStack[4];
renderScale=(bool) stateStack[5];
c2DZoom1To1=(bool) stateStack[6];
render2DInclusions=(bool) stateStack[7];
render3DInclusions=(bool) stateStack[8];
renderNESTResults=(bool) stateStack[9];
renderFEAResults=(bool) stateStack[10];
NEST_anumTime= stateStack[11];
isAnimRun=(bool) stateStack[12];
NEST_timeIterToRender= stateStack[13];
NEST_RenderResultsIn3D=(bool) stateStack[14];
NEST_renderTestPoints=(bool) stateStack[15];
nestNewResults=(bool) stateStack[16];
fibers_renderFormedRegions=(bool) stateStack[17];
sourceLineStarted=(bool) stateStack[18];
renderSourceLine=(bool) stateStack[19];
heatQuadsModifyMode=(bool) stateStack[20];
renderTopHeats=(bool) stateStack[21];
sliceModifyMode=(bool) stateStack[22];
useSlicePlane=(bool) stateStack[23];
showSlicedPart=(bool) stateStack[24];
cRenderMenuOpended=(bool) stateStack[25];
cForbidRenderResultsOverLayers=(bool) stateStack[26];
renderCoordLines= stateStack[27];
renderDimensions=(bool) stateStack[28];
renderLimits= stateStack[29];
cResTransparency= stateStack[30];
cRenderResultsOverLayers=(bool) stateStack[31];
cActiveLayer= stateStack[32];
renderMiniMapAtTop =(bool) stateStack[33];
subCompositeMode =(bool) stateStack[34];
subCompositeMapRendering =(bool) stateStack[35];
fibersRenderable=(bool) stateStack[36];
renderFibersAsMesh=(bool) stateStack[37];
droplets_detailedSpheres= stateStack[38];
cViewType= stateStack[39];
Структуры для педиков.
+37
long* Service::qByteToLongArray(QByteArray qba, long r)
{
long* larr = new long[r];
char *carr;
carr = (char*)larr;
int len = r * sizeof(long);//length in bytes
for(int i=0; i < len; i++)
carr[i] = qba.at(i);
return larr;
}
QByteArray Service::longToQByteArray(long **larr2, long r, long c)
{
QByteArray qba;// = new QByteArray();
char **carr2;
carr2 = (char**)larr2;
int rlen = c * sizeof(long);//length of row in bytes
for(int i=0; i < r; i++){
qba.append(carr2[i], rlen);//add next row of matrix to the QByteArray
}
return qba;
}
Нашли это, только когда собрали под x64.
+49
...
#define POW2 65536
#define TRUE 1
#define FALSE 0
#define VAL_TEN 20
#define VAL_TWEN 10
#define VAL_HUN 100
...
Просто поржать. Пока была в отпуске, получила письмо от коллеги с этим примером того что я слишком сильно прижала индусов за константы и они все цифры в коде поменяли на "слова".
+36
#include <iostream>
#include <cmath>
struct Point3D
{
float x,y,z;
Point3D () {}
Point3D (float x, float y, float z) : x(x), y(y), z(z) {}
Point3D& operator -= (const Point3D& p) { x-=p.x; y-=p.y; z-=p.z; return *this; }
Point3D operator - (const Point3D& p) const { Point3D p2(*this); return (p2-=p); }
Point3D& operator *= (const float f) { x*=f; y*=f; z*=f; return *this; }
Point3D operator * (const float f) const { Point3D p2(*this); return (p2*=f); }
};
float Dot (const Point3D& p1, const Point3D& p2) { return p1.x*p2.x + p1.y*p2.y + p1.z*p2.z; }
struct Face
{
Point3D n;
float nc;
float Dist (const Point3D& p) const { return Dot(p,n)-nc; }
};
int show_float(float src)
{
union
{
int i;
float f;
} u;
u.f = src;
return u.i;
}
float from_int(int src)
{
union
{
int i;
float f;
} u;
u.i = src;
return u.f;
}
template<typename T>
T& operator<<(T& str, const Point3D& p)
{
str << std::hex << "Point3D(from_int(0x" << show_float(p.x) << "), from_int(0x" << show_float(p.y) << "), from_int(0x" << show_float(p.z) << "))";
return str;
}
struct SPoint
{
Point3D p;
bool DoCorrectFace(const Face& face)
{
bool correct = true;
float j=1.0f;
Point3D np=p;
for (;;)
{
float ad = face.Dist(np);
if (ad<=0.0f)
break;
correct=false;
np = p - (face.n*(ad*j));
j += 1.0f;
}
p=np;
return correct;
}
};
using namespace std;
int main()
{
cout << "Hello World!" << endl;
SPoint spoint;
spoint.p = Point3D(from_int(0x41c6940e), from_int(0x427352a6), from_int(0xc166e2d0));
cout << "Initial p:" << endl;
cout << spoint.p << endl;
cout << "Corrected:" << endl;
Face f;
f.n = Point3D(from_int(0x3d6cc83b), from_int(0x3f0e8841), from_int(0x3f5422bd));
f.nc = from_int(0x41bac3dc);
bool result = spoint.DoCorrectFace(f);
cout << spoint.p << endl;
cout << "Done: " << result << endl;
return 0;
}
говно в gcc
g++ (rev5, Built by MinGW-W64 project) 4.8.1
вывод в -O2 -DNDEBUG :
Hello World!
Initial p:
Point3D(from_int(0x41c6940e), from_int(0x427352a6), from_int(0xc166e2d0))
Corrected:
Point3D(from_int(0x41c6940e), from_int(0x427352a6), from_int(0xc166e2d1))
Done: 0
вывод в -O3 -DNDEBUG:
Hello World!
Initial p:
Point3D(from_int(0x41c6940e), from_int(0x427352a6), from_int(0xc166e2d0))
Corrected:
Point3D(from_int(0x41c6940e), from_int(0x427352a6), from_int(0xc166e2d0))
Done: 0
внимание вопрос: может ли быть такое, что DoCorrectFace не изменил точку ни на бит, но вернул false? В gcc может!