Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2016, 22:13   #1
Manta4ka
Пользователь
 
Регистрация: 23.08.2016
Сообщений: 10
По умолчанию Шифрование с помощью шифрорешетки, как повернуть решетку?

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

Суть задачи:
Есть шифрорешетка - квадрат 4 на 4 с четырьмя вырезанными окошками (Х). Необходимо совместить ее с заданным текстом и выписать шифр. Затем повернуть решетку на 90 градусов по часовой стрелке и выписать следующие символы, затем повторить поворот. В итоге процедура повторяется 4 раза.

Как повернуть решетку?

Код:
def recall_password(tabl, cod):
    
    txt=""
    for i in range (0,4):
        for j in range (0,4):
            if tabl[i][j]=="X":
                txt=txt+cod[i][j]
                   
 
print ( recall_password(
        ('X...',
         '..X.',
         'X..X',
         '....'),
        ('itdf',
         'gdce',
         'aton',
         'qrdi'))) # == 'icantforgetiddqd'
Manta4ka вне форума Ответить с цитированием
Старый 20.12.2016, 21:12   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Может быть как то так?
Код:
def transposition(tabl):
    a = []
    for i in range(4):
        s = ''
        for b in reversed(tabl):
            s += b[i]
        a.append(s)
    return a


def recall_password(tabl, cod):
    txt = ''
    for k in range(4):
        for i in range(4):
            for j in range(4):
                if tabl[i][j] == "X":
                    txt = txt + cod[i][j]
        tabl=transposition(tabl)
    return txt

print ( recall_password(
        ('X...',
         '..X.',
         'X..X',
         '....'),
        ('itdf',
         'gdce',
         'aton',
         'qrdi')))
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 20.12.2016, 21:33   #3
Manta4ka
Пользователь
 
Регистрация: 23.08.2016
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Plague Посмотреть сообщение
Может быть как то так?
Да-да!)) Большое спасибо!
Manta4ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование и дешифрирование текста с помощью ключа, алгоритм DES Refuis Общие вопросы Delphi 4 20.03.2015 23:59
Как повернуть эллипс? gylayko Помощь студентам 0 18.12.2011 18:39
Как повернуть страницу ? frend1970 Microsoft Office Word 2 25.05.2011 09:14
Шифрование файла с помощью пароля Hallo Обсуждение статей 3 09.02.2007 10:50