- 1
Логика работы бота для создания активности.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+5
Логика работы бота для создания активности.
...Часто бывает ситуация, когда обсуждение в ветке достигает некоторого ситуационного апогея, когда вопрос, быть может, уже решен и никто из юзеров больше не хочет добавлять ответы, чтобы не портить общую картину завершенности.
Особенно опасна такая ситуация на небольших форумах, где тем - две-три и - обчелся, ибо ведет к охлаждению интереса к ним у юзеров и запустеванию. В целях борьбы с этим явлением, на форумах обязательно имеются разделы "флудильня" и подобные, где пользователи могли бы пообщаться на нейтральные темы, но ввиду вышеописанного принципа эта мера также не является эффективной.
...На говнокоде некоторыми заинтересованными пользователями используются боты, которые создают активность в "решенных" темах, разряжая обстановку нейтральными комментами, и ломая картину завершенности, чем сподвигают пользователей к активности.
1. Бот бот-батбот-батбот "прошевеливает пламень уст" в замершей ветке, анализируя дату последнего коммента и отвечая на него комментарием, который будет являться своеобразным эвентом - сигналом, подталкивающих пользователей к общению.
2. Поскольку по статистике человек запоминает последнюю сказанную собеседником фразу (а читатель - последнее предложение в абзаце), несложно было разработать незамысловатый алгоритм, который парсит комментарии и сортирует по дате. Комментарии дифференцируются на пригодные - в последнем предложении есть по крайней мере один глагол, - и непригодные, т.е. не содержащие глаголов.
3. Из фразы в случайном порядке вычленяется глагол. Затем, при использовании таблицы спряжений, глаголу придается изъявительное наклонение единственного числа прошедшего времени (нашёл, сделал, обработал, уснул, купил). Далее бог составляет вопросительное предложение по схеме частица+вопросительное наречие+глагол, например, "ну как, сделал?", которое бот постит в ответ на последний комментарий.
+3
Гастрономии-тред
Знаете ли Вы, что...
* ...Что делают с хлебом, колбасами и другими изделиями, которые Вы все так любите кушать, когда истекает срок их годности?
Ответ под спойлером. Продукты размалывают и понемногу добавляют в сырье, повторно вводя в техноцикл.
*...В муке, а стало быть, и в изделиях из нее всегда содержатся фекалии грызунов.
* Колбасный фарш имеет серый цвет. Для того, чтобы готовые изделия стали приятными на вид, в сырье добавляют красители и нитрит натрия - консервант.
+2
while (!cmpts.empty() && !ec)
{
path f = std::move(cmpts.front());
cmpts.pop_front();
if (f.empty())
{
// ignore empty element
}
else if (is_dot(f))
{
if (!is_directory(result, ec) && !ec)
ec.assign(ENOTDIR, std::generic_category());
}
else if (is_dotdot(f))
{
auto parent = result.parent_path();
if (parent.empty())
result = pa.root_path();
else
result.swap(parent);
}
else
{
result /= f;
if (is_symlink(result, ec))
{
path link = read_symlink(result, ec);
if (!ec)
{
if (--max_allowed_symlinks == 0)
ec.assign(ELOOP, std::generic_category());
else
{
if (link.is_absolute())
{
result = link.root_path();
link = link.relative_path();
}
else
result = result.parent_path();
cmpts.insert(cmpts.begin(), link.begin(), link.end());
}
}
}
}
}
Это из GNU libstdc++.
Код то может и не говно, но от форматирования блевать тянет.
Зачем такое кто знает?
+1
В одном из минувших топиков приподымали тему POP SMDб я тоже решил напейсать генератор паролей к этой игре.
https://pastebin.com/ANHTMmeM
на основе исходников roman-pro
+1
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void PasswordChecker(void);
void sub_BB4F(unsigned char* Password);//subroutine $BB4F and so on...
void sub_BB21(void);
void sub_BBE0(void);
void sub_BBEA(void);
void SEC_SBC_6502(unsigned char operand);
void ADC_6502_simplified(unsigned char operand);
unsigned char Password[8];//$0766 to $076D in RAM, when a player enters it
unsigned char Invalidity=0;//$0764 in RAM
unsigned char Level;//$$0070 in RAM
unsigned char TimeTens;//$04c5 in RAM
unsigned char TimeOnes;//$04c6 in RAM
unsigned char Byte4BF, Byte17, Byte18;
unsigned char a, x;
unsigned char c=0;//carry flag
//former char Byte76A is Password[4] now, former char Byte76C is Password[6] now
void PasswordGenerator(void);
void BuildORTable(void);
unsigned char* BuildParticularLevelsArray(unsigned char DesiredLevel);//will think of it later...
void SimplifiedLevelGenerator(unsigned char* PassToFill,unsigned char Level);//finds just one 2nd,3rd,6th,8th digit combo
int main()
{
int Choice;
printf("Enter g if you'd like to generate a new password.\nEnter a to analyze an existing password.\n");
Choice=fgetc(stdin);
flushall();
if (Choice=='a')
PasswordChecker();
if (Choice=='g')
PasswordGenerator();
if (Choice=='s')//'level function' is basic when generating a pass
BuildORTable();//so here a bit of 'hidden' investigation, which will be useful
//if I ever decide to rewrite this prog to output all passes possible, not just one
printf("Press any key to quit.\n");
getch();
return 0;
}
void PasswordChecker(void)
{
char InputString[9];//one extra byte needed due to fgets
int i;
printf("Please enter your password to test:\n");
fgets(InputString,9,stdin);
for(i=0;i<8;i++)
{
if ((InputString[i]>57)||(InputString[i]<48))
{
printf("This string contains non-digits.\n");
return;
}
else
Password[i]=InputString[i]-48;//ascii to digit
}
sub_BB4F(Password);
if (Invalidity==1)
{
printf("This password is invalid.\n");
return;
}
printf("%s%d","Level: ",Level);
printf("%s%d%d\n"," Time: ",TimeTens,TimeOnes);
if (Level==15)
printf("Level 15 doesn't exist. So-called level 15 passwords are programming mistakes and cause system hang.\n");
if (Level==16)
printf("Level 16 doesn't exist. So-called level 16 passwords are programming mistakes and lead you to a buggy screen where Prince can't move.\n");
return;
}
void sub_BB4F(unsigned char* Password)//$BB4F
{
a=0;
x=0;
while (x<8)
{
a=a+Password[x];
x++;
}
if(a==0)
{
Invalidity=1;//$BBC0
return;
}
Byte17=Password[4];//$BB63
Byte18=Password[6];
Password[4]=0;
Password[6]=0;
sub_BB21();//$BB72,calculates and writes 1st checksum to Password[4], 2nd checksum to Password[6]
if (Password[4]!=Byte17)
{
Invalidity=1;
return;
}
Генератор паролей для игры Prince Of Perisa. Пришлось немного повозиться...
if (Password[6]!=Byte18)//$BB7C
{
Invalidity=1;
return;
}
Invalidity=0;//$BB85
a=Password[7];
sub_BBEA();
a=a&3;//$BB8E
a=a*4;
Password[7]=a;
a=Password[1];
sub_BBE0();//$BB98
a=a|Password[7];
Level=a+1;//+1 is my insertion
//if (Level!=1)//I chose to omit this $BBA2-$BBA4 code b/c it's unknown what byte at $06EE means
a=Password[0];
sub_BBE0();//$BBAA
TimeTens=a;
a=Password[3];
sub_BBEA();
TimeOnes=a;
return;//$BBBF
}
void SEC_SBC_6502(unsigned char operand)
{
c=1;
if ((a-operand)>=0)
a=a-operand;
else
{
a=a-operand+256;
c=0;
};
}
void ADC_6502_simplified(unsigned char operand)
{
if ((a+operand)<256)
a=a+operand;
else a=a+operand-256;
}
void sub_BB21(void)
{
x=0;
BB23: a=Password[4];
a=a+Password[x];
if(a<10)
{
BB46: Password[4]=a;//$BB46
x++;
if (x!=8)
goto BB23;
else return;//$BB4E
}
else //$BB2E
{
Byte4BF=a;
a=Password[6];
a++;//we came here b/c c=1
if (a<10)
goto BB3D;
else
SEC_SBC_6502(10);//can we get here? I doubt...
BB3D: Password[6]=a;
a=Byte4BF;
SEC_SBC_6502(10);//$BB44, no danger of negative result
goto BB46;
}
}
+1
Вскрытие покровов
Распродажа оборудования.
Я сегодня сытно поужинал, посему считаю вопрос закрытым.
Пароли от большинства клонов - qazxsw
Поскольку файки не зашкваренные, берут и владеют ими.
+1
Питушня #28
#1: https://govnokod.ru/26692 https://govnokod.xyz/_26692
#2: https://govnokod.ru/26891 https://govnokod.xyz/_26891
#3: https://govnokod.ru/26893 https://govnokod.xyz/_26893
#4: https://govnokod.ru/26935 https://govnokod.xyz/_26935
#5: (vanished) https://govnokod.xyz/_26954
#6: (vanished) https://govnokod.xyz/_26956
#7: https://govnokod.ru/26964 https://govnokod.xyz/_26964
#8: (vanished) https://govnokod.xyz/_26966
#9: https://govnokod.ru/27017 https://govnokod.xyz/_27017
#10: https://govnokod.ru/27045 https://govnokod.xyz/_27045
#11: https://govnokod.ru/27058 https://govnokod.xyz/_27058
#12: https://govnokod.ru/27182 https://govnokod.xyz/_27182
#13: https://govnokod.ru/27260 https://govnokod.xyz/_27260
#14: https://govnokod.ru/27343 https://govnokod.xyz/_27343
#15: https://govnokod.ru/27353 https://govnokod.xyz/_27353
#16: https://govnokod.ru/27384 https://govnokod.xyz/_27384
#17: https://govnokod.ru/27482 https://govnokod.xyz/_27482
#18: https://govnokod.ru/27514 https://govnokod.xyz/_27514
#19: https://govnokod.ru/27620 https://govnokod.xyz/_27620
#20: https://govnokod.ru/27816 https://govnokod.xyz/_27816
#21: https://govnokod.ru/27956 https://govnokod.xyz/_27956
#22: https://govnokod.ru/28143 https://govnokod.xyz/_28143
#23: https://govnokod.ru/28315 https://govnokod.xyz/_28315
#24: https://govnokod.ru/28362 https://govnokod.xyz/_28362
#25: https://govnokod.ru/28463 https://govnokod.xyz/_28463
#26: https://govnokod.ru/28481 https://govnokod.xyz/_28481
#27: https://govnokod.ru/28537 https://govnokod.xyz/_28537