Форум программистов, компьютерный форум, киберфорум
Комбинаторика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 23.08.2019
Сообщений: 140

Нужно вывести формулу для поиска всех возможных последовательностей из цифр, что стоят в соответствии с буквами

28.12.2024, 21:43. Показов 506. Ответов 2

Студворк — интернет-сервис помощи студентам
Имеем последовательности из 4 букв, на 2 местах буквы одинаковые:
aabc, abac, abca, baac, baca, bcaa.
На каждое из мест можно поставить одну из цифр: 1, 2 или 3. Нужно вывести формулу для поиска всех возможных последовательностей из цифр, что стоят в соответствии с буквами, то есть 1111, 1112, 1123 и т.д.
Я написал небольшой скрипт, который выдал мне результат: 64+48+36+36+24+24 = 232
На ум приходит Формула включения-исключения, но не вижу как ее можно использовать.
Буду очень благодарен за подсказки или решение!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2024, 21:43
Ответы с готовыми решениями:

Для стержня вывести формулу для возможных частот продольных волн, образующих стоячую волну
Для стержня длиной l , закреплённого, как указано − вывести формулу для возможных частот продольных волн, возбуждаемых в стержне, при...

Составьте алгоритм для нахождения всех возможных пар цифр (x, y)
Известно, что двенадцатизначное число A = 2020xx2013yy делится нацело на 156. Составьте алгоритм для нахождения всех возможных пар цифр...

Найти количество возможных кодовых последовательностей(Порядок ввода цифр важен)
Известно, что код в кодовом замке может содержать от М до К цифр. Порядок ввода цифр важен. Известно, что ни одна цифра не встречается в...

2
 Аватар для abit
715 / 497 / 145
Регистрация: 03.02.2013
Сообщений: 1,623
28.12.2024, 21:51
Rust
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use std::collections::HashSet;
 
 
const PATTERNS: [&str; 6] = ["aabc", "abac", "abca", "baac", "baca", "bcaa"];
 
 
fn permutations(elements: Vec<u8>) -> Vec<Vec<u8>> {
    let mut results = Vec::new();
 
    fn permute(data: &mut Vec<u8>, start: usize, results: &mut Vec<Vec<u8>>) {
        if start == data.len() {
            results.push(data.clone());
        } else {
            for i in start..data.len() {
                data.swap(start, i);
                permute(data, start + 1, results);
                data.swap(start, i); // Возвращаем обратно
            }
        }
    }
 
    let mut data = elements.clone();
    permute(&mut data, 0, &mut results);
    results
}
 
 
fn generate_sequences(pattern: &str, perm: &[u8]) -> String {
    let mut mapping = std::collections::HashMap::new();
    let mut result = String::new();
 
    for ch in pattern.chars() {
        if !mapping.contains_key(&ch) {
            mapping.insert(ch, perm[mapping.len()]);
        }
        result.push_str(&mapping[&ch].to_string());
    }
 
    result
}
 
fn main() {
 
    let digits = vec![1, 2, 3];
 
 
    let all_permutations = permutations(digits);
 
 
    let mut result_set: HashSet<String> = HashSet::new();
 
 
    for pattern in PATTERNS.iter() {
 
        for perm in &all_permutations {
 
            let sequence = generate_sequences(pattern, perm);
            result_set.insert(sequence);
        }
    }
 
 
    let mut result_vec: Vec<String> = result_set.into_iter().collect();
    result_vec.sort(); 
    for sequence in result_vec {
        println!("{}", sequence);
    }
}
Добавлено через 4 минуты
Суть алгоритма:
1)Перебираю все 6 шаблонов расположения букв,
2)Для каждого шаблона перебираю все 6 перестановок цифр для букв a, b, c.
3)Подставляю цифры вместо букв в соответствии с текущей перестановкой
0
1691 / 1129 / 296
Регистрация: 05.10.2014
Сообщений: 5,502
28.12.2024, 21:54
Цитата Сообщение от Анкар Посмотреть сообщение
то есть 1111, 1112, 1123
вот и продолжайте, выпишите их все
их меньше 100, поэтому на это уйдет минут 5
За время прошедшее с опубликования вопроса прошло 10 минут, т.е можно было уже 2 раза выписать их все и посчитать пальцем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2024, 21:54
Помогаю со студенческими работами здесь

Посчитать количество всех возможных правильных круглых скобочных последовательностей длиной n
Дано четное число n. Необходимо посчитать количество всех возможных правильных круглых скобочных последовательностей длиной n. Так как...

Можно ли создать программу для перебора всех возможных комбинаций цифр заданного большого числа?
Здравствуйте. Я хочу узнать можно ли сделать программу для перебора всех возможных комбинаций из 30 чисел Пример:...

Нужно написать функцию перебора всех возможных комбинаций для решения головоломки
Дана головоломка как на фото в приложении. Нужно сделать программу которая поможет найти все возможные решения этой головоломки. Брут-форс...

Есть три цифры. Написать прогу для перебора всех возможных вариантов написания этих цифр.
есть три цифры, предположим ABC, надо написать прогу, чтобы она выдавала все возможные варианты написания этих цифр. Например: ABC ACB ...

Расчёт всех возможных вариантов перестановок элементов массива и их подстановка в формулу
В общем дело обстоит так, нужно посчитать стороны многоугольника по координатам точек(с этим справился), а так же нужно вычислить все...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
Как работать с куки в ASP.NET Core
UnmanagedCoder 04.06.2025
Когда я впервые начал работать с куки в ASP. NET Core, меня поразило, насколько отличается работа с ними от классического ASP. NET. В Core все стало более декомпозированным - больше нет удобного. . .
Рисование коллайдеров физического движка Box2D-WASM v3 на Three.js
8Observer8 04.06.2025
Erin Catto (автор Box2D) переписал с нуля Box2D v2 с С++ на Си и появилась версия Box2D v3. Birch-san собрал Box2D v3 в WebAssembly (WASM), чтобы можно было использовать Box2D v3 на JavaScript. В. . .
Worker Threads и многопоточность в Node.js
Reangularity 03.06.2025
Если вы когда-нибудь посещали собеседования на позицию Node. js разработчика, почти наверняка слышали заезженную фразу: "Node. js - однопоточная платформа". Звучит как неоспоримый факт, который. . .
Event-Driven CQRS на C# с паттерном Outbox
stackOverflow 03.06.2025
В традиционной модели происходит примерно следующее: вы получаете команду, обрабатываете ее, сохраняете результат в базу данных и затем пытаетесь опубликовать событие в брокер сообщений. Но что если. . .
OwenLogic: перенос сетевых переменных в панель Weintek (EasyBuilder Pro)
ФедосеевПавел 03.06.2025
ВВЕДЕНИЕ ПЕРЕД ЭКСПЕРИМЕНТАМИ - СОЗДАЙТЕ РЕЗЕРВНЫЕ КОПИИ ПРОЕКТОВ На момент написания статьи (02 июня 2025 г. ) самыми актуальными версиями ПО являются: OwenLogic v. 2. 10. 366 EasyBuilder Pro. . .
Dev-c++5.11 Покорение вершины
russiannick 02.06.2025
С утра преследовала одна мысль - вот бы выучить С++. Сказано-сделано. Окончив смену, скачал в интернете бестселлер Дэвиса Dev-C++ для чайников. Книга оказалась интересной и я скачал среду, на примере. . .
Тестирование Pull Request в Kubernetes с GitHub Actions и GKE
Mr. Docker 02.06.2025
Мы все знаем, что тестирование на локальной машине или в изолированном CI-окружении — это не совсем то же самое, что тестирование в реальном кластере Kubernetes. Контекстно-зависимые ошибки, проблемы. . .
Оптимизация CMake для ускорения сборки
bytestream 02.06.2025
Вы когда-нибудь ловили себя на мысле, что пока ваш проект компилируется, можно успеть сварить кофе, прочитать главу книги или даже сбегать в соседний офис? Если да, то добро пожаловать в клуб. . .
JS String.prototype.localeCo­mpare()
mr_dramm 02.06.2025
скопировано из этой темы чтобы не потерялось. localeCompare без указания локали для сравнения строк под капотом использует Intl. Collator , который работает согласно Unicode Collation Algorithm. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »