Графическая последовательность представляет собой последовательность положительных целых чисел , обозначающих каждый число ребер для узла в простом графике . Например, последовательность 2 1 1
обозначает граф с 3 узлами, один с двумя ребрами и два с одним соединением.
Не все последовательности являются графическими последовательностями. Например, 2 1
это не графическая последовательность, потому что нет способа соединить два узла так, чтобы один из них имел два ребра.
задача
Вы возьмете последовательность целых чисел любым разумным способом. Это включает, но не ограничивается , массив целых чисел и его размер, связанный список целых чисел без знака и вектор двойных чисел. Вы можете предположить, что на входе не будет нулей. Вы также можете предположить, что вход сортируется от наименьшего к наибольшему или от наибольшего к наименьшему.
Вы должны вывести, является ли последовательность графической последовательностью. Истинное значение, если в противном случае это ложное значение.
Цель
Это код-гольф, цель которого - минимизировать количество байтов в вашей программе.
Testcases
Отсортировано по величине к минимуму
-> 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
источник
0
s для пустой последовательностиОтветы:
Mathematica, 25 байт
Да, еще один встроенный. (Принимает входные данные как список натуральных чисел.) Требуется загрузка
Combinatorica
пакета.источник
Python 2 (код выхода), 53 байта
Попробуйте онлайн!
Выходы через код выхода.
Использует версию алгоритма Гавела-Хакими. Повторно уменьшает как самый большой элемент, так
k
и самыйk
большой элемент (не считаяk
себя), что соответствует назначению ребра между двумя вершинами с этими степенями. Успешно завершается, когда список становится все нули. В противном случае, если индекс выходит за пределы, происходит ошибка с ошибкой. Любые созданные отрицательные значения также в конечном итоге приводят к ошибке за пределами допустимого диапазона.источник
CJam (20 байтов)
Набор онлайн-тестов, включающий несколько дополнительных тестов, которые я добавил, чтобы ловить ошибки в некоторых из моих попыток.
Это анонимный блок (функция), который принимает массив целых чисел в стеке и оставляет
0
или1
в стеке. Предполагается, что вход отсортирован по возрастанию.Входной массив может быть не пустым, но может содержать нули, в соответствии с ответом OP на мой запрос на предмет пустых входных данных.
рассечение
Это следует за ответом ОП в реализации алгоритма Гавела-Хакими .
источник
Python 2 , 108 байт
Вот моя реализация в Python. Я уверен, что это может быть побеждено более опытным игроком в гольф или математиком. Он реализует алгоритм Гавела-Хакими.
Попробуйте онлайн!
источник
[2,1,1]
возвращается,True
но[1,1,2]
возвращается0
- РЕДАКТИРОВАТЬ: только что увидел, что ваша спецификация сказала, что вы можете предположить, что он отсортирован (я видел тестовый пример9 4 5
).Haskell ,
102 98 9594 байтаПопробуйте онлайн! Использование:,
f [3,3,2,2,1,1]
возвращаетTrue
илиFalse
. Предполагается, что входные данные несодержат нулей иотсортированы в порядке убывания, как это разрешено в задаче.Объяснение:
Изменить: Это похоже на Havel-Hakimi, упомянутый в других ответах, хотя я не знал об этом алгоритме при написании ответа.
источник
length r < x
не совсем верно, так как[1,0]
вернет true, но не существует простого графа с 2 узлами с одним и нулевым ребрами.Желе , 12 байт
Монадическая ссылка, принимающая список, который выдает,
1
если ответы согласуются в противном случае0
.Попробуйте онлайн! Или посмотрите набор тестов .
Как?
источник
05AB1E ,
2625 байтПопробуйте онлайн!
объяснение
источник
JavaScript (ES6),
82 8076 байтСпасибо ETHproductions за сохранение большого количества байтов!
использование
Выход
источник
map((a,b)=>b<$?a-1:a)
с ,map(a=>a-($-->0))
чтобы сохранить 4 байта.R , 20 байтов
Mathematica не единственный язык со встроенными модулями! ;-)
igraph
Пакет должен быть установлен. Принимает ввод как вектор целых чисел.источник
Рубин , 90 байт
Портировано из этого вопроса, который оказался дубликатом этого. Использует Гавел-Хакими, поскольку именно этот вопрос упоминается в этом вопросе.
Попробуйте онлайн!
источник
05AB1E , 19 байтов
Порт JonathanAllan 's Желе ответ , так что обязательно проголосуйте за него !!
Попробуйте онлайн или проверьте все тесты .
Объяснение:
источник
Stax ,
1412 байтЗапустите и отладьте его
Эта программа обрабатывает пустые и несортированные входы.
источник