🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
9 messages
9 total messages Started by Anonim Anonimowy Sun, 23 Dec 2012 19:42
Perl tablice
#52488
Author: Anonim Anonimowy
Date: Sun, 23 Dec 2012 19:42
1 lines
1428 bytes
Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla pierwszego (dodanego).
Re: Perl tablice
#52489
Author: Stachu 'Dozzie' K.
Date: Sun, 23 Dec 2012 20:30
13 lines
1905 bytes
On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla pierwszego (dodanego).

Znak zapytania kończy pytanie.

To, co ty chcesz, przypomina kolejkę FIFO. Nie widziałem jeszcze języka
ogólnego przeznaczenia, który ma to wbudowane (chyba że w bibliotece
standardowej). Użyj CPAN albo stwórz sobie własny moduł na podstawie
Tie::Array.

-- 
Secunia non olet.
Stanislaw Klekot
Re: Perl tablice+ [TIEARRAY?]
#52496
Author: Andrzej Adam Filip
Date: Sun, 23 Dec 2012 20:35
13 lines
1610 bytes
Anonim Anonimowy <amkrankruleuen@gmail.com> pisze:
> Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić
> tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie
> gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie
> elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla
> pierwszego (dodanego).

Popatrz na "perldoc -f tie" fragment TIEARRAY.
Można zdefiniować klasę/pakiet "udające" tablice.

To powyżej nie jest specjalnie pomocne dla "średnio zaawansowanych" 
ale powinno dostarczyć słów kluczowych do szukania bardziej
"łopatologicznych" wersji.
Re: Perl tablice
#52490
Author: Anonim Anonimowy
Date: Sun, 23 Dec 2012 21:22
30 lines
2663 bytes
W dniu niedziela, 23 grudnia 2012 21:30:16 UTC+1 użytkownik Stachu 'Dozzie' K. napisał:
> On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> 
> > Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla pierwszego (dodanego).
> 
> 
> 
> Znak zapytania kończy pytanie.
> 
> 
> 
> To, co ty chcesz, przypomina kolejkę FIFO. Nie widziałem jeszcze języka
> 
> ogólnego przeznaczenia, który ma to wbudowane (chyba że w bibliotece
> 
> standardowej). Użyj CPAN albo stwórz sobie własny moduł na podstawie
> 
> Tie::Array.
> 
> 
> 
> -- 
> 
> Secunia non olet.
> 
> Stanislaw Klekot

Nie, FIFO spełnia zupełnie inną rolę, nie chce, aby pierwszy element na wejściu stawał się pierwszym na wyjściu bo to by nie miało sensu. Problem rozwiązałem w zupełnie inny i szybki sposób korzystając z zakresów, dodaje element na początku, tworzy mi się tablica 101 elementowa, a potem sam robie z niej 100 elementową [0..99].

Pozdrawiam.
Re: Perl tablice
#52491
Author: Stachu 'Dozzie' K.
Date: Sun, 23 Dec 2012 23:04
34 lines
2779 bytes
On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> W dniu niedziela, 23 grudnia 2012 21:30:16 UTC+1 użytkownik Stachu 'Dozzie' K. napisał:
>> On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
>> 
>> > Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla pierwszego (dodanego).
>> 
>> 
>> 
>> Znak zapytania kończy pytanie.
>> 
>> 
>> 
>> To, co ty chcesz, przypomina kolejkę FIFO. Nie widziałem jeszcze języka
>> 
>> ogólnego przeznaczenia, który ma to wbudowane (chyba że w bibliotece
>> 
>> standardowej). Użyj CPAN albo stwórz sobie własny moduł na podstawie
>> 
>> Tie::Array.

> Nie, FIFO spełnia zupełnie inną rolę, nie chce, aby pierwszy element
> na wejściu stawał się pierwszym na wyjściu bo to by nie miało sensu.
> Problem rozwiązałem w zupełnie inny i szybki sposób korzystając
> z zakresów, dodaje element na początku, tworzy mi się tablica 101
> elementowa, a potem sam robie z niej 100 elementową [0..99].

A teraz opisz, w jaki sposób się różni twoje rozwiązanie od FIFO.

I wyjaśnij, czemu uważasz przepisywanie za każdym razem wszystkich stu
elementów (i to dwukrotnie!) za szybkie.

-- 
Secunia non olet.
Stanislaw Klekot
Re: Perl tablice
#52495
Author: orcus
Date: Sun, 23 Dec 2012 23:20
20 lines
1821 bytes
On 2012-12-23, Stachu 'Dozzie' K. <dozzie@go.eat.some.screws.spammer.invalid> wrote:
>> Nie, FIFO spełnia zupełnie inną rolę, nie chce, aby pierwszy element
>> na wejściu stawał się pierwszym na wyjściu bo to by nie miało sensu.
>> Problem rozwiązałem w zupełnie inny i szybki sposób korzystając
>> z zakresów, dodaje element na początku, tworzy mi się tablica 101
>> elementowa, a potem sam robie z niej 100 elementową [0..99].
>
> A teraz opisz, w jaki sposób się różni twoje rozwiązanie od FIFO.

