Graficzny sekwencja jest sekwencją dodatnich liczb całkowitych każdego oznaczającą liczbę krawędzi dla węzła w prosty wykres . Na przykład sekwencja2 1 1
oznacza wykres z 3 węzłami, jeden z 2 krawędziami i 2 z jednym połączeniem.
Nie wszystkie sekwencje są sekwencjami graficznymi. Na przykład 2 1
nie jest sekwencją graficzną, ponieważ nie ma sposobu połączenia dwóch węzłów, aby jeden z nich miał dwie krawędzie.
Zadanie
Weźmiesz ciąg liczb całkowitych dowolną rozsądną metodą. Obejmuje to między innymi tablicę liczb całkowitych i jej rozmiar, połączoną listę liczb całkowitych bez znaku oraz wektor podwójnych. Możesz założyć, że na wejściu nie będzie zer. Możesz również założyć, że dane wejściowe są posortowane od najmniejszej do największej lub od największej do najmniejszej.
Musisz podać, czy sekwencja jest sekwencją graficzną. Prawdziwa wartość, jeśli w przeciwnym razie jest to wartość fałszywa.
Cel
To jest golf golfowy, którego celem jest zminimalizowanie liczby bajtów w twoim programie
Przypadki testowe
Posortowane od największego do najmniejszego
-> True
3 3 3 2 2 2 1 1 1 -> True
3 3 2 2 1 1 -> True
3 3 2 -> False
8 1 1 1 1 1 1 1 1 -> True
1 1 1 1 -> True
1 1 1 -> False
9 5 4 -> False
źródło
0
s dla pustej sekwencjiOdpowiedzi:
Mathematica, 25 bajtów
Tak, kolejne wbudowane. (Traktuje dane wejściowe jako listę liczb całkowitych dodatnich.) Wymaga załadowania
Combinatorica
pakietu.źródło
Python 2 (kod wyjścia), 53 bajty
Wypróbuj online!
Dane wyjściowe za pośrednictwem kodu wyjścia.
Wykorzystuje wersję algorytmu Havel-Hakimi. Wielokrotnie zmniejsza zarówno największy element, jak
k
ik
największy element (nie licząck
się), co odpowiada przypisaniu krawędzi między dwoma wierzchołkami o tych stopniach. Kończy się pomyślnie, gdy lista staje się zerami. W przeciwnym razie, jeśli indeks jest poza zakresem, błąd kończy się niepowodzeniem. Wszelkie utworzone wartości ujemne również ostatecznie prowadzą do błędu przekroczenia granicy.źródło
CJam (20 bajtów)
Zestaw testów online zawierający kilka dodatkowych testów, które dodałem, aby wykryć błędy w niektórych moich próbach.
Jest to anonimowy blok (funkcja), który pobiera tablicę liczb całkowitych na stos i opuszcza
0
lub1
na stos. Zakłada się, że dane wejściowe są sortowane rosnąco.Tablica wejściowa może nie być pusta, ale może zawierać zera, zgodnie z odpowiedzią OP na moje zapytanie na temat pustych danych wejściowych.
Sekcja
Jest to zgodne z odpowiedzią OP na wdrożenie algorytmu Havel-Hakimi .
źródło
Python 2 , 108 bajtów
Oto moja implementacja w Pythonie. Jestem pewien, że może go pokonać bardziej doświadczony golfista lub matematyk. Implementuje algorytm Havela-Hakimi.
Wypróbuj online!
źródło
[2,1,1]
zwraca,True
ale[1,1,2]
zwraca0
- EDYCJA: właśnie zobaczyłem, że twoja specyfikacja powiedziała, że możesz założyć, że jest posortowana (widziałem przypadek testowy9 4 5
).Haskell ,
102 98 9594 bajtówWypróbuj online! Zastosowanie:
f [3,3,2,2,1,1]
zwracaTrue
lubFalse
. Zakłada, że dane wejściowenie zawierają zer isą sortowane w kolejności malejącej, jak dozwolone w wyzwaniu.Wyjaśnienie:
Edycja: Wydaje się, że jest to zgodne z Havel-Hakimi wspomnianym w innych odpowiedziach, chociaż nie znałem tego algorytmu podczas pisania odpowiedzi.
źródło
length r < x
nie jest całkiem poprawne, ponieważ[1,0]
zwróci wartość true, ale nie ma prostego wykresu z 2 węzłami z jedną i zerową krawędzią.Galaretka , 12 bajtów
Monadyczny link akceptujący listę, która daje wynik,
1
jeśli odpowiedzi są spójne inaczej0
.Wypróbuj online!Lub zobacz zestaw testowy .
W jaki sposób?
źródło
05AB1E ,
2625 bajtówWypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
82 8076 bajtówDzięki produktom ETH za oszczędność wielu bajtów!
Stosowanie
Wynik
źródło
map((a,b)=>b<$?a-1:a)
zemap(a=>a-($-->0))
aby zapisać 4 bajty.R , 20 bajtów
Mathematica nie jest jedynym językiem z wbudowanymi funkcjami! ;-)
igraph
Pakiet musi być zainstalowany. Pobiera dane wejściowe jako wektor liczb całkowitych.źródło
Rubin , 90 bajtów
Przeniesione z tego pytania, które okazało się duplikatem tego. Używa Havela-Hakimi, ponieważ był to ten, o którym wspomniano w tym pytaniu.
Wypróbuj online!
źródło
05AB1E , 19 bajtów
Port z JonathanAllan 's Jelly odpowiedź , więc upewnij się, że go głosujesz !!
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Stax ,
1412 bajtówUruchom i debuguj
Ten program obsługuje puste i nieposortowane dane wejściowe.
źródło