- 1
- 2
- 3
- 4
- 5
- 6
- 7
var percent = 0;
setInterval(function() {
if(percent < 100) {
percent += 10;
showprogress(percent);
}
}, 50);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
var percent = 0;
setInterval(function() {
if(percent < 100) {
percent += 10;
showprogress(percent);
}
}, 50);
Прогресс-бар асинхронной загрузки картинки
+156
$html = file_get_contents('http://2ip.ru/');
preg_match_all('#<big id=\"d_clip_button\">(.*?)</big>#', $html, $ip);
$ip2 = $ip[1][0];
if($pass == $pass2)
{$data = file_get_contents("http://$server$domain/$catalog/$files$format?login=$login&pass=$pass&email=$email&name=$name&famil=$famil&skype=$skype&ip=$ip2");
MessageBox("$data", "Ответ с сервера");
}else{
messageDlg("Пароли не совпадают!", mtWarning, MB_OK);}
Вот такая незамысловатая регистрация на сервере. GET запросом с использованием file_get_contents. Ну и конечно же серверу надо обязательно отправить свой ip.
+65
Graphics2D g = ...;
String str = "Some string";
FontRenderContext frc = g.getFontRenderContext();
double height = g.getFont().createGlyphVector(frc, str).getPixelBounds(null, 0, 0).getHeight();
Мне нужно было узнать точную высоту строки, которую я рисую на объекте Image. Спасибо stackoverflow за то, что он есть, по-моему, до этого способа просто невозможно догадаться, даже копая документацию, за несколько часов...
+136
#include <stdio.h>
#include <inttypes.h>
inline uint8_t mid_ch (uint8_t a, uint8_t b, uint8_t res)
{
if (b == 0){ if (a >= 2) return mid_ch (a-2, b , res+1); else return res;}
if (a == 0){ if (b >= 2) return mid_ch (a , b-2, res+1); else return res;}
return mid_ch (a-1, b-1, res+1);
}
uint64_t mid_0_ch (uint64_t a, uint64_t b)
{
return mid_ch(a, b, 0);
}
int main(void)
{
printf("%u %u", mid_0_ch (253, 123), (253+123)/2);
return 0;
}
Нахождение среднего арифметического двух чисел через рекурсию. Сначала сделал для uint64_t чтобы это имело смысл, ведь сложение двух 64-битных чисел с записью результата в третье может привести к целочисленному переполнению (для 64-битных чисел, сложение которых может привести к переполнению, этот код работал чрезвычайно медленно, поэтому я ограничился 8-битными). При таком наркоманско-рекурсивном алгоритме этого переполнения не будет. 128-битные типы есть только как нестандартное расширение, но тогда еще возникает вопрос, как найди среднее арифметическое двух таких 128-битных чисел? А если есть 256-битные, то как тогда их них находить среднеарифметическое... ну и так далее.
Можно эту проблему еще решать через битовые маски т.е. убрать из обеих чисел самые старшие биты (предварительно сохранив их), сложить эти два числа, поделить на два, потом уже эти сохраненные биты вида 10000... или 0000... оба поделить на 2(сдвинуть на один разряд) и прибавить. Наркоманство какое-то.
Почему бы не сделать в С некий особый целочисленный тип, в котором любая фигня влезет, но который бы использовался только временно для промежуточных вычислений, чтобы не делать бэкапы битиков всяких?
+137
ascdec proc near
mov di,0
mov si,0
xor dx,dx
mov bx,offset buf
add bx,10
mov cx,11
lo0:
dec bx
dec cx
jcxz ex0
mov al,[bx]
cmp al,255
je lo0
lo1:
sub al,30h
push bx
push cx
mov bx,offset deci
xor dx,dx
mov cx,word ptr[bx+2]
mov bx,word ptr[bx]
mov ah,0
call mult32
add di,ax
adc si,dx
mov bx,offset deci
mov ax,[bx]
mov dx,[bx+2]
call multen
mov bx,offset deci
mov [bx],ax
mov [bx+2],dx
pop cx
pop bx
dec bx
dec cx
jcxz ex0
mov al,[bx]
jmp lo1
ex0:
mov ax,di
mov dx,si
test dx,8000h
jz enda
jmp error
enda:
cmp minus,2dh
jne pl1
call ccc
pl1:
ret
ascdec endp
multen proc near
push bx
push cx
mov bx,10
mov cx,0
call mult32
pop cx
pop bx
ret
multen endp
mult32 proc near
push si
push di
push dx
push ax
test dx,8000h
jz ml
call ucc
push dx
push ax
ml:
mov dx,cx
mov ax,bx
test dx,8000h
jz ml0
call ucc
mov bx,ax
mov cx,dx
ml0:
pop ax
pop dx
mov si,0
mov di,0
mul bx ;AX*BX
mov di,ax
mov si,dx
pop ax
mul cx ;AX*CX
add si,ax
pop dx
ucc proc near
dec ax
sbb dx,0
not ax
not dx
ret
ucc endp
Превращение строки в число.
+6
// функция квадрата расстояния на гексагональном поле
Fixed SDist2 (Fixed dx, Fixed dy)
{
return (dx*dx+dy*dy+dx*dy);
}
// а теперь типа находим ближайшее целое, ближайшее в гексагональном смысле
const Fixed rx = int(rtx), ry = int(rty);
const Fixed
d00 = SDist2(rx -rtx, ry -rty),
d10 = SDist2(rx+fx1-rtx, ry -rty),
d01 = SDist2(rx -rtx, ry+fx1-rty),
d11 = SDist2(rx+fx1-rtx, ry+fx1-rty);
int x,y;
if (d00<d10 && d00<d01 && d00<d11)
{
x=int(rx); y=int(ry);
} else if (d10<d01 && d10<d11)
{
x=int(rx)+1; y=int(ry);
} else if (d01<d11)
{
x=int(rx); y=int(ry)+1;
} else
{
x=int(rx)+1; y=int(ry)+1;
}
изящно не получилось
+15
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <algorithm>
#include <iterator>
#include <sstream>
#include <assert.h>
using namespace std;
template<class Container, class Iterator>
size_t position(Container&& c, Iterator pos){
return size_t(distance(begin(c), pos));
}
template<class Container, class Iterator, class Iterator2>
string sposition(Container&& c, const pair<Iterator, Iterator2>& pos){
ostringstream r;
r << "(" << position(c, pos.first) << ", " << position(c, pos.second) << ")";
return r.str();
}
template<class Container, class Value>
pair<typename remove_reference<Container>::type::iterator, typename remove_reference<Container>::type::iterator>
binary_search(Container&& source, const Value& item){
assert(is_sorted(begin(source), end(source)));
const auto empty = make_pair(source.end(), source.end());
auto l = begin(source), r=end(source), m=l;
while(true){
if(l==r)
return empty;
const auto lr = distance(l,r);
m = next(l, lr/2);
if(*m<item)
l = m;
if(*m>item)
r = m;
if(*m==item)
break;
if(l!=r && next(l)==r)
return empty;
}
cout<<"part1"<<endl;
auto l1=l, r1=m, l2=m, r2=r;
while(true){
const auto lr1 = distance(l1, r1);
m = next(l1, lr1/2);
if(*m<item)
l1 = m;
if(*m>=item)
r1 = m;
if(l1==r1 || (*l1<item && *r1>=item))
break;
}
cout<<"part2"<<endl;
while(true){
const auto lr2 = distance(l2, r2);
m = next(l2, lr2/2);
if(*m<=item)
l2 = m;
if(*m>item)
r2 = m;
if(l2==r2 || (*l2>=item && (r==r2 || *r2>item)))
break;
}
cout<<"part3"<<endl;
return {r1, next(l2)};
}
int main(){
vector<int> s{5,7,7,7,9,19,23};
list<int> s2(s.begin()+1, s.end());
cout<<sposition(s, binary_search(s, 7))<<endl;
cout<<sposition(s2, binary_search(s2, 7))<<endl;
cout<<sposition(s, binary_search(s, 9))<<endl;
cout<<sposition(s, binary_search(s, 5))<<endl;
cout<<sposition(s, binary_search(s, 23))<<endl;
cout<<sposition(s, binary_search(s, 0))<<endl;
vector<int> e;
cout<<sposition(e, binary_search(e, 0))<<endl;
cout<<sposition(s, binary_search(s, 25))<<endl;
cout<<sposition(s, binary_search(s, 10))<<endl;
return 0;
}
http://coliru.stacked-crooked.com/a/0f74a4661c06cd68
Специально для @Пи, раз ему хачкель не нравится.
+122
substractOneFromArgument = (-)1
main = print $ substractOneFromArgument 4
ПИШУ ФУНКЦИЮ ВЫЧИТАЮЩУЮ ЕДИНИЦУ ИЗ СВОЕГО АРГУМЕНТА
@
ПОЛУЧАЮ УПОРОТЫЙ РЕЗУЛЬТАТ
http://ideone.com/I34iLA
−117
(
if [ ! -z "$UNIX95" ] ; then
unset UNIX95
fi
...
)
Продолжение темы "Java программисты пишут на шелле": в подшелле, убрать переменную, если поставлена.
А то вдруг шелл какой NullPointerException бросит.
+154
/^(?!\s)[a-zA-Z0-9\x2d-\x2f\x7f-\xff_-\s]+(?!\s)$/
Регулярочка из Modx. После обновления PCRE до последней версии перестала восприниматься как валидная. Недоумеваем, что имели в виду, задавая диапазон "_-\s" и как оно работало раньше.