Брать только дубли

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
Добрый день, помогите решить проблему. Необходимо повысить разгадываемость каптчи (сейчас около 48%) и вот что я придумал. Т.к. моя каптча генерится по ссылке и изображение меняется но циферное обозначение остается таким-же поэтому , результат разный при разгадывании , но есть и верные решения и зачастую они повторяются. Суть в том что все результаты (около 5 - 10 шт) сохраняются в текстовый файл построчно, из которого мне необходимо выбрать только ДУБЛИ, как это сделать?
Или как создать файлы чтобы они имели вид дублей, типа:
123345
123345(1)
Пробовал этот способ но в директории просто идет перезапись файла и сохраняется лишь 1 файл с одинаковым именем.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 692
Баллы
113
скопируй список во временный, удали дубли, бери строку с удалением и по ней получай строку из оригинального списка, если возьмется значит это дубль, если нет, то бери следующую.
конечно на кубиках такие задачи решать , это тот еще изврат :-)
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Пробовал этот способ но в директории просто идет перезапись файла и сохраняется лишь 1 файл с одинаковым именем.
Разве нельзя название свое сделать? Запросы или веб?
 

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
интересное решение, спс попробую.
 

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
скопируй список во временный, удали дубли, бери строку с удалением и по ней получай строку из оригинального списка, если возьмется значит это дубль, если нет, то бери следующую.
конечно на кубиках такие задачи решать , это тот еще изврат :-)
не выходит, не удаляются дубли, то-ли я что-то не то делаю со списком, то-ли зенка троит. можешь простой пример скинуть со списками и как это реализовать.
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Муть еще та. Phoenix78 не севсем верно описал, либо до меня не дошло.

Забудем про файлы пока.

Выделяем строки содержащие текст в подсписок и считаем кол-во строк в подсписке. Если больше одной, то дубли есть. Это все в цикле с чисткой подсписка.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 692
Баллы
113
Муть еще та. Phoenix78 не севсем верно описал, либо до меня не дошло.

Забудем про файлы пока.

Выделяем строки содержащие текст в подсписок и считаем кол-во строк в подсписке. Если больше одной, то дубли есть. Это все в цикле с чисткой подсписка.
верно, не верно, главное меня поняли. :-)
 

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
Муть еще та. Phoenix78 не севсем верно описал, либо до меня не дошло.

Забудем про файлы пока.

Выделяем строки содержащие текст в подсписок и считаем кол-во строк в подсписке. Если больше одной, то дубли есть. Это все в цикле с чисткой подсписка.

мне трудно это реализовать т.к. я не владею пониманием как это сделать.
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
Если я правильно понял, то надо так:
C#:
var list = project.Lists["spisok"];
foreach(string str in list.Distinct().ToList()){
    list.RemoveAt(list.IndexOf(str));//удаляем первое совпадение
}
В исходном списке останутся только дубли.
 
  • Спасибо
Реакции: Sergej59rus и Mikhail B.

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
простым языком из списка в котором имеются значения :
1
2
3
4
1
мне необходимо найти дубль и взять его сохранив в переменную, всё)
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
простым языком из списка в котором имеются значения :
1
2
3
4
1
мне необходимо найти дубль и взять его сохранив в переменную, всё)
Решение Alexmd используй. В списке будут только дубли. Дальше делай с ними что хочешь.
 

Sergej59rus

Client
Регистрация
15.12.2015
Сообщения
33
Благодарностей
2
Баллы
8
Если я правильно понял, то надо так:
C#:
var list = project.Lists["spisok"];
foreach(string str in list.Distinct().ToList()){
    list.RemoveAt(list.IndexOf(str));//удаляем первое совпадение
}
В исходном списке останутся только дубли.

благодарю, проверил и все работает как часики. Огромное спасибо за помощь С# выручил.
 
  • Спасибо
Реакции: Mikhail B. и Alexmd

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)