С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.11.2020
Сообщений: 16
Matlab 2020

Как сократить данный код без использования циклов for

21.11.2020, 17:54. Показов 1649. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данный скрипт кодирует сообщение 'AHOJJAJSEMTVUJSUPERPOMOCNIK' в 'HSJPIJTPO AVEC JMUM AJURNOESOK'.
По заданию нужно убрать циклы for и максимально сократить количество строк в скрипте. Результат должен остаться таким же.

Начало скрипта:

Кликните здесь для просмотра всего текста
Matlab M
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
clc; clear all; close all; echo off;
key = 'matlab';
text = 'AHOJJAJSEMTVUJSUPERPOMOCNIK';
 
keyNums = double(key);
keySorted = zeros(1, length(key));       % вектор 0 0 0 0 0 0
[c cisla] = sort(keyNums);                    % с - отсортированные по возрастанию значения keyNums, cisla - как изменились позиции
 
for i = 1:length(c)                                       %цикл сравнивает значения keyNums и отсортированной с
   for j = 1:length(c)                                                     % если значения равны, то изменяет значение keySorted на позиции j на 
       if c(i) == keyNums(j) && keySorted(j) == 0                 % текущее значение i
             keySorted(j) = i;
             break;
       end
   end
end
 
k = 1;
l = 1;
 for i = 1:size(text, 2)              % этот цикл создает М типу char из значений text по 6 В конце сообщения я написала 
     M(k, l) = text(i);                % как это выглядит подробней
     l = l + 1;
           if mod(i, 6) == 0
                 k = k+1;
                 l = 1;
           end
 end
 
for i=1:length(keySorted)            % данный цикл создает переменную cipher типу cell со значениями {'HSJPI'}  {'JTPO '}  {'AVEC '} 
    for j = 1:length(keySorted)      %   {'JMUM '}   {'AJURN'}   {'OESOK'}
        if i == keySorted(j)
            cipher{i} = M(:,j)';
        end
    end
end
strjoin(cipher, '')             % обьединяет в одну строку


Конец скрипта.


!!Может быть важным для понимания!!

переменная М не выписывается на экран, но имеет следующий вид:

'AHOJJA'
'JSEMTV'
'UJSUPE'
'RPOMOC'
'NIK '

Очень надеюсь на вашу помощь. На экране по выполнении скрипта мы видим только:

ans =

'HSJPIJTPO AVEC JMUM AJURNOESOK'
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2020, 17:54
Ответы с готовыми решениями:

Как реализовать данный код без использования объекта Vector?
public boolean expand(DefaultMutableTreeNode parent) { DefaultMutableTreeNode flag = (DefaultMutableTreeNode)parent.getFirstChild();...

Как сократить данный код?
Во время урока алгебры Незнайка написал следующую таблицу на доске: a b a2b ab2 12 2 288 48 -1 -1 -1 -1 9 -3 -243 81 ...

Как сократить данный код CSS?
Привет! Как можно сократить такой код до удобоваримого чтения браузером? Это код - фигура (png прилагаю). Осторожно! Код более 10000...

1
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
27.11.2020, 18:16
Лучший ответ Сообщение было отмечено Viktoria S как решение

Решение

Viktoria S, как вариант:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear; clc;
 
key = 'matlab';
text = 'AHOJJAJSEMTVUJSUPERPOMOCNIK';
 
keyNums = double(key);
[c, cisla] = sort(keyNums);                    % с - отсортированные по возрастанию значения keyNums, cisla - как изменились позиции
 
mas = 1:numel(keyNums);
[~, ind] = sort(cisla);
keySorted = mas(ind);
 
N = 6;
M = reshape([text repmat(' ', 1, numel(text) - fix(numel(text)/N)*N)], N, [])';
 
cipher = cellfun(@(x) M(:, x)', num2cell(cisla), 'UniformOutput', false); 
 
strjoin(cipher, '')             % обьединяет в одну строку
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2020, 18:16
Помогаю со студенческими работами здесь

Как можно сократить данный код?
Как можно сократить данный код? ( Программа выводит 10 рандомных чисел: 3 в промежутке от 10-30, 3 от 30-60, и последние 4 от 60-100 ...

Как можно сократить данный код?
1.Как можно упростить(сократить) этот код? 2.Почему я не могу объявить его в public partial class MainWindow : Window, а только в...

Как можно сократить и упростить данный код
Всем привет! Появилась отличная идея сделать консольную игру типа 2D головоломки. Создал дизайн первого уровня и тут же наткнулся на...

Оптимизирован ли данный код и можно ли его как-то сократить
#include <iostream> void func1(void); int func2(void); void main(void) { setlocale(LC_ALL, "rus"); func1(); func2(); ...

Как удалить в тексте последние '.' без использования циклов
Например есть текст "...bla bla bal..." или "...bla bla bal" как удалить только последние троеточие, не хочется городить блоки if...else,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru