- 1
normalize((a+b)/2)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+15
normalize((a+b)/2)
+129
funktion = binary find
(array element start end) : start = 0, end = array::length {
[IF} = END - START = 1 THEN RETURN >? start <- array = element ??? start ELSe -1
ELSE
int * k = start + end - start >> 1
IF {element < array::k> ELSE binary find(array element k end THEN := binary find(array element start k); RETURN <<<
}
Двоичный поиск такой двоичный
+3
AnsiString Cut_the_path(AnsiString ExeName)
{
AnsiString Path = ExeName;
char *cp = Path.c_str(); int last = Path.Length()-1;
int i=last;
for(; i>=0; i--)
{
if( *(cp+i) == '\\' )
break;
Path.Delete(Path.Length(),1);
}
return Path;
}
−2
; %ch - x1, %cl - y1, %dh - x2, %dl - y2 ;
drawline:
push %a
push %b
push %c
push %d
push %e
mov %al %dh
sub %al %ch
call @abs
mov %ah %al ; ah - dX ;
mov %al %dl
sub %al %cl
call @abs
neg %al ; al - -dY ;
mov %bh FFh ; bh - signX;
mov %bl FFh ; bl - signY ;
cmp %ch %dh
jgz @.S1
neg %bh
.S1:
cmp %cl %dl
jgz @.S2
neg %bl
.S2:
mov %el %ah
add %el %al ; el - error ;
push %d
call @drawpixel
pop %d
.loop:
cmp %ch %dh
jnz @.L1
cmp %cl %dl
jnz @.L1
jmp @.loop_end
.L1:
push %c
call @drawpixel
pop %c
mov %eh %el
cmp %eh %al
jng @.L2
add %el %al
add %ch %bh
.L2:
cmp %eh %ah
jgz @.loop
add %el %ah
add %cl %bl
jmp @.loop
.loop_end:
pop %e
pop %d
pop %c
pop %b
pop %a
ret
https://pastebin.com/k8697fae
алгоритм брезенхема.
результат: https://imgur.com/a/c1twuNt
забавно что посреди тестов программа выдала красивые такие кривые на весь экран. с.м. имгур, приложил.
−1
Если у меня есть приватный метод, то зачем мне его объявлять в .h-файле?
Хочу только в .cpp написать вспомогательный метод и только там его использовать.
А вынужден копипастить сигнатуру ещё и в .h.
−103
Остались ли среди созидателей Ынтерпрайзного гуано не познавшие вкус хуйца своего шефа?
Cолгите ещё один раз. Обманите себя, сказав что Ваш рот девственен.
+133
if (strcmp(request_name, REQUEST_1) == 0)
function_1();
else if (strcmp(request_name, REQUEST_2) == 0)
function_2();
else if (strcmp(request_name, REQUEST_3) == 0)
function_3();
/* И так далее */
else if (strcmp(request_name, REQUEST_N) == 0)
function_n();
Собственно, как можно ЭТО рефакторить в более приемлемый вид и можно ли заменить на branchless?
+138
persjempre <[email protected]>,Akka Knebekaize <[email protected]>
Значит слушай внимательно, тупица, что я тебе скажу.
Никакой ты не крутой пацан, ты сосунок, который нарывается на ссору с
органами. В предыдущем письме ты четко сдал себя со всеми потрохами,
указав двух свидетелей твоего беспредела. 30 лет работы в прокуратуре
меня кое-чему научили. Я не поленился найти этого паренька,
администратора того форума программистов и пообщаться с ним. Виталий
оказался примилейшим человеком, и показал мне вашу с ним перепалку.
Да, я много гопоты повидал, и ты пожалуй один из немногих уникалов,
который повеселил и меня и наш отдел по защите персональной
информации. С тебя ржали все мои бойцы, сказали что давно такого
детского сада не видели. Это же надо - упорно месить грязь под разными
именами с разных каналов! Вот молодец. Мало того, что засветился как
свеча в темной комнате, мне даже не потребуется делать усиленных
телодвижений для вычисления твоего адреса места проживания, так еще и
упорно плодишь кучу доказательств своей неправоты. Слышал такую
пословицу: "Язык до Киева доведет"? Не? Поясняю - твоя клевета и
оскорбления обязательно будут доведены до криминала, если будешь
продолжать с таким же упорством кричать в публичных местах интернета,
демонстрируя свою храбрость и безнаказанность. Как человек с
многолетним опытом, наблюдавший не один десяток таких дел скажу -
найдет твоя коса на каменюку, обязательно.
Значит слушай теперь, малыш, внимательно. Зовут меня Вениамин
Валентинович, и работаю я прокурором. Прикинь, прокуроры тоже умеют
пользоваться интернетом, и соблюдать нетикет (хотя вряд ли ты о нем
слышал, твои понятия морали судя по твоему языку на нуле). Я
предупредил Виталия, что если он или кто-то из них пострадает от
твоего грязного рта, пусть они мне напишут, предоставив твои слова. Я
постараюсь помочь честным людям наказать обидчика. Я дам ход
"плавному" делу. Поверь мне выписать ордер мне ничего не стоит, и
любая организация, занимающаяся связью с радостью мне поможет,
предоставив журнал связи абонентов. А учитывая твой многоликий янус,
следы которого остались как оказалось не только на том сайте, пробить
по совпадениям твой адрес прописки легче простого.
Если ты еще не в курсе, или попросту в школе не учился поясняю:
"Преступления в сфере информационных технологий включают как
распространение вредоносных вирусов, взлом паролей, кражу номеров
кредитных карточек и других банковских реквизитов (фишинг), так и
распространение противоправной информации (клеветы, материалов
порнографического характера, материалов, возбуждающих межнациональную
и межрелигиозную вражду и т.п.) через Интернет, коммунальные
объекты[1]."
К твоему вниманию перечитывать до полного просветления слова "Клевета"
и "межнациональная вражда". Сюда же относится и оскорбления по половым
признакам, а они в твоих постах есть. Будь уверен при необходимости
особое внимание суд уделит именно им, как показаниям зачинщика
преступления, т.е. основной первопричины.
Учитывая твои угрозы мы так уж и быть сошлемся на статью 273 УК. А
так же ст. 130. И все они будут направленны прежде всего на тебя как
на инициатора, и главного организатора беспредела.
Советую тебе сразу искать крутого адвоката, если нет желания забиться
в угол и перестать терроризировать интернет. Я обязательно попрошу еще
своих бойцов проверить тебя на сайте xaker.ru, где вполне можно
прихватить за взломы.
В общем мой тебе добрый совет, не ломай свою жизнь, я уверен что ты
еще молодой, и схлопотать срок, пусть даже условный не желаешь. Даже
административные наказания не пройдут тебе даром, если ты
несовершеннолетний то для твоих родителей.
Кончай баловаться с огнем! Я тебя предупредил - еще раз выскажешься
неадекватно в мою сторону, или Виталий (или любой другой) пожалуется
на тебя, будешь иметь дело с правоохранительными органами, это я тебе
обещаю.
<[email protected]>
Ваш унылый троллинг все больше напоминает попытки запихнуть штепсель от холодильника в USB разъем. Я на такое не ведусь.
Вот какой он, суровый дядя прокурор с Программерсфорума)
Реально же эта писанина принадлежит одной пизде-мордераторше с programmersforum.ru (Ice Valery)
+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).
+157
function timeToString(year, month, day, hour, minute, sec, msec) {
var date = new Date(year, month, day, hour, minute, sec, msec);
var now = new Date();
var msec = now.getTime() - date.getTime(); // Миллисекунды
var sec = Math.round(msec / 1000);
var years = Math.floor(sec / (86400 * 365));
var days = Math.floor((sec - years * 86400 * 365) / 86400);
var hours = Math.floor((sec - years * 86400 * 365 - days * 86400) / 3600);
var minutes = Math.floor((sec - years * 86400 * 365 - days * 86400 - hours * 3600) / 60);
var seconds = sec - years * 86400 * 365 - days * 86400 - hours * 3600 - minutes * 60;
// Проверяем, были ли високосные года?
var i;
for(i = date.getFullYear(); i <= now.getFullYear(); i++) {
if(i % 4 === 0) {
if(i === now.getFullYear()) {
if(now.getMonth > 2) {
days++;
}
elseif(now.getMonth === 2) {
if(now.getDay === 28) {
days++;
}
}
}
else
{
days++;
}
}
var yearName;
var yearOst = years % 10;
if(years === 1 || (yearOst === 1 && years > 20))
{
yearName = 'год'
}
else if((years === 2 || years === 3 || years === 4) || ((yearOst === 2 || yearOst === 3 || yearOst === 4) && years > 20))
{
yearName = 'года';
}
else
{
yearName = 'лет';
}
var hourName;
var hourOst = hours % 10;
if(hours === 1 || (hourOst === 1 && hours > 20))
{
hourName = 'час'
}
else if((hours === 2 || hours === 3 || hours === 4) || ((hourOst === 2 || hourOst === 3 || hourOst === 4) && hours > 20))
{
hourName = 'часа';
}
else
{
hourName = 'часов';
}
var dayName;
var dayOst = days % 10;
if(days === 1 || (dayOst === 1 && days > 20))
{
dayName = 'день'
}
else if((days === 2 || days === 3 || days === 4) || ((dayOst === 2 || dayOst === 3 || dayOst === 4) && days > 20))
{
dayName = 'дня';
}
else
{
dayName = 'дней';
}
var minuteName;
var minuteOst = minutes % 10;
if(minutes === 1 || (minuteOst === 1 && minutes > 20))
{
minuteName = 'минута'
}
else if((minutes === 2 || minutes === 3 || minutes === 4) || ((minuteOst === 2 || minuteOst === 3 || minuteOst === 4) && minutes > 20))
{
minuteName = 'минуты';
}
else
{
minuteName = 'минут';
}
var secondName;
var secondOst = seconds % 10;
if(seconds === 1 || (secondOst === 1 && seconds > 20))
{
secondName = 'секунда'
}
else if((seconds === 2 || seconds === 3 || seconds === 4) || ((secondOst === 2 || secondOst === 3 || secondOst === 4) && seconds > 20))
{
secondName = 'секунды';
}
else {
secondName = 'секунд';
}
document.getElementById("time").innerHTML = years + " " + yearName + ", " + days + " " + dayName + ", " + hours + " " + hourName + ", " + minutes + " " + minuteName + ", " + seconds + " " + secondName;
}
Функция для подсчета того, сколько времени прошло с указанной даты.
JavaScript начал изучать вчера. Чувствую, что уже можно заканчивать.
Пришлось код урезать, чтобы вместиться в 100 строк. Более-менее читаемый тут: http://dumpz.org/573381/