· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ZEN —› Complex data types in Perl

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Авг 6, 2003 18:08:46

Меня зае№%#@* эти сложные структуры данных в Перле!!! Кто-нибудь знает линк на приличный турториал, и, желательно, на русском, т.к. английский меня тоже зае№%#@*!!!

Как пропарсить массив из ссылок???

Вот, положим, кладу я это дело так:

push (@temp_array, [@molAB]);

Кстати, а где отличие от

push (@temp_array, \@molAB);

Что, в первом случае массив своеобразно копируется, а во втором кладется только ссылка? Так?
А шо потом мне с этим делать???
К отдельному элементу можно:

$temp_array[0]->[11] = "yes";

А как ко всем элементам $temp_array[0]?
А кто-нибудь знает форумы перла? Там меня обматюкают, назовут идиотом, но объяснят!


Дата: Авг 6, 2003 18:15:20

Бля, вроде получилось.
Надо отдереференсить, фух, выговорил.

Где-то так:
		foreach my $t ($temp_array[$i])
		{
			print @$t;
		}


Дата: Авг 6, 2003 18:18:04

www.perl.ru :-)))))))))


Дата: Авг 6, 2003 18:30:01

Я просмотрел те форумы. Я бы там был главным гуру :) А если честно, у ребят трудности с использованием пакетов. Лишь один-единственный на весь форум топик что-то там говорил про работу с хешами на уровне XS-интерфейса. Усе :( Отстойный, между нами, форум :((


Дата: Авг 6, 2003 18:36:58

отдереференсить
Ты в порядке? :))))
Говорю переберайтесь на PHP :))))))))))))))

Как пропарсить массив из ссылок???

Да, помню эту хорошую тему :))))
Вот в этом ПРЕЛ Дзенский язык.. А если честно -- отстой, потому что чел, который его придумал потерял всякий вкус к архитектуре ЯВУ.

Это единственный минус, из-за которого я ушёл от Перл :)


Дата: Авг 6, 2003 18:38:17

volodya
Ты блин что не знаешь где профи???
ЭЭх, чайник :))))

xpoint.ru!!!!!


Дата: Авг 6, 2003 18:48:12

Edmond, а из PHP скрипта тоже можно сконвертить exe'шник?


Дата: Авг 6, 2003 18:56:31 · Поправил: volodya

Как бы так сказать. Действительно, синтаксис языка - эти кракозяблики - порой кажется, что он придуман сумасшедшим!

Вот мое последнее решение:
	my $i = 0;	
	while (defined $temp_array[$i])
	{
		my $s = $temp_array[$i];
		my $temp = join("\t", @$s);
		...
		$i++;
	}


Может, придет bsl_zcs, меня раскритикует. Да, кстати, помнишь топик об избавлении массива от избыточности. Ну, о моем алогритме из вежливости помолчим. Я решал это дело как сишник. bsl_zcs решал его в духе перла, но дико неэкономично! Твое решение изящнее, но и оно паскудно. Меня Славка далеко послал к algorithms.*.ru - сайт забыл. Короче, к поразрядной сортировке. Бум думать.


Дата: Авг 6, 2003 18:57:49

Asterix
Не знаю на счет экзешника, но есть Zend. Ах как кто-то когда-то меня на взлом этой штуки имел, а, Димон :)


Дата: Авг 6, 2003 19:03:07

А что такое Zend?


Дата: Авг 6, 2003 19:10:31

volodya
А забей, есть круче ZEND :)))
Они там что-то новенькое подпрятаил :)))
Zend -- прикольные мужики!!!


Дата: Авг 6, 2003 19:11:19

Только пишут на Java ФУУУУУУ


Дата: Авг 6, 2003 19:15:58

У меня есть 3.5.0. Кажись, знаешь, где его достать тоже :)

Asterix - читай zend.com. Там неплохо расписано. Смысл - байткода.


Дата: Авг 6, 2003 19:35:00

volodya
Твое решение изящнее, но и оно паскудно.
Моё? Моё изящнее??
Изящнее было у bsl_zcs!!!
А эффективнее не знаю...
Это надо было бы проверить!!!! Вообще операции с хешами медленнее (но не факт для ПЕРЛ!!!).

но и оно паскудно

Ах, не бери на себя ЭТОТ ГРЕХ!!!!
Я его решил с точки зрения эффективности в ПЕРЛ!!!
Если бы я его решал на АСМ, то мама родная -- и свинье понятно, что решил бы по другому!!!

