- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
int S;
int A;
int random_integer = (rand()%3);
cout<<"Skolko vsego palochek\n";
cin>>S;
cout<<"Komp zaberaet\n";
S-=random_integer;
cout<<s<<"\n";>>A;
S-=A;
if (S==8) S-=3; cout<<"Komp Zaberaet\n";
if (S==7) S-=2; cout<<"Komp Zaberaet\n";
if (S==6) S-=1; cout<<"Komp Zaberaet\n";
if (S==4) S-=3; cout<<"Komp Zaberaet\n";
if (S==3) S-=2; cout<<"Komp Zaberaet\n";
if (S==2) S-=1; cout<<"Komp Zaberaet\n";
else
if (A==1) S-=3; cout<<"Komp Zaberaet\n";
if (A==2) S-=2; cout<<"Komp Zaberaet\n";
if (A==3) S-=1; cout<<"Komp Zaberaet\n";
cout<<s<<"\n";>>A;
if (S<=0) cout<<"Vu proigrali\n";
if (A!=3 && A!=2 && A!=1) cout<<"Mogno tolko ot 1-3 palochek\n";
Вот такой суровый говнокод я встретил в одном из вопросов ВиО. То что код не рабочий и так понятно.
telnet 04.07.2010 21:00 # 0
absolut 04.07.2010 21:35 # +6
Komp Zaberaet
TarasB 04.07.2010 22:00 # 0
nil 04.07.2010 22:20 # +4
inkanus-gray 11.07.2010 00:10 # −1
Webkill 11.07.2010 01:16 # 0
nil 11.07.2010 06:31 # −1
inkanus-gray 11.07.2010 16:36 # 0
nil 11.07.2010 16:45 # 0
Но непривычно, когда другая система кодирования, скажем, я пишу я как ya, и когда вижу ja, глаз режет.
WebKill_HochetVBan 11.07.2010 17:03 # −1
nil 11.07.2010 17:14 # 0
И я им не пользуюсь:)
Вообще, стандарты бывают глупые. Взять хоть то, что у нас в стандарте раскладки запятая набирается с шифтом.
WebKill_HochetVBan 11.07.2010 17:31 # 0
TarasB 04.07.2010 22:03 # −3
Стандартный ранд ведь использует линейный конгруэнтный метод? Тогда не лучше ли брать (rand()*3)>>32, вместо взятия по модулю, которое быстро зациклится?
absolut 04.07.2010 22:08 # +2
cfdev 04.07.2010 22:12 # +2
nil 04.07.2010 22:21 # +12
Да и то не наверняка.
TarasB 04.07.2010 22:20 # −1
absolut 04.07.2010 22:28 # 0
bugmenot 06.07.2010 08:04 # −4
Говногость 04.07.2010 22:44 # 0
В данном случае лучше всего подходит что-то типа:
TarasB 05.07.2010 17:58 # −1
А всего-то надо умножить randseed на три (одной командой mul), получить результат в регистрах eax и edx, и вернуть содержимое edx (там старшие 32 бита).
Говногость 05.07.2010 18:01 # 0
Чего?
Одно деление. Где лишние операции? Можно просто сделать одно умножение. Это непроблема.
TarasB 05.07.2010 18:34 # −1
Говногость 05.07.2010 19:57 # −3
Ну и ладно. Если что, всё ещё в силе целочисленное деление, написанное выше. Поверь, если будет тормозить под профлаером это место - исправлю.
Говногость 05.07.2010 18:06 # 0
TarasB 05.07.2010 18:33 # 0
В system.pas загляните, короче.
Говногость 05.07.2010 20:01 # 0
Я понял к чему ты клонишь. 64 битные числа тоже не так хорошо.
Да и кто тебе такое сказал, что MAX_RAND = 2^32-1?
TarasB 05.07.2010 20:43 # −2
В плане скорости? Блин, перемножение 32-битных чисел командой mul автоматом даёт 64-битный результат в eax и edx. Нам нужно содержимое edx, всё.
Говногость 05.07.2010 22:02 # +1
TarasB 05.07.2010 22:49 # −4
jan3a1r 24.07.2010 04:05 # +3
Можете писать свои ранды на ассемблере сколько угодно.
Можете даже винду переписать на ассемблере, там же наверняка где-то можно заменить что-то на mul и вытащить результаты из регистров...
TarasB 24.07.2010 10:56 # −5
Говногость 24.07.2010 22:09 # 0
"Все мы потомки макак и предки богов."
jan3a1r 25.07.2010 01:22 # +1
Научи как нибудь на досуге инт на 32 бита сдвигать, авось и впрямь пиздато.
TarasB 25.07.2010 11:08 # 0
jan3a1r 25.07.2010 01:39 # 0
В общем сорики.
TarasB 25.07.2010 11:11 # +2
1. Содержит наезд
2. Не содержит информации
3. Содержим воду.
Третий пункт из этих - самый страшный. Помню, я в первом говнокое ругал компилятор Дельфей за то, что он простую операцию скомпилировал как вызов функции, так один мудозвор на 3 огромных поста доказывал, что подпрограммы - это круто, так как они повышают структурность кода, доказывал, что я ненавижу язык, и что все, кто ненавидят язык - мудаки. Зря я его сразу не послал нахуй, всё равно из тех 100 постов, что мы напиздели, ничего полезного не было.
bugmenot 11.07.2010 02:56 # −3