- 1
- 2
- 3
QRegExp re("<cite>(.*)</cite>");
re.setMinimal(true);
qDebug() << re.indexIn("<cite>http://test.com/</cite>");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 168
+8
QRegExp re("<cite>(.*)</cite>");
re.setMinimal(true);
qDebug() << re.indexIn("<cite>http://test.com/</cite>");
Ошибка, на фикс которой мы с другом убили почти час.
+74
public class Encoder {
public static void encode(final OutputStream out, Node node) throws IOException {
node.accept(new NodeVisitor() {
@Override
public void string(StringNode node) {
byte[] value = node.toByteArray();
out.write(Integer.toString(value.length).getBytes(Constants.CHARSET));
out.write(':');
out.write(value);
}
// ... другие методы для других типов нод ...
}
}
}
Решил поменять в паре-тройке модулей пачки ифов на паттерн visitor... И получил пинка от жабы ;(
write() кидает IOException, а значит и метод string() в анонимном классе тоже должен кидать, и метод string() в интерфейсе NodeVisitor тоже... Но ведь соседним посетителям этот IOException нахер не сдался...
Checked exceptions - зло.
−100
2/3
ПИТОНОПРОБЛЕМЫ ;)
P.S. Да, я читал доки. Не меня в них тыкать носом.
+12
#include <string>
#include <sstream>
#include <iostream>
int main() {
std::string str;
std::stringstream s("");
std::getline(s, str, '|');
std::cout << "good=" << s.good() <<
" bad=" << s.bad() <<
" fail=" << s.fail() <<
" eof=" << s.eof() << std::endl;
return 0;
}
good=0 bad=0 fail=1 eof=1
http://ideone.com/0Ceg8z
У меня один вопрос: нахуй так жить?
−92
a < 5 and a or 5
Вы все еще думаете, что сочетание and'а и or'а это тернарник? Тогда мы идем к вам :)
http://ideone.com/qC0TyS
+126
import Data.Char
import Data.List
digitRangeToRegex :: Integer -> Integer -> String
digitRangeToRegex min max
| min == max = digit min : ""
-- uncomment if you want \d instead of [0-9]
-- | min == 0 && max == 9 = "\\d"
| min >= 10 || max <= 9 = "[" ++ rangeToStr (digit min) (digit max) ++ "]"
| otherwise = "[" ++ rangeToStr (digit min) '9' ++ rangeToStr 'a' (digit max) ++ "]"
where
rangeToStr min max
| min == max = min : ""
| otherwise = min : '-' : max : ""
digit d
| d >= 0 && d <= 9 = chr (ord '0' + fromIntegral d)
| d < 36 = chr (ord 'a' + fromIntegral d - 10)
numberRangeToRegex :: Integer -> Integer -> Integer -> String
numberRangeToRegex base min max
| min == 0 && max == 0 = "0"
| cmin == cmax = intercalate "|" $ map formatRanges $ step dmin dmax
| otherwise = intercalate "|" $
(map formatRanges $ step dmin (replicate cmin (base-1))) ++
(if cmin + 1 < cmax then [digitRangeToRegex 1 (base - 1) ++ digitRangeToRegex 0 (base-1) ++ formatCount cmin (cmax-2)] else []) ++
(map formatRanges $ step (1 : replicate (cmax-1) 0) dmax)
where
digits 0 = [0]
digits n = reverse $ map (`mod` base) $ takeWhile (>0) $ iterate (`div` base) n
dmin = digits min
dmax = digits max
cmin = length dmin
cmax = length dmax
step [] [] = [[]]
step (a:as) (b:bs) =
if a == b then
prepend a $ step as bs
else
(if zeroHead then [] else prepend a $ step as nines) ++
(if na > nb then [] else [(na, nb) : replicate (length as) (0, base-1)]) ++
(if nineTail then [] else prepend b $ step zeros bs)
where
suffixLen = length as
zeroHead = all (== 0) as
nineTail = all (== base-1) bs
na = if zeroHead then a else a+1
nb = if nineTail then b else b-1
zeros = replicate suffixLen 0
nines = replicate suffixLen (base-1)
prepend x = map ((x, x):)
formatRanges = concatMap formatGroup . group . dropWhile (== (0,0)) where
formatGroup [(min, max)] = digitRangeToRegex min max
formatGroup xs@((min, max) : _)
| min == max = concat $ replicate (length xs) $ digitRangeToRegex min max
| otherwise = digitRangeToRegex min max ++ "{" ++ show (length xs) ++ "}"
formatCount min max
| min == 1 && max == 1 = ""
| min == max = "{" ++ show min ++ "}"
| otherwise = "{" ++ show min ++ "," ++ show max ++ "}"
Генератор реджексов, проверяющих диапазон чисел. Говнецо то еще, причем не только в реализации и выхлопе, но и в самой идее :)
Пример: http://ideone.com/FzAmYd
+131
int rotate(int a, int k) {
return (a << k) | (a >> (32-k));
}
Вращение на k бит влево.
+136
#include <stdio.h>
#include <math.h>
const double g = 10; // да, 10
int main() {
double v0; // начальная скорость снаряда в метрах в секунду
double angle; // угол в градусах относительно плоскости земли
scanf("%lf%lf", &v0, &angle);
angle = angle / 180 * M_PI; // переводим градусы в радианы
/*
уравнения движения в нашем случае просты:
x = v0 * t * cos(angle)
y = v0 * t * sin(angle) - g * t * t / 2
в момент удара о землю y будет равен 0 (по условию задачи)
из второго уравнения выразим время:
t = 2*v0*sin(angle)/g
за это время снаряд улетит на v0 * t * cos(angle)
x = 2 * v0 * v0 * cos(angle) * sin(angle) / g
Формулу можно упростить до v0 * v0 * sin(2*angle) / g
*/
double x = v0 * v0 * sin(2 * angle) / g;
printf("x = %.0lf\n", x);
return 0;
}
Референсный код для superhackkiller1997.
Простейшая задачка о полете снаряда. Ветер и сопротивление воздуха не учитываем. Стрельбы производятся на равнине (т.е. высоту в момент выстрела и в момент попадания в землю считаем одинаковой).
Входные данные: начальная скорость снаряда (в метрах в секунду), угол относительно плоскости земли (в градусах).
g принимаем равным 10 м/с².
Выходные данные: расстояние от пушки, на котором снаряд ударится о землю (в метрах, такой точности будет вполне достаточно).
Примеры:
v0 = 200, angle = 45 => x = 4000
v0 = 200, angle = 30 => x = 3464
v0 = 200, angle = 90 => x = 0
Продемонстрируй нам, как бы ты решил эту несложную задачку со своим представлением чисел (не fixed и не float). На входе, как видишь, все числа целые, на выходе тоже.
+18
word mofs[]={0,
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30
// ,31+28+31+30+31+30+31+31+30+31+30+31
};
"Класс для работы с датами" взятый отсюда: http://yun.complife.ru/soft.htm
+26
if (Keys == 0 && Shift.Contains(ssShift) == false && Shift.Contains(ssCtrl) == false && Shift.Contains(ssAlt) == false) { ... }
if (Keys == 1 && Shift.Contains(ssShift) == true && Shift.Contains(ssCtrl) == false && Shift.Contains(ssAlt) == false) { ... }
if (Keys == 2 && Shift.Contains(ssShift) == false && Shift.Contains(ssCtrl) == true && Shift.Contains(ssAlt) == false) { ... }
if (Keys == 3 && Shift.Contains(ssShift) == false && Shift.Contains(ssCtrl) == false && Shift.Contains(ssAlt) == true) { ... }
if (Keys == 4 && Shift.Contains(ssShift) == true && Shift.Contains(ssCtrl) == true && Shift.Contains(ssAlt) == false) { ... }
if (Keys == 5 && Shift.Contains(ssShift) == true && Shift.Contains(ssCtrl) == false && Shift.Contains(ssAlt) == true) { ... }
if (Keys == 6 && Shift.Contains(ssShift) == false && Shift.Contains(ssCtrl) == true && Shift.Contains(ssAlt) == true) { ... }
if (Keys == 7 && Shift.Contains(ssShift) == true && Shift.Contains(ssCtrl) == true && Shift.Contains(ssAlt) == true) { ... }
Без комментариев. Думаю, тут и так все понятно ;)