А для Прела я повторюсь, что Перл язык интерпретируемый, и по этому как и все интерпретируемые языки Он плохо выполлняет циклы!!!
Я тебе это писал. Поэтому вариант с предварительной сортировкой -- ЭТО НЕОБХОДИМОСТЬ
Это как если бы я взял и часть кода вынес из твоего цикла
А функции встроенные в Перл выполняются быстрее.
Я всегда помню об этом на PHP. Поэтому мышление кодера в Перл и мышление кодера в Asm -- ЭТО БОЛЬШИЕ РАЗНЫЕ ВЕЩИ.

Если в PHP я пытаюсь создать код так, чтобы большинство выполняли функции PHP, то в АСМЕ наоборот.

А насчёт алгоритма.. Так пожалуста.. ЩАз будет!!!


Дата: Авг 6, 2003 20:45:36

volodya
А я и думать не буду!!!
Чайник я чайник, зато у меня есть интуиция!!!

Короче
Итак, вуаля, Алгоритм (НЕТ НЕ СОРТИРОВКИ!!!!!) очистки массива от избыточных элементов
Да, в математике есть несколько теорем.. но я их не знаю.. А ну и фиг...
Я и сам после двух Грибов как Пифагор :)))

Итак

======================================================

Алгоритм выборки с кешем.
(с) Edmond

Исходные данные:

1. Массив A
2. Кеш массив B
3. Абстракт выхода (для чего? для того, чтобы не уточнять куда пойдёт результат. Ясно?)

======================================================
1. Указатель на начало массива и буффера упорядовачевания

-= Состояние:

1. Указатель текущего элемента
Это, то что мы сейчас читаем из массива
2. Указатель цепочки неодинаковых элементов
Это указатель того элемента, с которого мы пока идём в массиве, и не встретили одинаковый элемент. (!!!)

Цепочкой называется совокупность различных элементов, идущих подряд в массиве

5. Элемент сравнения (просто переменная содержащая элемент массива (может быть регистр проца))

-=-=-=-=-= Для первого элемента =-=-=-=-=-=


2.1. Читаем элемент, заносим его в буфер упорядовачевания
2.2. Сравниваем следующий элемент. Если он равен, --> абстрактный выход,
2.3 Иначе заносим в буфер, если БОЛЬШЕ в конец, иначе в начало, и сдвигаем буфер.
2.4 Если новый элемент больше предыдущего, мы его просто заносим в буфер.

Теперь внимательно!!!

Предположим, что элемент 2 мы занесли в буфер и он больше элемента 1
Это значит, что ЭЛЕМЕНТ СРАВНЕНИЯ = первому элементу (тому что меньше второго)

Тогда.

3. Если встретился элемент который больше текущего, тогда он сравнивается с элементами кеша, пока не станет меньше.
Если после сравнения с элементами буфера он не был равен, и не стал меньше какого то элемента,
то он заносится в кеш.
При этом заметьте!!!

Алгоритм занесения элемента в кеш следующий:

Элемент заносится в место перед ЭЛЕМЕНТОМ кеша, который его больше.
То есть все элементы в кеше упорядочены по возрастанию.

====================================================================
Если буфер переполнен
===================================

Теперь самое важное!!!!!!

Если кеш переполнен, то происходит следующее.

ВАРИАНТ ТУПОЙ:

Выбрасывается самый младший элемент и копируется в начало массива (там типа анализ уже прошёл)

В том, случае, если во время анализа массива находится элемент, который меньше чем тот, что в буфере,
То он сравнивается с тем, что в начале массива.
И если он меньше элемента в массиве, он занимает его место...

ВАРИАНТ УМНЫЙ (фукнция распределения)

=================== ЗАБЕЙ СЕНЯ ====================

В кеш НЕ ЗАНОСЯТСЯ ЭЛЕМЕНЫ которые
a) меньше всех
b) либо больше всех

Из кеша выбрасываются элементы, которые
a) Больше всех
b) меньше всех


Элементы которые меньше всех -- в начало массива, которые больше в конец.
Если приходится выбрасывать элементы из вершины кеша, то анализ начинается с конца массива
(то есть с верхнего элемента)

================== ЗАБЕЙ СЕНЯ ==========================



======================================================

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039