Форум программистов, компьютерный форум, киберфорум
D (DLang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/71: Рейтинг темы: голосов - 71, средняя оценка - 4.96
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446

Как быстро проверить массив на наличие равных элементов

05.02.2015, 22:17. Показов 16622. Ответов 51

Студворк — интернет-сервис помощи студентам
Можно написать такую функцию:
C++
1
2
3
4
5
6
int busy(int j) {
    foreach (i; 0 .. j)
        if (a[i] == a[j])
            return 0;
    return 1;
}
Но меня интересует: есть ли в D уже готовые функции, которые возвращают 0/1 или индексы равного элемента одинаковых элементов массива.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2015, 22:17
Ответы с готовыми решениями:

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

Проверить наличие в нем хотя бы двух равных между собой элементов
Здраствуйте! Задано массив A ( n ) . Проверить наличие в нем хотя бы двух равных между собой элементов . Немогу написать код.Написал,...

Проверить массив на наличие нулевых элементов, в первый из этих элементов записать число
Мне нужно проверить массив на наличие в нем элементов со значением 0. А потом в первый из этих элементов со значением 0 записать число.

51
09.03.2015, 00:29  [ТС]
Студворк — интернет-сервис помощи студентам

Не по теме:

Ev_Hyper, создал на официальном форуме D тему про string-int[] array, так они до сих пор там помнят про священные войны на D :D:

OP is fighting a loosing battle in flame war on some obscure forum. F#
enthusiast trolls OP into solving stupid puzzles that are trivial in F#
(or any ML-family language) and clumsy in C-family languages.

In language holy wars the only winning move is not to play.
Сейчас тему про find()/remove() создам. Они опять подумают, что это священные войны.

0
Заблокирован
09.03.2015, 00:52
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Не знаю. Спрошу на официальном форуме. Может быть, и нормальное. А, может быть, и нет. Ведь D до сих пор находится в активной разработке.
Dennis Ritchie, Такое поведение не нормально. Это довольно серъезная ошибка. Возможно я нарушил какое-то правила языка D, поэтому и решил уточнить. Теперь буду ждать ответа специалистов с оф. форума.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Они опять подумают, что это священные войны.
Силу ЯП определяют те, кто на нем пишут. Так что в решениях "задач" "выиграет" тот, на чьей стороне более опытные программисты. Так какой критерий сравнения ЯП можно считать справедливым?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.03.2015, 01:28  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Возможно я нарушил какое-то правила языка D, поэтому и решил уточнить.
Да, как я и думал, правильно нужно писать так (поведение абсолютно нормальное):
C++
1
writeln(find(a = remove(a, 1), 5).length != 0);
Предварительно сохранив массив a в другом массиве.
Yes it is normal, there are two potential points of confusion:
- remove mutates the input range and returns a shortened slice to
the range which excludes the removed element.
- remove takes an index as its second argument, not an element.
Как я понял, дело связано с указателями.
Yes, works as designed. `remove` writes over removed slots and
returns shrunk (shrinked?) slice. It does not shrink the range at
the call site. To update `a`, write the result of `remove` to it:
C++
1
writeln(find(a = remove(a, 1), 5).length != 0);
Добавлено через 11 минут

Не по теме:

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Так какой критерий сравнения ЯП можно считать справедливым?
Силу ЯП определят более опытный программист и сам ЯП.
Вот вам простой пример:
Вы, конечно, можете начать утверждать, что Java/C# и т. д. сильнее/мощнее, чем C++. Но я же знаю: какие языки затачивали под загребание денег, а какие для людей, которые просто любят программирование. И тут бесполезно оправдываться.

0
Заблокирован
09.03.2015, 01:41
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Да, как я и думал, правильно нужно писать так
Dennis Ritchie, в таком случае вы изменяете исходный массив, что может привести к непредвиденным результатам. Не советую так делать.

Не по теме:


Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вы, конечно, можете начать утверждать, что Java/C# и т. д. сильнее/мощнее, чем C++.
Dennis Ritchie, вы так и не поняли моего сообщения. И на поставенный вопрос не ответили.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Но я же знаю: какие языки затачивали под загребание денег, а какие для людей, которые просто любят программирование.
Не знаете. Вы не программировали ни на C#, ни на Java

0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.03.2015, 01:47  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
в таком случае вы изменяете исходный массив, что может привести к непредвиденным результатам.
Конечно, так как я писал, писать нельзя (я ещё не читал полностью книгу Александреску, поэтому могу написать что-нибудь неправильное).
Можно написать так, например:
C++
1
2
3
4
auto a = [5, 2, 6, 8];
auto b = a.dup;
writeln(find(a = remove(a, 1), 2).length != 0);
writeln(b);

Не по теме:

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Не знаете. Вы не программировали ни на C#, ни на Java
На Java программировал немного. Сразу же понял, что этот язык создан для буржуев.
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
вы так и не поняли моего сообщения. И на поставенный вопрос не ответили.
Уже ответил в соответствующей теме.

0
Заблокирован
09.03.2015, 01:51
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Можно написать так, например:
Я бы удалял копию коллекции, а не исходную. Так в дальнейшем не будет путаницы.

Не по теме:


Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Уже ответил в соответствующей теме.
Если вы считаете это ответом

0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.03.2015, 01:54  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Я бы удалял копию коллекции, а не исходную.
Не понял.
0
Заблокирован
09.03.2015, 02:03
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Не понял.
Java
1
2
3
4
auto a = [5, 2, 6, 8];
auto b = a.dup;
writeln(find(b = remove(b, 1), 2).length != 0);
writeln(a);
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.03.2015, 02:06  [ТС]
Ev_Hyper, ОК.
0
09.03.2015, 09:02

Не по теме:

Дорогой Dennis Ritchie, все это доказывает только одно - что я вас сильно задел. Ну подумайте сами: олимпиадник по русскому языку пишет на русском косноязычно. Что стоят его пятерка по русскому? Не помню уже какой классик написал примерно так: "Имеющему мускус в кармане нет необходимости об этом громко заявлять. Запах все доказывает". Так и с вами, мой юный оппонент. Не ленитесь подбирать слова - и никто вас не заподозрит в безграмотности.

0
09.03.2015, 10:25  [ТС]

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
Не ленитесь подбирать слова - и никто вас не заподозрит в безграмотности.
Я же вам сказал, что грамотность в интернете - это шоры.
И не собираюсь я вам больше ничего доказывать. Вы придумали какую-то странную гипотезу, что меня задели. А теперь тыкаетесь: "А я тебя задел; а нет, я тебя очень сильно задел... Я тебе не верю, ты врёшь. Я тебя задел." Смотрится очень смешно.

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38210 / 21143 / 4313
Регистрация: 12.02.2012
Сообщений: 34,757
Записей в блоге: 14
09.03.2015, 10:35

Не по теме:

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Смотрится очень смешно.
- Вы пишете безграмотно, и при этом доказываете, что в школе были отличником. Действительно смешно.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
И не собираюсь я вам больше ничего доказывать.
- я ждал этого заявления... Оно всегда следует, когда у оппонента отсутствуют аргументы. "грамотность в интернете - это шоры" - на отстойных сайтах может быть что угодно. Но лицо Интернета создают не отстойные сайты.



Короче: беру вас под личный контроль. Неряшливое изложение мыслей будет пресекаться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2015, 10:35

Проверить двумерный массив на наличие отрицательных элементов
Если в массиве есть хоть один отрицательный элемент, нужно, чтоб на экран вывелось сообщение "You have negative elements in your...

Проверить массив на наличие в нем положительных элементов
Здравствуйте, дорогие форумчане. Помогите с программой. Условие: переписать положительные элементы массива x, до последнего вхождения...

Проверить массив на наличие в нем элементов со значениями 25 и 45
Написать программу на языке VBA, которая проверяет массив элементов M(i), в котором 30 значений, на наличие в нем элементов со значениями...

Как проверить весь массив на наличие строки?
Как проверить весь массив на наличие строки? если строки нету- записать Добавлено через 14 минут строка всегда динамическая string...

Как проверить массив на наличие имен с базы mysql
У меня есть база в mysql names, состоящая из 30 имен, и есть массив massnames, в котором 5 имен. Как сделать, чтобы данные с базы смерялись...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru