02.11.2008
В целом тематика у нас другая, но для истинно верующих си-девелоперов, думаю, не лишним будет на досуге посетить:
Международные соревнования по заковыристому коду на Си
http://www.ioccc.org/main.html
http://www.ioccc.org/years-spoiler.html
Цели соревнования:
- Написать наиболее заковыристый код, следуя правилам соревнования.
- Используя иронию, показать необходимость придерживаться стиля при программировании.
- Встряхнуть компиляторы Си, при помощи не обычного кода.
- Проилюстрировать все тонкости языка Си.
Рубрика: Без рубрики | Нет комментариев »
27.10.2008
Задание: Какое наименьшее число можно разделить без остатка на все числа от 1 до 20?
Решение от кандидата на должность senior developer, с 10-тилетним опытом разработки на РНР:
for ($i=1;$i<=99999999999;$i++) {
$num = 20*$i;
if ($num%19 == 0) {
if ($num%18 == 0) {
if ($num%17 == 0) {
if ($num%16 == 0) {
if ($num%15 == 0) {
if ($num%14 == 0) {
if ($num%13 == 0) {
if ($num%12 == 0) {
if ($num%11 == 0) {
if ($num%9 == 0) {
if ($num%8 == 0) {
if ($num%7 == 0) {
if ($num%6 == 0) {
if ($num%3 == 0) {
echo $num;
exit();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Заметьте, сеньйор разработчик не внес в алгоритм проверку остатка при делении на 2 и 10, и заменил её умножением на 20 
Благодарим проводящих собеседование, за то, что не попросили найти наименьшее общее кратное чисел от 1 до 1000.
Источник: http://thedailywtf.com/Articles/Out-of-All-the-Possible-Answers.aspx
Рубрика: Без рубрики | Нет комментариев »
27.10.2008
"++i--" - операция подергивания
Источник: http://forum.ixbt.com
Рубрика: Без рубрики | Нет комментариев »
27.10.2008
Источник: http://forum.en.net.ua/viewtopic.php?f=114&p=246660
uint i;
…
if (i.ToString().Length == 1)
{
...
}
Не сразу можно понять, что в этом коде просто-напросто выполняется проверка i < 10. Алгоритм достаточно прост: выполняется преобразование i в строку, после чего вычисляется ее длина. Если число больше 9, то его десятичная запись содержит больше одного символа. Отрицательные числа переменная типа uint содержать не может. Проверку проходят лишь числа от 0 до 9.
Алгоритм ресурсоемок, неочевиден и не поддается сопровождению даже теоретически.
Рубрика: Без рубрики | Нет комментариев »
27.10.2008
Источник: http://habrahabr.ru/blogs/code_wtf/39638/
У нас был в ходу термин «Джа#», где-то даже валялась подборка избранного. Классический пример — как узнать дату завтрашнего дня (шутка такая):
public Calendar getTomorrow() {
Thread.sleep(1000*60*60*24);
return Calendar.getInstance();
}
Метки: алгоритм джа
Рубрика: Без рубрики | Нет комментариев »
24.10.2008
Источник: http://www.realcoding.net/article/view/6869
if ($x == 0) {
// Do 1…
} elseif ($x!=0) {
// Do 2…
} else {
//
// А вот здесь чистые деньги
//
}
Рубрика: Без рубрики | Нет комментариев »
23.10.2008
Источник: http://lurkmore.ru/Индусский_код
Алгоритм вполне очевиден. Не менее очевидно и то, что для его выполнения, конструктор класса string будет вызван не менее десяти раз.
Странно, что автор алгоритма не учел числа меньше нуля
bool IsNumber(string str) {
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").Replace ("8", "").Replace ("9", "").Length == 0);
}
Рубрика: Без рубрики | Нет комментариев »
23.10.2008
Источник: http://lurkmore.ru/Индусский_код
Далеко не сразу можно понять, что этот код выделяет дробную часть произведения a*b. кроме того, функция выдаст ошибочное значение при a*b>999999999 или a*b<0. Также зависимость времени выполнения от величины целой части тоже не радует.
double rest(float a, float b) {
float res=a*b;
for (int i=0; i<999999999; i++){
if (i<=res && i+1>res) {
res = res-i;
break;
}
}
return res;
}
Рубрика: Без рубрики | Обсуждение закрыто.
23.10.2008
Источник не известен.
if ($pay == 3){
$pay = 3;
}else{
$pay = $pay;
}
Рубрика: Без рубрики | Нет комментариев »