Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
@echo off
cls
pushd "%~d0%~p0"
echo Current DIR: "%CD%"
if "%~1" == "talk_widget" goto talker
rem ////////////////////
:auth
echo Enter chat filename to connect ("abc" for example):
set /p chat=^>
echo Enter your nick:
set /p nick=^>
start call %0 talk_widget %chat% %nick%
rem ////////////////////
:listener
cls
call title "| Chat: %chat% | User: %nick% |"
if exist %chat%_history type %chat%_history
:list_go
ping 127.0.0.1 -n 1 -w 20 > nul
set oldtext=%text%
set /p text=<%chat%
if not "%text%" == "%oldtext%" echo %text%
goto list_go
rem ////////////////////
rem ////////////////////
rem // %2 - chat name //
rem // %3 - user nick //
rem ////////////////////
:talker
set chat=%~2
set nick=%~3
cls
call title "| Chat: %chat% | User: %nick% |"
call ::cs_in
echo (%TIME% %nick% connected)>%chat%
call ::cs_out
echo (%TIME% %nick% connected)>>%chat%_history
:talkloop
cls
echo Dear %nick%, type message to send:
set /p msg=^>
rem call ::cs_in
echo [%TIME% %nick%]: %msg%>%chat%
rem call ::cs_out
echo [%TIME% %nick%]: %msg%>>%chat%_history
goto talkloop
rem ////////////////////
rem ////////////////////
:cs_in
if exist "%chat%_cs" ping 127.0.0.1 -n 1 -w 50 > nul
set cs_value=%RANDOM%
:cs_in_loop
echo %cs_value%>%chat%_cs
set /p ret=<%chat%_cs
if "%ret%" == "%cs_value%" exit /b
ping 127.0.0.1 -n 1 -w 10 > nul
goto :cs_in_loop
rem ////////////////////
rem ////////////////////
:cs_out
del %chat%_cs
exit /b
rem ////////////////////
rem =========================================================
#ifndef SOCHET_H
#define SOCHET_H
// Сдвигает самую младшую единицу в сторону младшего разряда
#define shiftLast1Right(x) ( (x-1)^((x^(x-1)) >> 2) )
// Дописывает 1 после самой младшей единицы
#define add1AfterLast1(x) ( x | ((x^(x-1))+1) >> 2 )
template<class T>
class Sochet
{
public:
T value;
//////////////////////////////////////////////////////////////////////////
Sochet():value(0) { }
Sochet(int n, int k) {
firstTurn(n, k);
}
~Sochet() {
value = 0;
}
//////////////////////////////////////////////////////////////////////////
// Первая комбинация
// В первоначальной ситуации все К единиц располагаются в старших битах
void firstTurn(int n, int k) {
value = ( ( T(1) << k ) - 1 ) << (n - k);
}
// Нахождение следующей комбинации
// Возвращает false в случае последней комбинации
bool nextTurn()
{
// Отлов последней комбинации
if (value & (value+1) == 0)
return false;
// Условие по младшему биту: 1 или 0
if (value & 1)
{
value >>= 1;
nextTurn();
value = add1AfterLast1(value << 1);
} else
value = shiftLast1Right(value);
return true;
}
}
#endif // SOCHET_H
Шаблон перебора всех сочетаний/выборок в много разрядных числах.
Пример перебираемых чисел для N=5, K=3:
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111
// Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (C) Martin Fowler.
function changeLogo() {
var pane = document.getElementById("pane");
if(pane != null) {
pane.height = 240;
pane.width = document.body.clientWidth;
} else {
alert("it's sad, so sad...");
}
var logo = document.getElementById("logoJpg");
if(logo != null) {
logo.height = 50;
logo.width = document.body.clientWidth * 0.23;
} else {
alert(" ...it's a sad, sad situation, and it's getting more and more absurd");
}
}