tło
Inspirowane tym pytaniem Unix.SE (i oczywiście moją własną odpowiedzią ).
Gdy adres IP jest określony dla interfejsu, jest on często podawany w postaci dziesiętnej z kropkami:
a.b.c.d e.f.g.h
gdzie a.b.c.d
jest rzeczywisty adres i e.f.g.h
maska sieci.
Maska sieci, gdy jest reprezentowana w postaci binarnej, jest w zasadzie wiązką 1
bitów, po której następuje wiązka 0
bitów. Gdy maska sieci jest bitowo ANDowana względem podanego adresu IP, wynikiem będzie część sieciowa adresu lub po prostu adres sieciowy . Zostanie to zaprogramowane w tablicy tras hosta, aby host wiedział, że może wysłać wszystko przez sieć do tego interfejsu.
Adres rozgłoszeniowy dla sieci jest uzyskiwany poprzez pobranie adresu sieciowego (z góry) i ustawienie wszystkich bitów hosta na 1. Adres rozgłoszeniowy służy do wysyłania na wszystkie adresy w obrębie danej sieci.
Wyzwanie
Biorąc pod uwagę adres IP z kropkami dziesiętnymi i prawidłową maskę sieci jako dane wejściowe, podaj adres sieci i adres rozgłoszeniowy jako dane wyjściowe, również w formacie kropkowo-dziesiętnym.
- Dane wejściowe muszą być adresem i maską jako dwa ciągi w formacie kropkowo-dziesiętnym. Możesz przekazać to jako 2 oddzielne ciągi, jako listę lub tablicę 2 elementów ciągowych lub pojedynczy ciąg z adresem i maską oddzielonymi rozsądnym separatorem.
- Format wyjściowy podlega takim samym ograniczeniom jak format wejściowy.
Przykłady
Input Output
192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255
100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200
1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255
10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255
źródło
252
w sobie.10.24.0.0 10.27.255.255
?Odpowiedzi:
JavaScript (ES6), 92 bajty
Wyjaśnienie
Test
Pokaż fragment kodu
źródło
MATL , 47 bajtów
Ta odpowiedź używa bieżącej wersji (4.0.0) języka.
Przykład
Wyjaśnienie
źródło
Pyth,
4442 bajtyWypróbuj online. Zestaw testowy.
Oczekuje, że dane wejściowe będą takie jak tablica
["10.25.30.40", "255.252.0.0"]
.źródło
PHP, 126 bajtów
Z danymi wejściowymi w $ n:
Hexdump:
I bardziej czytelna wersja:
preg_filter
wymaga użycia pojedynczej instrukcji we wzorcu zastępowania podczas korzystania ze
flagi, więc „dołączam” wynik obliczeń do 5. i wyższych wartości $ a, ponieważ nigdy nie są one ponownie używane.źródło
Perl,
9085 bajtówzawiera +6 dla
-pF/\D/
Stosowanie:
Bardziej czytelny:
-F/\D/
Rozgałęzia zasilanie na nie-cyfr i przechowuje je w@F
.źródło
Współczynnik, 103 bajty
Ładny.
Nie golfowany:
źródło
PHP , 74 bajty
W trybie autonomicznym dane wejściowe są wprowadzane za pomocą wiersza polecenia:
Wypróbuj online!
Lub jako funkcja 80 bajtów :
Wypróbuj online!
Nie golfił
PHP ma ładne (aczkolwiek z długimi nazwami funkcji) wbudowane funkcje do obsługi kropkowanego ciągu IPv4 na binarny iz powrotem.
Wynik
źródło