- 1
- 2
- 3
- 4
if (ctype_space($text[$pos] && $pos < $len)) {
while (ctype_space($text[$pos++]) && $pos < $len);
$pos--;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+152
if (ctype_space($text[$pos] && $pos < $len)) {
while (ctype_space($text[$pos++]) && $pos < $len);
$pos--;
}
Написал я когда-то такое и подумал: а какой смысл в $pos++ в последней итерации, если потом сразу $pos--?
И тут до меня дошло, что
while (ctype_space($text[$pos++]) && $pos < $len);
это не то же самое, что
while (ctype_space($text[$pos]) && $pos < $len) $pos++;
ибо в первом случае $pos++ выполнится в последней итерации, даже если ctype_space возвратит false.
И в итоге заоптимизировал до while (ctype_space($text[$pos]) && $pos < $len) $pos++; (уже без ифа и декремента).
Мораль: нефиг выпендриваться (ставить инкременты и декременты в условия), если можно написать по-простому.
+75
Integer code = Integer.valueOf(service.getId().toString());
service.getId() возвращает Long
+153
<?php if(isset($the_cat_id)): ?>
<?php
$query_args['showposts'] = $brp_count_category;
$query_args['cat'] = $the_cat_id;
?>
<?php else: ?>
<?php
$query_args['showposts'] = $brp_count_index;
?>
<?php endif; ?>
{ }? Нет, не слышали...
+9
BOOST_FOREACH(auto &v, pt.get_child("root"))
Код компилируется и написан таким изначально. Но судя по всему использует копипаст из примеров.
+128
(defun primes-under (limit &optional (filter-depth (truncate (log limit))))
(labels ((%purge (prefix table depth)
(iter
(for (key value) :in-hashtable table)
(for mul := (* key prefix))
(while (< mul limit))
(when (> depth 0) (%purge mul table (1- depth)))
(remhash mul table))))
(let ((primes (iter
(with p := (make-hash-table))
(for i :from 2 :below limit)
(setf (gethash i p) t)
(finally (return p)))))
(iter
(for (key value) :in-hashtable primes)
(%purge key primes filter-depth)
(finally
(return
(iter
(for (key value) :in-hashtable primes)
(reducing key :by #'+))))))))
Вопрос к знатокам: почему так работает? (у меня чисто случайно получилось)
Для тех, кому влом разбираться:
Задача выше - код из Прожект Ойлер. Нужно найти сумму всех простых чисел меньше 2000000 (двух миллионов).
Методом подбора было установлено, что если из всех чисел меньше N последовательно удалять их произведения N_0 * N_1 * ... * N_m, где m = floor(log(N)), то, по крайней мере на сколько меня хватило посчитать, не-простых чисел не остается.
Вопрос, как связан log(N), и можно ли вообще надеятся на то, что это правило - универсально (например, что степени двойки никогда не будут меньше N).
+73
StartElement startElement = event.asStartElement();
if(startElement.getName().getLocalPart().equals(REPORT)){
report = new Report();
}else if (startElement.getName().getLocalPart().equals(CODE)){
event = eventReader.nextEvent();
report.setCode(event.asCharacters().getData());
continue;
}else if(startElement.getName().getLocalPart().equals(SHORT_NAME)){
event = eventReader.nextEvent();
report.setShortName(event.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals(NAME)){
event = eventReader.nextEvent();
report.setName(event.asCharacters().getData());
continue;
}else if(startElement.getName().getLocalPart().equals(TYPE)){
event = eventReader.nextEvent();
report.setType(ReportType.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(CON_CMN_REPORT)){
event = eventReader.nextEvent();
String conRepCode = event.asCharacters().getData();
report.setConnectedCommonReport(getReportByCode(conRepCode, reports));
continue;
}else if(startElement.getName().getLocalPart().equals(BEFORE)){
event = eventReader.nextEvent();
report.setAvaliableBefore(Boolean.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(QUANTITY)){
event = eventReader.nextEvent();
report.setQuantity(ReportQuantity.valueOf(event.asCharacters().getData()));
continue;
}else if(startElement.getName().getLocalPart().equals(CREATOR_CLASS_NAME)){
event = eventReader.nextEvent();
report.setCreatorClassName(event.asCharacters().getData());
}
и не лень же было
+12
int main()
{
MyList<MySubList*> *list;
...
int error=makeZeroItemsNull(list)+deleteZeroItems(list);
delete list;
return error;
}
int makeZeroItemsNull(MyList *list)
{
//Удаляем указатели в списке и обнуляем
if(list==0||error)return 1;
return deleteZeroItems(list); //На всякий случай проверяем остались ли не удаленные элементы
}
int deleteZeroItems(MyList *list)
{
//Удаляем из списка обнуленные элементы
if(list==0||error)return 2;
return makeZeroItemsNull(list); //На всякий случай проверяем остались ли не обнуленные элементы
}
Учим все функции возвращать int(0) когда нет ошибок.
+123
drwsr
+123
geget
+117
bormand сосёт анус своему отцу, размазывая говно по лицу.