ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

05.11.2007, 02:09
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
Сообщение от RedBull@12
у етбя такие массивы
massiv1[x] и massiv2[y]
где X = 0...X, ну или что-то типа того
а Y = 0...Y, ну или похожее
так?
нет,
массивы генерируются так:
PHP код:
function GetPlos($mas)
{
$r=0;
$res=(($mas[3]-$mas[1])*($mas[2]-$mas[0]));
for ($i=$mas[0];$i<$mas[2];$i++)
{
for ($j=$mas[1];$j<$mas[3];$j++)
{
$m[$i][$j]=true;
}
}
return $m;
}
$mfile=file('prams.txt');
$arr=array();
for ($i=0;$i<count($mfile);$i++)
{
$mas=explode(' ',$mfile[$i]);
//$arr=$arr+GetPlos($mas);
//print_r(GetPlos($mas)); echo '<br>';
GetPlos($mas);// вот эта функция возвращает массивы.
}
в файле
имеется 2 прямоугольника. один полностью закрыт другим (начало в 0,0, заканчивается один в 2,2 другой в 3,3 (коодинаты ссотв..))
надо сделать так чтобы не перечислялись два раза те которые имеют общие точки..
|
|
|

05.11.2007, 10:57
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
нее.. вообщем в файл пишется - координаты левой нижней точки прямоугольника затем координаты правой верхней точки. в строку. 4 числа. строк может быть много. надо посчитать площадь всех прямоугольников, но в случае наслоения площадь наслоения (те участки где они наслоились) должна учитватся только 1 раз...
вот у тя 13 получилось один прямоугольник 2*2=4 другой 3*3=9
9+4=13 НО один полностью закрыт другим
и его площадь учитывать ненадо.
***
??*
??*
Последний раз редактировалось MegaDeth; 05.11.2007 в 11:11..
|
|
|

05.11.2007, 13:44
|
|
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме: 482261
Репутация:
58
|
|
MegaDeth, честно не вкурил.
Твой скрипт отгда не работает у него во всех значениях получается 1...а в последних по любому должно быть часть нулей
Код:
Array (
--------[0] => Array (
-------------------------[0] => 1
-------------------------[1] => 1
--------)
--------[1] => Array (
-------------------------[0] => 1
-------------------------[1] => 1
--------)
)
Array (
---------[0] => Array (
--------------------------[0] => 1
--------------------------[1] => 1
--------------------------[2] => 1
--------)
---------[1] => Array (
--------------------------[0] => 1
--------------------------[1] => 1
--------------------------[2] => 1
--------) [2] => Array (
--------------------------[0] => 1
--------------------------[1] => 1
--------------------------[2] => 1
--------)
)
=>наш скрипт написан не верно.
иначе нет вообще смысла в этом скрипте
Последний раз редактировалось RedBull@12; 05.11.2007 в 14:03..
|
|
|

05.11.2007, 12:59
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
решение было просто до ужоса. мож кому пригодится...
PHP код:
<?php
$m=array();
$r=0;
function GetPlos($mas)
{
GLOBAL $m,$r;
$res=(($mas[3]-$mas[1])*($mas[2]-$mas[0]));
for ($i=$mas[0];$i<$mas[2];$i++)
{
for ($j=$mas[1];$j<$mas[3];$j++)
{
if (!isset($m[$i][$j])) {
$m[$i][$j]=true; $r++; }
}
}
return $m;
}
$mfile=file('prams.txt');
$arr=array();
for ($i=0;$i<count($mfile);$i++)
{
$mas=explode(' ',$mfile[$i]);
GetPlos($mas);
}
echo $r;
?>
RedBull@12, большое спасибо что пытался помоч...
Последний раз редактировалось MegaDeth; 05.11.2007 в 13:04..
|
|
|

05.11.2007, 14:31
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
неее, все как надо работает.
вот сам попробуй в файл тхт запиши
0 0 2 4
0 0 3 3
потом написуй на бумаге по клеткам два прямоугольника левый нижний угол - в нач. координат, правый верхний одного - (2,4) второго - (3,3).
эти два прямоугольника будут занимать площадь 11 клеток. скрипт выдает праавду )))
|
|
|

05.11.2007, 16:31
|
|
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме: 482261
Репутация:
58
|
|
Сообщение от MegaDeth
неее, все как надо работает.
вот сам попробуй в файл тхт запиши
0 0 2 4
0 0 3 3
потом написуй на бумаге по клеткам два прямоугольника левый нижний угол - в нач. координат, правый верхний одного - (2,4) второго - (3,3).
эти два прямоугольника будут занимать площадь 11 клеток. скрипт выдает праавду )))
Так про что и речь тут мы складываем два массива.
Сейасч напишу скрипт,елси получится
|
|
|

05.11.2007, 17:13
|
|
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме: 482261
Репутация:
58
|
|
MegaDeth, смотри алгоритм,ну который я могу предположить, но пока у меня пробелмы с реализацией:
1-Вычисляем максимальную длину прямоугольника.
1111111
1111111
0000000
0000000
2-Вычисляем максимальную ширину прямоугольника.
1100000
1100000
1100000
1100000
3-Создаем двумерный массив[длина][ширина], все элеменеты в массиве имеют значение 0.
по идеи у нас должно получиться что-то типа вот этого:
0000000
0000000
0000000
0000000
4-Далее заполняем/складываем по очереди все прямоугольнки с нашим нулевым массивом.
и унас получится что-то типа вот этого:
1111111
1111111
1100000
1100000
5-Дальше смотрим сколько у нас значений TRUE(1). через элелентарный цикл.
Ну походу это то что ты хотел получить, полагаю что это не совсем рационально,но елси данный цикл процедура выполняется не слишком часто и нет ограничения по памяти то оптимальный вариант.
|
|
|

05.11.2007, 17:54
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
RedBull@12, да все норм я сделал с графикой даже )
посути, перед заполнением массива проверяется существование уже имеющаегося ключа и 2 раза не посчитает его счетчик =)))
PHP код:
<?php
$m=array();
$r=0;
$st=0;
$img=imagecreatetruecolor(500,500);
$color=imagecolorallocate($img,255,255,255);
function GetPlos($mas)
{
GLOBAL $m,$r,$st,$img,$color;
$res=(($mas[3]-$mas[1])*($mas[2]-$mas[0]));
//echo $res.'<br>';
$st=$st+$res;
$color=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
for ($i=$mas[0];$i<$mas[2];$i++)
{
for ($j=$mas[1];$j<$mas[3];$j++)
{
//if (!isset($m[$i][$j])) {
if (!isset($m[$i][$j])) {
$m[$i][$j]=true; $r++;
imagesetpixel($img,$i+100,-$j+100,$color);
}
}
}
return $m;
}
$mfile=file('prams.txt');
$arr=array();
for ($i=0;$i<count($mfile);$i++)
{
$mas=explode(' ',$mfile[$i]);
GetPlos($mas);
}
header('Content-Type: image/png');
imagepng($img);
//header('Content-Type: text/html');
echo $r."<br> Общая площадь ".$st;
?>
|
|
|

05.11.2007, 18:04
|
|
Участник форума
Регистрация: 13.06.2006
Сообщений: 215
Провел на форуме: 2364210
Репутация:
49
|
|
Нужно вставть скрипт tak.ru (рекламные ссылки) (пример скрипта)
<script language="JavaScript" src="http://b80.takru.com/in.php?id=88964"></script>
Так вот надо чтобы этот скрипт, появлялся при заходе пользователя на страницу (всплывающее окно), но после того как пользователь нажмет ЗАКРЫТЬ или нажмет по одной из ссылок, всплывающее окно не появлялось. Как это сделать?
|
|
|

05.11.2007, 22:09
|
|
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме: 482261
Репутация:
58
|
|
Сообщение от КИНГ
Нужно вставть скрипт tak.ru (рекламные ссылки) (пример скрипта)
<script language="JavaScript" src="http://b80.takru.com/in.php?id=88964"></script>
Так вот надо чтобы этот скрипт, появлялся при заходе пользователя на страницу (всплывающее окно), но после того как пользователь нажмет ЗАКРЫТЬ или нажмет по одной из ссылок, всплывающее окно не появлялось. Как это сделать?
код ява скрипта...
PHP код:
function OpenLoad() {
var win = window.open('','preview','width=550,height=550,left=0,top=0,screenX=0,screenY=0,resizable=1,scrollbar=0,status=0');
var content = '<script language="JavaScript" src="http://b80.takru.com/in.php?id=88964"></script>';
win.document.write(content);
}
А дальше в боди пропиши
PHP код:
<body onload="OpenLoad()">
будет работать.
По крайне мере должно  ,у меня работает
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|