Nano Hash - криптовалюты, майнинг, программирование

Проверить, присутствует ли элемент в массиве #minizinc

Я хотел бы проверить, какое число от 1 до 5 не встречается в группе массивов, и поместить это число (или числа) в другой массив.

g=2;

set of int: GROUPS = 1..g; 

groups = [{1, 3}, {2,5}];

p=5;

set of int: PEOPLE = 1..p;  

Я пробовал так, но не получается.

int: peopleInGroup= (g*g);
set of int: INGROUP = 1..peopleInGroup;
array [INGROUP] of var int: inGroup;  

int: peopleNotGroup= c-(g*g);
set of int: NOTGROUP = 1..peopleNotGroup;
array [NOTGROUP] of var int: notGroup;     


constraint forall(i in groups,person in i) (if sum(j in PEOPLE-1)  (i==person then inGroup[i]=person else notGroup[i]=person  endif)); 

Ответы:


1

Если groups является буквальным -как в вашем вопросе-, тогда вы можете использовать набор и список понимания , описанных на стр. 22 из этого руководства - для достижения вашей цели .

например,

set of int: DOM = 1..5;
set of int: population = DOM;
array[1..2] of set of DOM: groups = [{1, 3}, {2, 5}];


% array initialization

array [int] of var DOM: in_array =
               [i | i in DOM where exists(g in groups) (i in g)];
array [int] of var DOM: out_array =
               [i | i in DOM where not exists(g in groups) (i in g)];

% set initialization

var set of DOM: in_set =
               {i | i in DOM where exists(g in groups) (i in g)};
var set of DOM: out_set =
               {i | i in DOM where not exists(g in groups) (i in g)};


solve satisfy;

output [
    "in_set=", show(in_set), "\n",
    "out_set=", show(out_set), "\n",
    "in_array=", show(in_array), "\n",
    "out_array=", show(out_array), "\n"
];

примечание: var можно исключить из определения всех переменных, здесь я использую его только потому, что в противном случае flatzinc не распечатал бы их содержимое в стандартном выводе.

Результат:

~$ mzn2fzn example.mzn ; flatzinc example.fzn
in_array = array1d(1..4, [1, 2, 3, 5]);
in_set = {1, 2, 3, 5};
out_array = array1d(1..1, [4]);
out_set = {4};
----------

Вот сгенерированная промежуточная flatzinc модель:

array [1..2] of set of int: groups = [{1, 3}, {2, 5}];
array [1..4] of var 1..5: in_array :: output_array([1..4]) = [1, 2, 3, 5];
var set of 1..5: in_set :: output_var = {1, 2, 3, 5};
array [1..1] of var 4..4: out_array :: output_array([1..1]) = [4];
var set of 1..5: out_set :: output_var = 4..4;
solve satisfy;
27.10.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..