Форум программистов
Реклама:
Гарантия безопасности сети с UTM-системой ИКС.
Защита ПД, межсетевой экран, контроль доступа, фильтрация трафика, система предотвращения вторжений.
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 19.12.2016, 23:13   #1
Manta4ka
Пользователь
 
Регистрация: 23.08.2016
Адрес: Беларусь
Сообщений: 11
Репутация: 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, 22:12   #2
Plague
Забанен
Форумчанин
 
Аватар для Plague
 
Регистрация: 01.11.2006
Адрес: ЯНАО
Сообщений: 394
Репутация: 383
По умолчанию

Может быть как то так?
Код:

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, 22:33   #3
Manta4ka
Пользователь
 
Регистрация: 23.08.2016
Адрес: Беларусь
Сообщений: 11
Репутация: 10
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




07:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru