Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 4
.NET 4.x

Перебрать все возможные комбинации цифр, потом совершить то же самое со строкой

08.06.2019, 19:18. Показов 1459. Ответов 5

Студворк — интернет-сервис помощи студентам
Задача:
Перебрать все комбинации, на подобии:
0011
0110
0101
1010
1001
1100
Только для восьми ячеек
(из "0000 1111" в "1111 0000")
Потом же, вместо единиц представить первые две буквы имени и фамилии (т.е. "0000 ИмФа" в "ИмФа 0000")
С выводом всех возможных комбинаций, как в примере с четырьмя ячейками.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2019, 19:18
Ответы с готовыми решениями:

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

Перебрать все возможные комбинации символов и в верхнем, и в нижнем регистрах
На вход подаётся массив символов в нижнем регистре, необходимо перебрать все возможные комбинации символов и в верхнем, и в нижнем...

Вывести все возможные комбинации цифр заданного числа
Введено число. Вывести все возможные комбинации цифр данного числа. Просьба разобраться в каждой строчке этого кода ...

5
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 4
12.06.2019, 23:45  [ТС]
Задание немного упростили, нынче работа только с байтами)
Мои потуги в этом, на скорую руку(правда смущает нагорожение циклов, но до рекурсии мозгов не хватило):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
byte b = 0b00001111; // нужное нам для перебора число в двоичном виде
            byte mask = 0b00000111; //маска нумэр 1
            do
            {
                b ^= mask;
                b <<= 1;
                b |= mask;
                if (b == mask)// если единица сдвинулась за пределы байта, переходим на другую маску
                {
                    b >>= 1;// исходя из значения, что было перед тем как единица вышла за байт
                    do
                    {
                        mask = 0b00001011;// новая маска
                        b ^= mask;
                        b <<= 1;
                        b |= mask;
                        if (b == mask)//миша, давай по новой
                        {
                            b >>= 1;
                            do
                            {
                                mask = 0b00001101;
                                b ^= mask;
                                b <<= 1;
                                b |= mask;
                                if (b == mask)//исчо разочек (дальше лень просто)
                                {
                                    b >>= 1;
                                    do
                                    {
                                        mask = 0b00001110;
                                        b ^= mask;
                                        b <<= 1;
                                        b |= mask;
                                        Console.WriteLine(Convert.ToString(b, 2));
                                    } while (b != mask);
                                }
                                Console.WriteLine(Convert.ToString(b, 2));
                            } while (b != mask);
                        }
                        Console.WriteLine(Convert.ToString(b, 2));
                    } while (b != mask);
                }
                Console.WriteLine(Convert.ToString(b, 2));
               
            }
            while (b != mask);
Добавлено через 9 минут
Хотя ладно, дальше хуже и так это некрасиво
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
13.06.2019, 00:09
Любое количество элементов массива, одно ограничение, ток стек.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Calc
{
    class Program
    {
        static void Bust(int[] Arr, int index=0)
        {
            if (index == Arr.Length)
            {
                Console.WriteLine(String.Join(" ", Arr));
            }
            else
            {
                for (int i = 0; i < 2; i++)
                {
                    Arr[index] = i;
                    Bust(Arr, index + 1);
                }
            }
        }
 
        static void Main(string[] args)
        {
 
            Bust(new int[10]);
 
            Console.ReadLine();
 
        }
    }
}
Добавлено через 4 минуты
1111 1111 Это 255, то можно так
C#
1
2
3
4
for (int i = 0; i <= 255; i++)
            {
                Console.WriteLine(Convert.ToString(i,2));
            }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
13.06.2019, 10:53
Цитата Сообщение от LeonTankardin Посмотреть сообщение
Задание немного упростили, нынче работа только с байтами)
Это обычный счётчик от 0 до 255. Только вывод информации надо сделать в двоичном коде как в пример от Masson1848.

Цитата Сообщение от LeonTankardin Посмотреть сообщение
(из "0000 1111" в "1111 0000")
Потом же, вместо единиц представить первые две буквы имени и фамилии (т.е. "0000 ИмФа" в "ИмФа 0000")
Вот это не понятно.
Объясните подробнее.
Допустим -> Иван Сидоров. Как нужно конвертировать значения: 1010_1010, 1000_0001, 0000_0000, 1111_1111 ?
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 4
14.06.2019, 13:49  [ТС]
Там задача состоит в том, что необходимо задействовать ровно четыре единицы и ровно четыре нуля, и только так. Т.е. задание теперь состоит в том, что:
- маска не должна быть статична, она определяется функцией, которая работает с байтом, и на основе составляющих его бит как раз и создаёт маску
- так как есть четыре варианта сдвигать биты в байте (по одному, по два, по три и по четыре разряда), необходимо реализовать все четыре функции с помощью одной рекурсии

Добавлено через 1 минуту
С буквами уже не нужно думу гадать, только с разрядами одного байта. По идее перебрать, неважно в какой последовательности, все значения, чтобы в каждой комбинации было четыре нуля и четыре значения (единицы)

Добавлено через 1 минуту
а по задаче с фамилией - не конвертировать значения, а поставитль вместо единиц первые буквы имени и фамилии :
0000 ИвСи
000И вСи0
0И0в С0и0
и так далее...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
14.06.2019, 14:07
Цитата Сообщение от LeonTankardin Посмотреть сообщение
По идее перебрать, неважно в какой последовательности, все значения, чтобы в каждой комбинации было четыре нуля и четыре значения (единицы)
В самом простом виде (немного долго будет, но для байта незаметно)
C#
1
2
3
4
5
Ienumerable<string> fourOne = Enumerable
                .Range(0 , 256)
                .Select(i => Convert.ToString(i,2))
                .Where (str => str.Count(ch => ch == '1') == 4)
                .Select (str => str.PadLeft(8, '0'));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2019, 14:07
Помогаю со студенческими работами здесь

Консоль. Вывести все возможные комбинации цифр данного числа
Введено число. Вывести все возможные комбинации цифр данного числа.

Перебрать все возможные комбинации цифр
Помогите написать код, котрый будет выводить все числа, например, в троичной системе. Т. е. Нам даны числа 0,1,2. Нужно вывести 0 1 2...

Перебрать все возможные комбинации
Доброго времени суток. Столкнулся с такой задачей и не знаю, как подступится. Опишу своими словами. Есть четыре столбика слов. В...

Перебрать все возможные комбинации трех фигур
подскажите как реализовать такое: есть три фигуры - круг,квадрат,треугольник необходимо создать возможные комбинации из 3,4,5,6,7,8,9,...

Как перебрать все возможные комбинации из n объектов?
Доброго дня, пытаюсь написать программу которая бы перебрала все возможные комбинации из n объектов или конкретнее у нас есть массив...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru