-
1. Data: 2012-07-14 17:55:06
Temat: sortowanie
Od: "identyfikator: 20040501" <N...@g...pl>
a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
wychodziło coś takiego:
213.186.127.10
213.186.127.11
213.186.127.12
213.186.127.13
213.186.127.14
213.186.127.2
213.186.127.28
213.186.127.3
213.186.127.4
213.186.127.5
213.186.127.6
213.186.127.7
213.186.127.8
213.186.127.9
-
2. Data: 2012-07-14 18:31:13
Temat: Re: sortowanie
Od: PK <k...@n...pl>
On 2012-07-14, identyfikator: 20040501 <N...@g...pl> wrote:
> a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
ip: a.b.c.d
x := (a * 256 + b) * 256 + c) * 256 + d
Sortujesz x'sy i odwracasz do formy adresów.
Jakby nie patrzeć: IP to po prostu 32-bitowa liczba binarna.
Chyba że chcesz napisać coś już pod IPv6 (128 bitów). Wtedy najlepiej
podzielić adres na części (tzn. np 4 liczby), co trochę zwiększa
liczbę porównań.
W wariancie ekstremalnym możesz podzielić cały adres na pojedyncze
cyfry (zapisane w wektorze), co jest równoważne porównywaniu stringów.
Musisz tylko powstawiać brakujące zera.
W ogólności jest to metoda koszmarnie wolna, ale warto o niej pamiętać.
pozdrawiam,
PK
-
3. Data: 2012-07-14 23:19:38
Temat: Re: sortowanie
Od: Maciej Sobczak <s...@g...com>
W dniu sobota, 14 lipca 2012 17:55:06 UTC+2 użytkownik identyfikator: 20040501
napisał:
> a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
> wychodziło coś takiego:
> 213.186.127.10
> 213.186.127.11
> 213.186.127.12
> 213.186.127.13
> 213.186.127.14
> 213.186.127.2
> 213.186.127.28
> 213.186.127.3
> 213.186.127.4
> 213.186.127.5
> 213.186.127.6
> 213.186.127.7
> 213.186.127.8
> 213.186.127.9
A dlaczego ma tak nie wychodzić?
Czyli: po co w ogóle chcesz te adresy sortować? Np. gdybyś chciał sortować daty, to
kolejność sortowania powinna odpowiadać kolejności chronologicznej i wtedy rozumiem,
co chcesz zrobić - ale adresy IP? Jakie jest znaczenie tej kolejności i dlaczego
powyższa kolejność jest zła?
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
4. Data: 2012-07-15 00:21:15
Temat: Re: sortowanie
Od: PK <k...@n...pl>
On 2012-07-14, Maciej Sobczak <s...@g...com> wrote:
> Jakie jest znaczenie tej kolejności i dlaczego powyższa kolejność
> jest zła?
Ponieważ adres ip to specyficznie zapisana liczba naturalna i ta
sekwencja wyżej nie odpowiada porządkowi. A po co sortować? Najlepiej
mieć jakiś praktyczny problem, ale fun i łamigłówka to też niezły
powód :).
Sporadycznie konwencje podobne do IP wykorzystuje się przy kodowaniu
jakichś produktów (tzn. masz x cech opisanych liczbami i zamieniasz
je jednoznacznie na jednego INTa - czasem wygodniejszego.
Nawet raz dostałem takie zadanie w procesie kwalifikacyjnym :D.
Tam też sortowanie ułatwiało sprawę.
W ogólności sortuje się najczęściej po to, żeby przyspieszać
wyszukiwanie :)
pozdrawiam,
PK
-
5. Data: 2012-07-15 11:05:30
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "identyfikator: 20040501" napisał w wiadomości grup
dyskusyjnych:jts4oq$l0$...@n...news.atman.pl...
>a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
>[...]
Panienka z biura - otwórz Excel, przepisz adresy, znajdź guzik "sortuj".
MSCB (Certified Blonde/Brunette) - użyj Excela, wizard importuj, rozdziel
adresy na kolumny, posortuj, wyeksportuj. Oczywiście zrób to z poziomu
VBScript albo innego C#.
MSCP (Microsoft Certified Professional) -
http://office.microsoft.com/pl-pl/access-help/sortow
anie-adresow-ip-HA010062718.aspx
Gimbus - funkcja rand(0) do sortowania - ułóż listę adresów IP w kolejności
losowej, jeżeli to jest dobra kolejność przestań, jeżeli zła - uruchom
program jeszcze raz. Bardziej zdolni mogą rozbudować to do algorytmu
genetycznego (odrzucane rozwiązania pokazują programowi czego ma unikać!)
Trochę wolno działa, ale jaki fun!
Liceum: zapisz adresy cyframi rzymskimi. Dzwonek przerwie twoje męki.
Japońsko-Polska Szkoła Czegoś: zapisz adresy słownie, używając języka
japońskiego. (Hint: użyj Javy i Google Translatora.)
A'la SETI: poproś kolegów z FB - każdemu daj w ramach distributed computing
część adresów do sortowania. Oczywiście najlepiej zadziała masz 4-literowy
nick Gaga, Doda itp.
Old school: wyrównaj między kropkami dopisując zera na początku (sed),
posortuj (sort), usuń wiodące zera (sed).
Very Old School: użyj perforatora i kolatora.
Hacker way: awk '!/myip/' # no i logi czyste
K&R - napisz sobie funkcję ustalającą kolejność, wywołaj qsort. Ale
wcześniej oczywiście musisz się nauczyć C.
C++ - jest coś do tego w Boost. Musi być. Tam, albo w STL.
Java z GoF - napisz fasadę do abstrakcyjnej kolekcji posortowanych obiektów
z referencjami do instancji KonkretnyAdres. Te obiekty są posortowane, więc
nie musisz ich sortować.
Współczesny teoretyk: poszukaj w Google "stabilne algorytmy sortowania".
Teoretyk z lat 90-tych: poszukaj w bibliotece "Algorytmy".
Teoretyk z lat 70-tych: przecież potrafisz zacytować odpowiednią stronę z
książki Niklausa ?!
Teoretyk z lat 60-tych: a co to _będzie_ IP? Liczba? To _będziemy_ sortować
liczby! I tak zapiszemy w RFC.
Teoretyk, lata 30-te: trzeba tylko znaleźć odpowiednią grupę permutacji.
Potrzebna są: arkusze papieru, rotory, tasiemka dalekopisowa i ewentualnie
Turing do pomocy.
PHP-owiec: http://forum.php.pl/index.php?showtopic=79649
Student - potrafi wpisać w przeglądarkę
http://www.google.pl/search?q=sortowanie+ip .
Mniej zdolny student - potrafi wpisać w przeglądarkę "sortowanie ip".
Bardziej zdolny student - potrafi wpisać w przeglądarkę "ip sort".
Użytkownik iPhone: użytkownicy iPhone nie muszą sortować adresów IP.
Użytkownik Usenet - "a może Panowie znają jakiś cwany algorytm sortowania
adresów IP?"
.......
Na razie tyle, ale gorąco zachęcam do dopisywania. W szczególności zostały
nam COBOL i PL/1, języki funkcyjne, komputery kwantowe, bazy danych (SQL?),
CUDA, Agile, układy CMOS i co tylko zechcecie.
Jest weekend - liczę na waszą pomysłowość!
-
6. Data: 2012-07-15 11:30:17
Temat: Re: sortowanie
Od: "Jordan Szubert" <u...@j...us.to>
Dnia 14-07-2012 o 17:55:06 identyfikator: 20040501
<N...@g...pl> napisał(a):
> a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby
> nie wychodziło coś takiego:
> 213.186.127.10
> 213.186.127.11
> 213.186.127.12
> 213.186.127.13
> 213.186.127.14
> 213.186.127.2
> 213.186.127.28
> 213.186.127.3
> 213.186.127.4
> 213.186.127.5
> 213.186.127.6
> 213.186.127.7
> 213.186.127.8
> 213.186.127.9
a po co cwany, czemu nie oczywiste rozwiązanie?
Python 3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from socket import inet_aton
>>> from pprint import pprint as pp
>>> pp(ips)
['213.186.127.8',
'213.186.127.3',
'213.186.127.4',
'213.186.127.28',
'213.186.127.7',
'213.186.127.14',
'213.186.127.10',
'213.186.127.13',
'213.186.127.6',
'213.186.127.11',
'213.186.127.2',
'213.186.127.12',
'213.186.127.9',
'213.186.127.5']
>>> ips.sort(key=inet_aton)
>>> pp(ips)
['213.186.127.2',
'213.186.127.3',
'213.186.127.4',
'213.186.127.5',
'213.186.127.6',
'213.186.127.7',
'213.186.127.8',
'213.186.127.9',
'213.186.127.10',
'213.186.127.11',
'213.186.127.12',
'213.186.127.13',
'213.186.127.14',
'213.186.127.28']
>>>
dla C masz http://linux.die.net/man/3/inet_aton
dla innych języków też powinna być ta funkcja dostępna
--
Jordan Szubert
-
7. Data: 2012-07-15 15:33:25
Temat: Re: sortowanie
Od: "identyfikator: 20040501" <N...@g...pl>
dla C masz http://linux.die.net/man/3/inet_aton
dla innych języków też powinna być ta funkcja dostępna
fajne fajne, ale php
-
8. Data: 2012-07-15 23:15:44
Temat: Re: sortowanie
Od: Maciej Sobczak <s...@g...com>
W dniu niedziela, 15 lipca 2012 11:05:30 UTC+2 użytkownik slawek napisał:
> >a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
> >[...]
>
> Panienka z biura
[...]
Dobre! :-D
> Na razie tyle, ale gorąco zachęcam do dopisywania.
Agile/Scrum/XP - piszemy unit test, który wrzuca kilka adresów do nieistniejącej
funkcji sortującej i sprawdzamy jakimś jedwabistym i koniecznie najnowszym
frejmłorkiem zastępującym asserty, czy faktycznie posortowało. Uff - unit test
zrobiony to mamy luz, bo dokumentacji i tak nie trzeba pisać a demo dopiero za
miesiąc.
Inżynier CISCO - piszemy skrypt konfiguracyjny ustawiający daną listę adresów jako
tablicę routingu i pałujemy to w pierwszy z brzegu router, potem każemy mu tą tablicę
wypisać na konsolę administracyjną.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
9. Data: 2012-07-15 23:35:37
Temat: Re: sortowanie
Od: "Jordan Szubert" <u...@j...us.to>
Dnia 15-07-2012 o 15:33:25 identyfikator: 20040501
<N...@g...pl> napisał(a):
> dla C masz http://linux.die.net/man/3/inet_aton
> dla innych języków też powinna być ta funkcja dostępna
>
> fajne fajne, ale php
https://www.google.com/search?q=php+inet_aton
--
Jordan Szubert
-
10. Data: 2012-07-16 00:21:45
Temat: Re: sortowanie
Od: Edek Pienkowski <e...@g...com>
Dnia Sun, 15 Jul 2012 14:15:44 -0700, Maciej Sobczak napisal:
> W dniu niedziela, 15 lipca 2012 11:05:30 UTC+2 użytkownik slawek napisał:
>
>> >a może Panowie znają jakiś cwany algorytm sortowania adresów IP? żeby nie
>> >[...]
>>
>> Panienka z biura
> [...]
>
> Dobre! :-D
>
>> Na razie tyle, ale gorąco zachęcam do dopisywania.
> Agile/Scrum/XP - piszemy unit test, który wrzuca kilka adresów do
> nieistniejącej funkcji sortującej i sprawdzamy jakimś jedwabistym i
> koniecznie najnowszym frejmłorkiem zastępującym asserty, czy faktycznie
> posortowało. Uff - unit test zrobiony to mamy luz, bo dokumentacji i tak
> nie trzeba pisać a demo dopiero za miesiąc.
>
> Inżynier CISCO - piszemy skrypt konfiguracyjny ustawiający daną listę
> adresów jako tablicę routingu i pałujemy to w pierwszy z brzegu router,
> potem każemy mu tą tablicę wypisać na konsolę administracyjną.
Świerzak pół roku po magisterce - muszę udawać, że jestem zajęty czym innym,
później na spokojnie rozpracuję temat
Ekspert - co on mi tym d..ę zawraca!
Senior - polecam "Wstęp do Algorytmów" autorstwa Starosława Gurowskiego,
wydanie II, lepsze moim zdaniem od pierwszego wydania z 1999 roku,
przeczytaj to zrozumiesz
Pnący Się W Górę - może porozmawiajmy o sortowaniu, przy okazji pomożesz
mi z moim problemem nad którym aktualnie pracuję, patrz tutaj ten kawałek
kodu, zobacz co on robi
Architekt - wiesz co, jestem teraz zajęty, przynieś jutro schemat
UML na spotkanie poświęcone wirtualizacji w nowym modelu architektury,
tam tematy sieciowe też będą poruszane
Junior Architekt - o co wszystkim chodzi z tym IP, powariowali na
punkcie praw autorskich !?
Analityk - mógłbyś podać źródło Twoich danych? Bo mi one wyglądają
na wyssane z palca
Alien (istota z kosmosu nie żyjąca na ziemi) - odpiszemy na te adresy,
dziękujemy wam Ziemianie
Edek