AFAIR FIFO ma dwie operacje - dodawanie na koniec i pobieranie z
początku. Dostępu do dowolnego elementu w czasie stałym nie gwarantuje.
Co więcej autor nie mówi nic o wyjmowaniu elementów.

Taką implementację łatwo stworzyć - wystarczy trzymać indeks początku,
wstawiając element obniżać go o jeden i liczyć modulo wielkość
"kolejki", czyli w tym wypadku 100. 

-- 
Pozdrawiam
orcus
Re: Perl tablice
#52492
Author: Anonim Anonimowy
Date: Mon, 24 Dec 2012 00:00
75 lines
4069 bytes
W dniu poniedziałek, 24 grudnia 2012 00:04:16 UTC+1 użytkownik Stachu 'Dozzie' K. napisał:
> On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> 
> > W dniu niedziela, 23 grudnia 2012 21:30:16 UTC+1 użytkownik Stachu 'Dozzie' K. napisał:
> 
> >> On 2012-12-23, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> 
> >> 
> 
> >> > Witam, czy da się w szybki i wygodny sposób w perlu jakoś określić tablice w ten sposób, aby podać jej maksymalną wielkość, a w momencie gdy dodaje do niej element i jest pełna to żeby nastąpiło przesunięcie elementów w prawo, skasowanie ostatniego i zwolnienie miejsca dla pierwszego (dodanego).
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> Znak zapytania kończy pytanie.
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> To, co ty chcesz, przypomina kolejkę FIFO. Nie widziałem jeszcze języka
> 
> >> 
> 
> >> ogólnego przeznaczenia, który ma to wbudowane (chyba że w bibliotece
> 
> >> 
> 
> >> standardowej). Użyj CPAN albo stwórz sobie własny moduł na podstawie
> 
> >> 
> 
> >> Tie::Array.
> 
> 
> 
> > Nie, FIFO spełnia zupełnie inną rolę, nie chce, aby pierwszy element
> 
> > na wejściu stawał się pierwszym na wyjściu bo to by nie miało sensu.
> 
> > Problem rozwiązałem w zupełnie inny i szybki sposób korzystając
> 
> > z zakresów, dodaje element na początku, tworzy mi się tablica 101
> 
> > elementowa, a potem sam robie z niej 100 elementową [0..99].
> 
> 
> 
> A teraz opisz, w jaki sposób się różni twoje rozwiązanie od FIFO.
> 
> 
> 
> I wyjaśnij, czemu uważasz przepisywanie za każdym razem wszystkich stu
> 
> elementów (i to dwukrotnie!) za szybkie.
> 
> 
> 
> -- 
> 
> Secunia non olet.
> 
> Stanislaw Klekot

Ty zakładasz, że ja chcę w pewien sposób kolejkować odczytywane elementy, a mi zależy na tablicy którą będę mógł odczytać w dowolny sposób, np. środkowy element w czasie rzeczywistym, zapytałem ogólnie, a nie do konkretnego zastosowania. Po drugie jakie jakie dwukrotne przepisywanie?! Matematyka się kłania...
Załóżmy, że mam tablice i wykonam takie operacje:
@array = (1..10);
@array = @array[0..3];

Gdzie tu dwukrotne przepisanie? Co więcej głowy sobie uciąć nie dam, że perl nie jest wyczulony na tego typu operacje i nie przepisze danych na zupełnie nowe adresy tylko po prostu skróci tablice zamiast całą przepisywać. Moja tablica będzie po prostu z czasem zapełniana elementami, a mi zależy na tym, żeby tych elementów nigdy nie było więcej niż 100, dodanie nowego elementu nie wiąże się z tym, że na pewno w tym samym czasie chce odczytać tablice...
Re: Perl tablice
#52493
Author: Stachu 'Dozzie' K.
Date: Mon, 24 Dec 2012 00:39
45 lines
3438 bytes
On 2012-12-24, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
[...]
>> A teraz opisz, w jaki sposób się różni twoje rozwiązanie od FIFO.
>>
>> I wyjaśnij, czemu uważasz przepisywanie za każdym razem wszystkich stu
>> elementów (i to dwukrotnie!) za szybkie.

> Ty zakładasz, że ja chcę w pewien sposób kolejkować odczytywane elementy, a mi zależy na tablicy którą będę mógł odczytać w dowolny sposób, np. środkowy element w czasie rzeczywistym, zapytałem ogólnie, a nie do konkretnego zastosowania.

Bo wiesz, FIFO o stałym maksymalnym rozmiarze się nie da zrobić na
tablicy. Tylko cicho o tym, bo jak się mój kod o tym dowie, to
przestanie działać.

A ten "czas rzeczywisty", mój drogi, to się nazywa czasem stałym
("O(1)").

