Итак, пытаюсь сделать программу для построения графика. Есть таблица, написана на HTML (18 ячеек). в средине таблице стоит число "1". Принцип роботы программы таков: Я задаю число, через которое будет стоять "2" (то есть число ячеек от 1 (которая находится в центре экрана)) Двойка соответсвенно может распологатся и по вертикале и по горизонтали (можно её поставить сверху, снизу, справа, слева от "1". Потом ставлю число, через которое будет стоять "3" от "2" и от "1" (ну и т.д. до числа "9"). То есть должны выполнятся все условия. (например "1" от "2" распологается на растоянии "2" ячеек, "2" от "3" на растоянии 3 ячеек и на растоянии "1" ячейки от "1 " ну и т.д.). Дело в том что отсчет по ячейкам может итти и по вертикали и по горизонтали одновременно (Например: можно отсчитать 1 ячейку вправо и потом еще 3 вверх = 4 ячейки; 2 вправо 4 вниз =6 ячеек ну т.д.). Я думал просчитать все возможные варианты и просто вывести их на экран (присвоить каждой ячейке переменную ну и выводить нужный график, который уже мной просчитан, т.е. ввожу например растояние от "1" до "2" =3 от "2" до "3" =4 от "3" до "1" =2 ну и т.д. и если эти переременные (растояния) совпадают то выводится график. Программа пишется на РНР + НТМL. Я так прикинул что просчитать все возможные варианты просто нереально. (а если нужно постоить график из 50-ти чесел?) Так вот вопрос до вас: "Как можно облегчить задачу постоения такого графика?"" ___________________________________________ Помогите кто знает , очень нужно!
http://www.softtime.ru/info/graph.php правда у них на сайте в скриптах часто ошибки так что чуть что придется поковырятся
Спасибо, правда хоть что то ... Вопрос: Можно ли присвоить переменной растояние между двух точек на экране (тоесть ввожу растояние и мне ставит "1" и "2" на таком заданом растоянии в пикселях.) и чем можно его измерять? ну и соответственно его менять (по необходимости ну естественно через форму.) PS: Мне не нужно соединять эти точки (цифры) между собой, мне просто нужно их расставить в том порядке, что я задам.
я помню в javascript было что то такое. я видел один скрипт который за мышкой надпись по экрану гоняет. посмотри javascript фунцкии . и можно по onclick отправлять ajax запрос который будет загонять переменную скажем в базу. а потом по всем переменным че то там делать. если я правильно понял вопрос.
посмотри функции на подобее offsetTop или offsetLeft . позиция относительно родительского элемента. если сделаешь какой нить div . а потом будешь по событию click вызывать offsetTop и offssetLeft и можно завести массив. номер точки. и ее координаты. насчет нарисовать посмотри библиотеку pChart . походу то что нужно
SpRyt Насколько понимаю вашу задачу - у вас есть некий массив расстояний между соседними элементами и таблица, в которую надо поместить все элементы так, чтобы: 1) расстояние между элементами было выдержано 2) мы не вышли за пределы таблицы 3) Не помещали новый элемент в ту ячейку, которая уже занята Если я угадал - то название топика должно звучать "Помогите с алгоритмом, который позволяет разместить K элементов, связанных определенным условием, в матрице M x N". И тогда вам могут помочь Если я не угадал - напишите подробнее, что же вам нужно
Итак, чтобы все было понятно, привожу несколько скриншотов, так сказать..... Таблица расстояний между элементами: _:1 2 3 4 5 6 7 8 9 1 0 1 1 2 3 1 2 4 3 2 1 0 2 3 4 2 3 5 4 3 1 2 0 1 2 2 3 5 4 4 2 3 1 0 1 3 4 6 5 5 3 4 2 1 0 5 5 7 6 6 1 2 2 3 4 0 1 3 2 7 2 3 3 4 5 1 0 2 1 8 4 5 5 6 7 3 2 0 1 9 3 4 4 5 6 2 1 1 0 "_:" добавил для того, потому что форум не обращает внимае на пробели и смещает рядки. И вот что получится, если это отобразить, так сказать, графиком: 2 1 6 7 9 8 3 4 5 (расстояние между цифрами равно 1) Ну а теперь обьясню: Между "1" и "2" расстояние равно 1 (ясно), между "9" и "3" равно 4 (считаем: цифра 7= раз, цифра 6 = два, цифра 1 = три, цифра 3 равно 4) ну и так дальше... Смотрите матрицу. (Этот график можно стоить по разному, крутить его на 180 градусов и т.п., можно, например ветку, что идет вправо "вывернуть" влево.) PS: Почти угадали, но 3 третьим пунктом я не соглашусь... То есть в одну ячейку можно присвоить (я так думаю) и 2 и 3 ...... значений (потом будет ясно,где какое число будет находятся), но нужно, чтобы расстояние было выдержано. PS: Надеюсь что вы поняли, если нет, скажите что. Помогите написать, очень прошу.
в принципе всё понятно но если матрица будет единичной ну или содержать хотябы больше 4-х единиц в строке? График-то двухмерный, а значит доступны только четыре связи в четырех направлениях, если это простая таблица. Тут надо продумать структуру графика при обработке и выводе. Советую прибегнуть к классам. Ещё надо решить, может ли "расстояние" в одну сторону быть не таким, как в другую, типа как: _:1 2 3 1 0 1 2 2 2 0 1 3 1 2 0 (тут при построени графика можно зациклиться) В принципе задача простая, но муторная.
Вполне согласен, что простая и муторная, вот и по этому прошу вашей помощи. Я думал рашить эту задачу так: сделал таблицу 18х18 на хтмл, каждой ячейке "присвоить" масив, ну и потом расставлять все возможные комбинации (все что может быть, а потом с помощью If else выбирать "нужные" PS: график строится в 2D
первое, что пришло в голову: - задаёшься расстоянием, по которому будешь строить график, например s=1 - ищешь все элементы, где встречается такое расстояние (или исключаешь элементы, где его нет) и находишь "угловой" элемент, где s=1 встречается один раз - начинаешь от углового элемента через другие элементы двигаться к следующим элементам, расстояние до которых равно s, при этом попутно создаёшь два массива элементов первый: $A[$i]=$n; // $i - номер элемента, $n - сколько раз встречается элемент в графике второй - древовидный, для твоего примера ---- 2 1 6 7 9 8 3 4 5 ---- $B=array( 2=>array(1=>array(6=>array(7=>array(9=>array(8=>0))),array(3=>array(4=>array(5=>0))))) ); // ну или заменить это классами, будет проще и удобнее - чтобы не зациклить выполнение скрипта, надо учесть следующее: если $n получается больше единицы, значит i-тый элемент встречается больше одного раза, значит график зациклен. Тут либо игнорируется связь, либо ставится ссылка. Тут же можно провести некоторые другие аналитические проверки.. далее самое интересное - по массиву $B строится график. в нём будут свои нюансы (по расположению ветвей, стилизации..) тут могут помочь дополнительные функции, типа [определить максимальную длину/путь оставшейся ветви] тут проблем быть не должно, если имеется опыт работы с php и таблицами
SpRyt На питоне решение задачи выглядит так: http://pastebin.com/tEdPY6KZ Основные моменты постарался прокомментировать, поэтому можете портировать решение на пхп Алгоритм, к сожалению, страдает некоторыми ограничениями - все элементы результирующего "графика" должны соседствовать с другими по вертикали или горизонтали (т.е. соединения по диагонали или "оторванный" от остальной части элемент - не допускаются). Это можно проверить так - в каждой строке должен быть хотя бы один единичный элемент И алгоритм не распознает петли С первым я еще могу представить как бороться, а вот над вторым думать - лень З.Ы. если не большой секрет - а для чего вам это нужно?
Это и мне первое пришло в голову, я тоже так и думал сделать, но очень муторно как то. Посмотрим.... Будем разбиратся и пробовать... Раставляем числа везде, где возможно, а потом проверяем растояние (можно ли средствами ПХП?) между елементами. PS: дело в том, что я пообещал учительнице сделать эту программу и она соответсвенно поставит мне гуд оценку (а может и не одну), ну и за одно написать свою первую программу на пхп (именно программу).
средствами php можно всё.. или почти всё (вопос реализации) но этот метод не рационален, имхо. winbinder, devel studio..?
Думаю с девел студио будет полегче.... Метод может не и рациональный, но на первое время сойдет. (как проверить расстояние между елементами?)
а может эту матрицу загнать в двумерный массив? тогда расстояние находится путем: индекс второго - индекс первого, причем если считаешь по горизонтали, то вычитаешь индексы второго измерения, а если по вертикали - то первого.
Вот еще вопросик: можно как то узнать координаты точки(цифры) на экране, (не прибегая к ее перемещению и таким образом узнаем координаты)?
В PHP есть ли функция проверки расстояния между цифрами? ( не xочу создать условие если расстояние столько то, то......, а если не, то.....) ПОМОГИТЕ МНЕ!!!
Ткните пальцем что скачать, от куда и в какой последовательности ставить... Как его запустить? ЗЫ: извените за тупость. ЗЫ: писал на пхп, получилось около 900 строк кода и это без функций. Вот мучаюсь и никак не могу разобратся как сказать пхп чтобы он упорядочил их так, чак мне нужно! ХЕЛП!!!