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

Сравнение случайного списка с упорядоченным списком в Java?

Я работаю над идеей, которую я надеялся использовать в моде Minecraft. В основном я хочу иметь объект, содержащий список классов (например, предметы Minecraft). Затем я хочу, чтобы игрок бросал предметы в контейнер, чтобы создать рецепт. Если кто-то играл с Thaumcraft, то он понял основную идею.

Кто-нибудь здесь, где я потерялся.

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

Так что в основном я ищу это;

  • Список 1 (список игрока) *Всегда будет определенный порядок, так как это рецепт

  • Список 2 (внутренний список контейнера) * Может быть случайным

Мне нужно выполнить поиск в контейнере, чтобы увидеть, соответствует ли список 1 списку 2.

Как я мог пойти на это? Является ли использование списка (буквально классом списка Java) правильной идеей?

28.01.2016

  • Скопируйте их во временные списки и отсортируйте перед сравнением друг с другом. Или, если список не может содержать дубликатов, создайте временные наборы и сравните их. 28.01.2016
  • Создание копии списков было бы хорошим началом. Вы говорите использовать наборы, если у меня есть требование, когда мне нужно 3 предмета вместо одного? 28.01.2016
  • Наборы на самом деле не позволят вам иметь 3 предмета, поскольку вы не можете иметь повторяющиеся записи в наборе. 28.01.2016
  • Если сравнивать Наборы, то порядок не имеет значения. Но наборы не могут содержать дубликатов, поэтому, если у вас есть ситуация, когда вам нужны одни и те же предметы дважды или более, наборы не являются хорошим вариантом. 28.01.2016
  • Итак, если бы мне нужно было указать количество определенного элемента, мне пришлось бы использовать другой подход? 28.01.2016

Ответы:


1

Простым решением было бы отсортировать каждый список. Тогда вы можете сделать сравнение по пунктам. Если списки имеют одинаковый размер и элементы в каждом индексе совпадают, то и сами списки совпадают.

Даже если порядок списка 1 не может измениться, просто клонируйте его, отсортируйте клон и сравните его с отсортированной версией списка 2.

28.01.2016
Новые материалы

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

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

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

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

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

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

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