> Po drugie jakie jakie dwukrotne przepisywanie?! Matematyka się kłania...
> Załóżmy, że mam tablice i wykonam takie operacje:
> @array = (1..10);
> @array = @array[0..3];
>
> Gdzie tu dwukrotne przepisanie?

A jak dokładasz element na początku tablicy, jeszcze przed tym kodem, to
niby co się robi? Hyc, i system operacyjny alokuje miejsce przed
tablicą? W garbate aniołki może wierzysz?

> Co więcej głowy sobie uciąć nie dam, że perl nie jest wyczulony na tego typu operacje i nie przepisze danych na zupełnie nowe adresy tylko po prostu skróci tablice zamiast całą przepisywać.

Tego by się można spodziewać po pop(), a nie po przypisaniu z zakresem.
Nie za dużo ty wymagasz od optymalizatora, który ma być przede wszystkim
szybki, a nie dawać szybki kod?

> Moja tablica będzie po prostu z czasem zapełniana elementami, a mi
> zależy na tym, żeby tych elementów nigdy nie było więcej niż 100,
> dodanie nowego elementu nie wiąże się z tym, że na pewno w tym samym
> czasie chce odczytać tablice...

To po prostu ignoruj dopisanie wszystkiego, co próbuje wleźć do
zapełnionej tablicy. Chyba że znowu spieprzyłeś sprawę nieprecyzyjnie
opisując oczekiwany skutek.

-- 
Secunia non olet.
Stanislaw Klekot
Re: Perl tablice
#52494
Author: Anonim Anonimowy
Date: Mon, 24 Dec 2012 01:09
94 lines
4091 bytes
W dniu poniedziałek, 24 grudnia 2012 01:39:48 UTC+1 użytkownik Stachu 'Dozzie' K. napisał:
> On 2012-12-24, Anonim Anonimowy <amkrankruleuen@gmail.com> wrote:
> 
> [...]
> 
> >> A teraz opisz, w jaki sposób się różni twoje rozwiązanie od FIFO.
> 
> >>
> 
> >> I wyjaśnij, czemu uważasz przepisywanie za każdym razem wszystkich stu
> 
> >> elementów (i to dwukrotnie!) za szybkie.
> 
> 
> 
> > Ty zakładasz, że ja chcę w pewien sposób kolejkować odczytywane elementy, a mi zależy na tablicy którą będę mógł odczytać w dowolny sposób, np. środkowy element w czasie rzeczywistym, zapytałem ogólnie, a nie do konkretnego zastosowania.
> 
> 
> 
> Bo wiesz, FIFO o stałym maksymalnym rozmiarze się nie da zrobić na
> 
> tablicy. Tylko cicho o tym, bo jak się mój kod o tym dowie, to
> 
> przestanie działać.
> 
> 
> 
> A ten "czas rzeczywisty", mój drogi, to się nazywa czasem stałym
> 
> ("O(1)").
> 
> 
> 
> > Po drugie jakie jakie dwukrotne przepisywanie?! Matematyka się kłania...
> 
> > Załóżmy, że mam tablice i wykonam takie operacje:
> 
> > @array = (1..10);
> 
> > @array = @array[0..3];
> 
> >
> 
> > Gdzie tu dwukrotne przepisanie?
> 
> 
> 
> A jak dokładasz element na początku tablicy, jeszcze przed tym kodem, to
> 
> niby co się robi? Hyc, i system operacyjny alokuje miejsce przed
> 
> tablicą? W garbate aniołki może wierzysz?
> 
> 
> 
> > Co więcej głowy sobie uciąć nie dam, że perl nie jest wyczulony na tego typu operacje i nie przepisze danych na zupełnie nowe adresy tylko po prostu skróci tablice zamiast całą przepisywać.
> 
> 
> 
> Tego by się można spodziewać po pop(), a nie po przypisaniu z zakresem.
> 
> Nie za dużo ty wymagasz od optymalizatora, który ma być przede wszystkim
> 
> szybki, a nie dawać szybki kod?
> 
> 
> 
> > Moja tablica będzie po prostu z czasem zapełniana elementami, a mi
> 
> > zależy na tym, żeby tych elementów nigdy nie było więcej niż 100,
> 
> > dodanie nowego elementu nie wiąże się z tym, że na pewno w tym samym
> 
> > czasie chce odczytać tablice...
> 
> 
> 
> To po prostu ignoruj dopisanie wszystkiego, co próbuje wleźć do
> 
> zapełnionej tablicy. Chyba że znowu spieprzyłeś sprawę nieprecyzyjnie
> 
> opisując oczekiwany skutek.
> 
> 
> 
> -- 
> 
> Secunia non olet.
> 
> Stanislaw Klekot

Moglibyśmy tak jeszcze do rana wymieniać się poglądami... Tak czy owak operacja na 100 elementach nie jest godna jakiejś optymalizacji bo w tym przypadku nawet się nie odczuje różnicy, a posłuży za to fakt, że kod jest krótki i nie trzeba ładować nowych modułów.

Pozdrawiam.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads