Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
5 / 5 / 1
Регистрация: 06.10.2020
Сообщений: 176

Является ли одна строка циклическим сдвигом другой?

16.02.2021, 20:44. Показов 7291. Ответов 37
Метки нет (Все метки)

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

входные данные
a
b
выходные данные
-1

входные данные
zabcd
abcdz
выходные данные
4

Мой код, не проходит тесты по времени:
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
#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
    
    int res = 0, len; char tmp;
    string s1, s2;
    getline(cin,s1);
    getline(cin,s2);
 
    len = s1.size();
    
    while (s1 != s2) {
        tmp = s2[0];
        for (int i = 0; i < len - 1; i++)
            s2[i] = s2[i+1];
        s2[len-1] = tmp;
        res++;
        if (res == len) break;
    }
    if (res != len) cout << res << "\n";
    else cout << "-1" << "\n";
    
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2021, 20:44
Ответы с готовыми решениями:

Определить, является ли одна последовательность циклическим сдвигом другой
Задано число N и две последовательности целых чисел длины N. Определить, является ли одна циклическим сдвигом другой. примеры: Можно...

Определить, является ли одна последовательность циклическим сдвигом другой
Задано число N и две последовательности целых чисел длины N. Определить, является ли одна циклическим сдвигом другой. Можно...

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

37
5 / 5 / 1
Регистрация: 06.10.2020
Сообщений: 176
18.02.2021, 22: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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
size_t if_sifted_str(const string &orig, const string &if_shifted) {
    
    if(orig == if_shifted) return 0 ;
    if(orig.size() != if_shifted.size()) return -1 ;
 
    auto orig_begin = orig.begin(), orig_end = orig.end()-1, if_shifted_begin = if_shifted.begin();
 
    string substring(orig, 0, orig.size()-1);
 
    while(orig_begin < orig_end) {
        auto pos_fnd = if_shifted.find(substring);
        if(pos_fnd != string::npos &&
           equal(if_shifted_begin, if_shifted_begin + pos_fnd, orig_end)){ //pos_fnd
            return pos_fnd ;
        }
        --orig_end ;
        substring.erase( substring.end()-1, substring.end()) ;
    }
    
    return -1;
}
 
 
 
int main() {
 
  string  orig, s;
  getline(cin, orig);
  getline(cin, s);
  vector<string> words;
  words.push_back(s);
 
for (const auto &str:words) {
    size_t shift_dist(-1);
    if ((shift_dist = if_sifted_str(orig, str)) != -1) {
        if ((shift_dist) != 0) cout << shift_dist << endl; else
            cout << shift_dist + s.length();
    }    
    else
        cout << -1 << endl;
}
 
return 0;
}
IGPIGP, выдал неправильный ответ на 6 тесте, я подумал, что 0 не может быть циклическим сдвигом. Дописал условие, теперь неправильный ответ на 3 тесте.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.02.2021, 22:22
Цитата Сообщение от mangomang Посмотреть сообщение
IGPIGP, выдал неправильный ответ на 6 тесте
thingsom -ответ отрицателен. Мой код вроде работает - проверьте. А нулевой сдвиг это равные строки. Я не вижу смысла выражать это как-то ещё. В математике для тригонометрии, можно писать плюс-минус два пи эн для аргумента синуса. Хотите так? Не думаю.

Добавлено через 6 минут
thingsom короче на 1 и конечно с самого начала -1
для чистоты эксперимента я добавил отброшенную 'е' в середину:
theingsom
это вместо thingsom
работает)
0
5 / 5 / 1
Регистрация: 06.10.2020
Сообщений: 176
18.02.2021, 22:36  [ТС]
IGPIGP, я и отправил Ваш код сначала, только отформатировал вывод под условие:

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
48
49
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
size_t if_sifted_str(const string &orig, const string &if_shifted) {
    
    if(orig == if_shifted) return 0 ;
    if(orig.size() != if_shifted.size()) return -1 ;
 
    auto orig_begin = orig.begin(), orig_end = orig.end()-1, if_shifted_begin = if_shifted.begin();
 
    string substring(orig, 0, orig.size()-1);
 
    while(orig_begin < orig_end) {
        auto pos_fnd = if_shifted.find(substring);
        if(pos_fnd != string::npos &&
           equal(if_shifted_begin, if_shifted_begin + pos_fnd, orig_end)){ //pos_fnd
            return pos_fnd ;
        }
        --orig_end ;
        substring.erase( substring.end()-1, substring.end()) ;
    }
    
    return -1;
}
 
 
 
int main() {
 
  string  orig, s;
  getline(cin, orig);
  getline(cin, s);
  vector<string> words;
  words.push_back(s);
 
for (const auto &str:words) {
    size_t shift_dist(-1);
    if ((shift_dist = if_sifted_str(orig, str)) != -1)
        cout << shift_dist << endl;
    else
        cout << -1 << endl;
}
 
return 0;
}
Промелькнула мысль о том, что в задаче может имеется в виду циклический сдвиг вправо, вдруг где-то shift_dist получается отрицательным.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.02.2021, 22:48
Цитата Сообщение от mangomang Посмотреть сообщение
IGPIGP, я и отправил Ваш код сначала
мой самый последний?
А сам тест на котором оно фейлит можете показать?
0
5 / 5 / 1
Регистрация: 06.10.2020
Сообщений: 176
18.02.2021, 22:52  [ТС]
IGPIGP, да
К сожалению, тесты скрыты
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.02.2021, 23:01
Цитата Сообщение от mangomang Посмотреть сообщение
К сожалению, тесты скрыты
А хоть характеристика теста есть (хоть намёк) ?
Я могу не пройти по памяти так как использую поиск фактически новой (дополнительной) строки:
C++
1
string substring(orig, 0, orig.size()-1);
а потом спасаюсь от перевыделения, откусывая по одному символу сзади:
C++
1
2
3
4
5
6
--orig_end ;
        substring.erase( substring.end()-1, substring.end()) ;////////////////////тута
    }
    
    return -1;
}
Но изначально я почти на 50% увеличиваю расход памяти.
Есть одна идейка как этого избежать, но я не уверен, что это актуально.
Жаль если сайт не даёт такую инфу)
0
5 / 5 / 1
Регистрация: 06.10.2020
Сообщений: 176
18.02.2021, 23:13  [ТС]
IGPIGP, вообще ничего

Один прекрасный господин помог через z-функцию решить, но очень хочется понять, почему этот код не прошел)
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.02.2021, 23:18
Цитата Сообщение от mangomang Посмотреть сообщение
вообще ничего
то есть нет указаний - время/память/корректность результата ?
Сожалею.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
18.02.2021, 23:34
Цитата Сообщение от mangomang Посмотреть сообщение
но очень хочется понять, почему этот код не прошел)
Так а почему он должен был пройти? Это же очевидная бессмыслица какая-то, а не решение. Попробуем

C++
1
if_sifted_str("axx", "xab")
Получаем в ответ 1, то есть строка якобы является циклическим сдвигом.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.02.2021, 02:13
mangomang, там и правда могут быть глюки) Я не дебажил сильно. Завтра посмотрю еще, но одна доп проверка на прилегание первого интервала из оригинала к концу смещённой строки, вроде устраняет этот баг.
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
size_t if_sifted_str(const string &orig, const string &if_shifted)
{
    if(orig == if_shifted) return 0 ;
    if(orig.size() != if_shifted.size()) return -1 ;
 
    auto orig_begin =
    orig.begin(), orig_end =orig.end()-1, if_shifted_begin = if_shifted.begin() ;
 
    string substring(orig, 0, orig.size()-1);
 
    while(orig_begin<orig_end)
    {
 
        auto pos_fnd=if_shifted.find(substring);
 
         if(pos_fnd !=string::npos && 
        pos_fnd+substring.size()==if_shifted.size() && //доп условие
           equal(
                 if_shifted_begin, if_shifted_begin+pos_fnd,
                 orig_end) ){
            return pos_fnd ;
        }
        --orig_end ;
        substring.erase( substring.end()-1, substring.end()) ;
    }
 return -1;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
19.02.2021, 03:17
Цитата Сообщение от IGPIGP Посмотреть сообщение
C++
1
2
3
4
5
6
     auto pos_fnd=if_shifted.find(substring);
     if(pos_fnd !=string::npos && 
        pos_fnd+substring.size()==if_shifted.size() && //доп условие
           equal(
                 if_shifted_begin, if_shifted_begin+pos_fnd,
                 orig_end) ){
Ага... То есть мы точно знаем позицию, по которой должна располагаться искомая строка substring внутри if_shifted. Но вместо того, чтобы просто проверить этот факт, мы зачем-то вызываем if_shifted.find(substring), то есть выполняем полноценный тяжеленный поиск подстроки в строке c самого начала и до самого конца. Зачем????

Даже после такого исправления работать правильно это все равно не будет именно из-за этого злосчастного if_shifted.find(substring), которое в ряде случаев будет находить первое вхождение, в то время как нам нужно последнее.

---

И во всех этих муках рождается лишь банальное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
size_t if_shifted_str(const string &orig, const string &if_shifted) 
{
  size_t n = orig.length();
  if (if_shifted.length() != n)
    return -1;
 
  for (size_t i = 0; i < n; ++i)
    if (string_view(if_shifted).substr(0, i) == string_view(orig).substr(n - i) &&
        string_view(if_shifted).substr(i) == string_view(orig).substr(0, n - i))
      return i;
 
  return -1;
}
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.02.2021, 10:41
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
аже после такого исправления работать правильно это все равно не будет именно из-за этого злосчастного if_shifted.find(substring), которое в ряде случаев будет находить первое вхождение, в то время как нам нужно последнее.
TheCalligrapher, строки имеют равную длину, а substring последовательно уменьшается на 1 с конца. То есть первым может быть найдено лишь максимально возможное вхождение. Именно поэтому я вначале и решил что такое вхождение возможно лишь когда оно уже прижато к правой границе. И это верно.
Но лишь для правильных строк. А для неправильных оно может болтаться в середине состоя из произвольно меньшего количества символов чем до конца. Этот факт вы мне показали, за что и благодарю. Несмотря на любимые вами
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это же очевидная бессмыслица какая-то, а не решение.
То есть, картина стала полнее и в ней ясно что проверка "правого прижима" необходимое условие данного алгоритмтма.
Мне пока что кажется, что оно и достаточно. Хотя так казалось и до вашего замечание.
Всё началось с теста за который - спасибо mangomang)
Что касается:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
мы зачем-то вызываем if_shifted.find(substring), то есть выполняем полноценный тяжеленный поиск подстроки в строке c самого начала и до самого конца.
Можно улучшить реверсивним поиском, я думал об этом. Но сам по себе стандартный поиск чреват различными платформозависимыми ускорениями, которые могут быть быстрее посимвольного перебора, скажем.

Добавлено через 1 минуту
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
string_view(if_shifted).substr(0, i)
Каждый вызов подстроки конструирует новую строку.
Написание итератора, кстати - хороший путь. Но для моего случая хорош был бы реверсный (учитывая тот факт что поиск от начала менее продуктивен) . Именно тогда и в моём случае не придётся создавать одну (надежда) новую строку substring а использовать входную)
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
19.02.2021, 10:51
Цитата Сообщение от IGPIGP Посмотреть сообщение
Каждый вызов подстроки конструирует новую строку.
Нет, конечно. Смотрим внимательнее на важнейший ключевой момент: метод substr вызывается для std::string_view (!), а не для std::string.

Уже давно вся немодифицирующая работа со строками должна делаться исключительно через std::string_view. В частности, std::string_view превращает выделение поддиапазона в бесплатную операцию.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.02.2021, 11:24
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
вызывается для std::string_view
Вот этого не увидел. Тогда другое дело)

Добавлено через 5 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
string_view(if_shifted)
Каюсь, я плохо знаю этот класс. Вообще не знаю)
Но конструктора принимающего строку не нашёл... Чуть позже посмотрю повнимательней. Очень полезный фрукт!

Добавлено через 21 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
учитывая тот факт что поиск от начала менее продуктивен
По зрелому размышлению, не вижу почему. Для сдвигов на малое количество это быстро, а для больших сдвигов медленно. Но в Тришкином кафтане всегда верно и обратное.
Поэтому, кроме создания ещё одной строки - грехов не вижу.
А всё потому что строка не предоставляет поиска целевого объекта, задаваемого итераторами, как это делает общий поиск <algorithm>. Интересно было бы понять в чём тут причина, кстати?

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
учитывая тот факт что поиск от начала менее продуктивен
По зрелому размышлению, не вижу почему. Для сдвигов на малое количество это быстро, а для больших сдвигов медленно. Но в Тришкином кафтане всегда верно и обратное.
Поэтому, кроме создания ещё одной строки - грехов не вижу.
А всё потому что строка не предоставляет поиска целевого объекта, задаваемого итераторами, как это делает общий поиск <algorithm>. Интересно было бы понять в чём тут причина, кстати?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
19.02.2021, 11:35
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но конструктора принимающего строку не нашёл...
Не найдя конструктора с принимающей стороны, следует поискать оператор приведения типа с посылающей

https://en.cppreference.com/w/... tring_view
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.02.2021, 11:40
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не найдя конструктора с этой стороны, следует поискать оператор приведения типа с той.
Я пока ограничен С++11.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.02.2021, 20:39
Цитата Сообщение от IGPIGP Посмотреть сообщение
строка не предоставляет поиска целевого объекта, задаваемого итераторами, как это делает общий поиск <algorithm>. Интересно было бы понять в чём тут причина, кстати?
А пока ответа нет, алгоритмом и приходится пользоваться. В частности:
вот тут всё зависит от того как данный компилятор реализует сравнение интервалов заданных итераторами строк (ой сомневаюсь, что кто-то побеспокоился) ). Не z-функции конечно, но кратко)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
size_t if_shifted_string(const string &orig, const string &if_shifted)
{
    size_t len= orig.size();
    if(orig == if_shifted) return 0 ;
    if(len != if_shifted.size()) return -1 ;
 
    auto orig_begin = orig.begin()+1, orig_end =orig.end(),
         if_shifted_begin = if_shifted.begin(), if_shifted_end = if_shifted.end() ;
 
      for(auto broken_orig_begin= orig_begin; broken_orig_begin!=orig_end; ++broken_orig_begin )
      {
         size_t shift =if_shifted.size()-(broken_orig_begin-orig.begin());
 
         if(    equal(broken_orig_begin, orig_end, if_shifted_begin) &&
                equal(if_shifted_begin+shift, if_shifted_end,  orig.begin())    )   return shift ;         
      }
     return -1;
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.02.2021, 20:27
Возможны также и обобщения вроде следующих:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
template<class Container>
size_t if_shifted_sequence(const Container &orig, const Container &if_shifted)
{
    size_t len= orig.size();
    if(orig == if_shifted) return 0 ;
    if(len != if_shifted.size()) return -1 ;
 
    auto orig_begin = ++begin(orig), orig_end = end(orig),
         if_shifted_begin = begin(if_shifted), if_shifted_end = end(if_shifted) ;
         size_t sycles(0);
      for(auto broken_orig_begin= orig_begin; broken_orig_begin!=orig_end; ++broken_orig_begin )
      {
         size_t shift =len-++sycles;
 
         auto if_shifted_begin_to_shift=if_shifted_begin;
         advance(if_shifted_begin_to_shift, shift) ;
 
         if(    equal(broken_orig_begin, orig_end, if_shifted_begin) &&
                equal(if_shifted_begin_to_shift, if_shifted_end,  --orig_begin)    )   return shift ;
      }
     return -1;
}
 
 
template<class RndIt>
size_t if_shifted_sequence( RndIt orig_begin, RndIt orig_end,  RndIt if_shifted_begin)
{
    if(    equal(orig_begin, orig_end, if_shifted_begin) ) return 0;
    size_t len= orig_end-orig_begin ;
 
    auto if_shifted_end =if_shifted_begin+len ;
         size_t sycles(0);
 
      for(auto broken_orig_begin= ++orig_begin;//сначала уже проверено на входе в функцию
       broken_orig_begin!=orig_end; ++broken_orig_begin )
      {
         size_t shift =len-++sycles;
 
         auto if_shifted_begin_to_shift=if_shifted_begin;
         advance(if_shifted_begin_to_shift, shift) ;
 
         if(    equal(broken_orig_begin, orig_end, if_shifted_begin) &&
                equal(if_shifted_begin_to_shift, if_shifted_end,  --orig_begin)    )   return shift ;
      }
     return -1;
}
 
template <typename Container>
void prn(const Container &container)
{
    for(const auto &el:container)
    {
        cout<<el;
    }
}
 
int main()
{
 vector<int>orig{1,2,3,4,5};
 string  orig1 =
   "something"
  //"axx"
  ;
  //string words1[]=
  vector<string> words1{"something", "gsomething", "gsomethin", "omethings", "thingsome", "theingsom", "methingso"
     //"xab"
  } ;
 
  vector<vector<int>> words
  {
      {1,2,3,4,5},
      {2,3,4,5,1},
      {3,4,5,1,2},
      {2,4,3,5,1},
      {1,2,2,1,2}
       
  } ;
  
for(auto &str:words)
{
    size_t shift_dist(-1);
  // if( (shift_dist=if_shifted_sequence(orig, str) ) != -1 ){
     if( (shift_dist= if_shifted_sequence(orig.begin(), orig.end(), str.begin()) ) != -1 ){
    prn(str);
    cout<< " is shifted ";
    prn(orig);
    cout <<" by "<< shift_dist <<endl;
    }
    else{
        prn(str);
        cout<< " is Not shifted ";
         prn(orig);
        cout<<endl;
 
    }
        cout<<"\n------------\n";
}
 
cout<<"\n\n______string_________\n";
for(const auto &str:words1)
{
    size_t shift_dist(-1);
    if( (shift_dist=if_shifted_sequence(orig1, str) ) != -1 )
    cout<<str<< " is shifted "<<orig1 <<" by "<< shift_dist <<endl;
    else
        cout<<str<< " is Not shifted "<<orig1 <<endl;
        cout<<"\n------------\n";
}
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2021, 20:27

Определить, является ли одна строка символов - частью другой
Задача ясна, а алгоритм &quot;прогонки&quot; выстроить не получается. Задумал прогонять отталкиваясь от ячеек одного из массивов: сначала от 0, затем...

Определить получена ли одна строка из другой циклическим сдвигом
Добрый день! Помогите решить задачку на Python Мальчик Кирилл написал однажды на листе бумаги строчку, состоящую из больших и...

Проверить, является ли строка s циклическим сдвигом строки t (или наоборот)
Привет! Изучаю алгоритмы по книжке Седжвика. Столкнулся с вот такой задачей картинка. Проблема в том, что я могу решить эту задачу...

Определить, является ли одна строка перестановкой другой
Для двух строк написать метод, определяющий, является ли одна строка перестановкой другой. Регистр можно не учитывать. а) с...

Определить, является ли одна строка подстрокой другой
var t:boolean; i,j:integer; s1,s2:string; begin t:=true; writeln(); readln(s1); writeln(); readln(s2);


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru