- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
def rotate_array(arr, i)
i = i%arr.size
return arr if i == 0
left = arr[0...i].reverse
right = arr[i..arr.size].reverse
arr = left + right
arr.reverse
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 8
−99
def rotate_array(arr, i)
i = i%arr.size
return arr if i == 0
left = arr[0...i].reverse
right = arr[i..arr.size].reverse
arr = left + right
arr.reverse
end
https://knaidu.gitbooks.io/problem-solving/content/arrays/rotate_array.html
вообще не понял зачем reverse
http://ideone.com/9fVLsq
−19
#define PI_000 0.0000000000000000000000000000000 // 0
#define PI_001 0.0174532925199432957692369076849 // 1
#define PI_010 0.1745329251994329576923690768489 // 10
#define PI_020 0.3490658503988659153847381536977 // 20
#define PI_030 0.5235987755982988730771072305466 // 30
#define PI_040 0.6981317007977318307694763073954 // 40
#define PI_045 0.7853981633974483096156608458199 // 45
#define PI_050 0.8726646259971647884618453842443 // 50
#define PI_060 1.0471975511965977461542144610932 // 60
#define PI_070 1.2217304763960307038465835379420 // 70
#define PI_080 1.3962634015954636615389526147909 // 80
#define PI_090 1.5707963267948966192313216916398 // 90
#define PI_135 2.3561944901923449288469825374596 // 135
#define PI_180 3.1415926535897932384626433832795 // 180
#define PI_225 3.9269908169872415480783042290994 // 225
#define PI_270 4.7123889803846898576939650749193 // 270
#define PI_315 5.4977871437821381673096259207391 // 315
#define PI_360 6.2831853071795864769252867665590 // 360
http://programina.blogspot.com/2016/10/msaa-cpp-codeblocks.html
там еще много интересного
+997
Can you think of an algorithm that performs the below:
“The Big Brown Fox” => “Fox Brown Big The”
“How are you?” => “you? are How”
std::string reverse_words( const std::string& str )
{
std::string result;
result.reserve( str.length() );
size_t word_begin = 0;
while( word_begin < str.length() )
{
const size_t pos = str.find_first_of( ' ', word_begin );
pos = (pos != string::npos) ? pos : str.length();
std::string word = str.substr( word_begin, pos-word_begin );
word_begin = pos + 1;
if (result.length() > 0)
{
word.append( 1, ' ');
}
result.insert( 0, word );
}
return result;
}
высрал буквально 5 минут назад
inplace версию чего-то влом писать для домашнего теста, да и кода в ней будет больше, но работать она должна быстрее за счет отсутствия аллокаций
но писать надо, так как отправлять такое как-то стыдно
−179
class Source:
id = ''
values = []
arrays =[ ( 'bool_array', bool), ( 'float_array', float), ('IDREF_array', str), ('int_array', int), ('Name_array', str), ('SIDREF_array', str), ('token_array', str)]
def __init__(self, node):
self.id = node.getAttribute('id')
accessors = dict([ (accessor.getAttribute('source')[1:], (int(accessor.getAttribute('count')), int(accessor.getAttribute('stride'))) ) for technique in node.getElementsByTagName("technique_common") for accessor in technique.getElementsByTagName("accessor") ])
values = [(arrayNode.getAttribute('id'), int(arrayNode.getAttribute('count')), [array[1](v) for v in getText(arrayNode).split()]) for array in Mesh.Source.arrays for arrayNode in node.getElementsByTagName(array[0])]
self.values = [ array[2][i*accessors[array[0]][1]:(i+1)*accessors[array[0]][1]] for array in values for i in range(accessors[array[0]][0])]
<source id="Box001-lib-Position">
<float_array id="Box001-lib-Position-array" count="24">-23.296745 -46.390999 0.000000 23.296745 -46.390999 0.000000 -23.296745 46.390999 0.000000 23.296745 46.390999 0.000000 -23.296745 -46.390999 35.287621 23.296745 -46.390999 35.287621 -23.296745 46.390999 35.287621 23.296745 46.390999 35.287621</float_array>
<technique_common>
<accessor source="#Box001-lib-Position-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
в результате нужно получить список в виде
[[-23.296745, -46.390999, 0.0], [23.296745, -46.390999, 0.0], [-23.296745, 46.390999, 0.0], [23.296745, 46.390999, 0.0], [-23.296745, -46.390999, 35.287621], [23.296745, -46.390999, 35.287621], [-23.296745, 46.390999, 35.287621], [23.296745, 46.390999, 35.287621]]
Неделю назад начал учить питон, и для того чтоб это было совсем полезно, решил попробовать написать на нем парсер Collada файлов.
Очень сильно проникся идеей инициализации массивов, из-за чего и родился сей говнокод...
Код выдает правильный результат, но абсолютно не читаемый...
+136
#if 0
// memory allocator
// Type: Best Fit with block sorting
#else
static char* last = (char*)KERNEL_HEAP_BEGIN;
void* alloc( size_t size )
{
void * mem = last;
last += size;
return mem;
}
void free( void* mem )
{
(void)mem;
}
#endif
Менеджер памяти.
такую заглушку пришлось делать за пару ночей до сдачи диплома, так как не хватало времени на написание записки.
зато самый быстрый алокатор. сложность О(1)...
нужен был для выделения памяти для данных 2 потоков и 1 процесса... функция free нигде не использовалась...
+138.7
char serverName[MAX_NAME];
char buttonName[MAX_NAME];
char serverIdStr[3];
serverIdStr[2] = '\0';
int currentSpot = 0;
// ...... получение serverName и currentSpot
serverIdStr[0] = '0' + ((currentSpot+1)/10);
serverIdStr[1] = '0' + ((currentSpot+1)%10);
strcpy(buttonName, buttonPrefix);
strcat(buttonName, serverIdStr);
Кто то не знает про существование sprintf...
+61.9
std::string strFullMapName;
if ( strstr( _strMapFileName.c_str(), "Map/" ) != _strMapFileName.c_str() )
strFullMapName = "Map/";
из одного очень дорогого проекта
+62.3
void func(const char* str)
{
std::map<std::string, int>::iterator = my_map.find(str);
.....
}
std::string str = "key";
func(str.c_str());
Уверен что это может найти каждый из вас в своих проектах, но может не в таком очевидном виде...