Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310

Составить алгоритм дешифровки записи

20.06.2019, 19:34. Показов 4314. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить алгоритм дешифровки записи. Шифрование работает следующим образом: из исходного сообщения выписываются подряд все символы, стоявшие на четных позициях, далее подряд все символы, стоявшие на нечетных позициях. (строка без пробелов)
Пример:
Входные данные
qwerty
Результат работы
rqtwye // почему так, не понимаю. мне кажется правильно rqtwye
Мой код:
Python
1
2
3
4
a = str(input())
b = a[::2]
c = a[1::2]
print(c+b)
Однако система выдает, что у меня неправильный ответ

Подскажите, правильно ли я написал код. Заранее большое спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2019, 19:34
Ответы с готовыми решениями:

Составить алгоритм кодирования (шифровки) и декодирования (дешифровки) исходного текста используя алгоритм Цезаря
Шифровка текста производится по следующей схеме (дешифровка в обратном порядке), где РА – алфавит русского языка; (АЦ) – алгоритм...

Алгоритм дешифровки
Пожалуйста, помогите найти ошибку. Программа не расшифровывает фразу. var n, i, a, a_, b: integer; s1, s2: string; begin ...

Алгоритм шифровки и дешифровки текста
Написать алгоритм шифровки и дешифровки текста в соответствии со следующим правилом: все согласные буквы записывались в 2 ряда, одна...

10
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
21.06.2019, 07:50
Цитата Сообщение от catauggie Посмотреть сообщение
rqtwye // почему так, не понимаю. мне кажется правильно rqtwye
- ??? Приведи точный текст задания. И еще важно, как нумеруются символы - с нуля или с единицы.
0
115 / 23 / 3
Регистрация: 11.09.2017
Сообщений: 141
Записей в блоге: 4
21.06.2019, 08:06
Цитата Сообщение от catauggie Посмотреть сообщение
rqtwye // почему так, не понимаю. мне кажется правильно rqtwye
эм...
1
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
21.06.2019, 08:16
catauggie, а вам не кажется, что вы написали кодер, хотя от вас требуют декодер?

Catstail, если смотреть на вх/вых данные, то получается, что с 1.
0
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
21.06.2019, 10:02  [ТС]
Catstail , я и сам с трудом понял задание. Слишком много воды:
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
21.06.2019, 10:30
Лучший ответ Сообщение было отмечено catauggie как решение

Решение

Python
1
2
3
4
5
6
7
8
9
from itertools import zip_longest
 
def decoder(text):
    even = list(text[:len(text)//2])
    odd = list(text[len(text)//2:])
    z = list([list(i) for i in zip_longest(odd, even)])
    if z[-1][-1] is None:
        z[-1][-1] = ""
    return ''.join([''.join(i) for i in z])
1
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
21.06.2019, 15:25  [ТС]
ioprst , а все-таки, в чем прикол-то задачи?
Python
1
2
3
4
5
6
7
8
9
from itertools import zip_longest //здесь мы импортируем что-то важное
 
def decoder(text): // функция декодирования
    even = list(text[:len(text)//2]) // в переводе even - даже. а что здесь происходит? 
    odd = list(text[len(text)//2:]) // в переводе odd - странный. я предполагаю, что мы сортируем четные элементы строки
    z = list([list(i) for i in zip_longest(odd, even)]) // если нетрудно, поясните, пожалуйста.
    if z[-1][-1] is None:
        z[-1][-1] = "" 
    return ''.join([''.join(i) for i in z]) // возвращаем результат
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
21.06.2019, 16:04
Я вам уже написал вашу проблему
Цитата Сообщение от ioprst Посмотреть сообщение
catauggie, а вам не кажется, что вы написали кодер, хотя от вас требуют декодер?

Цитата Сообщение от catauggie Посмотреть сообщение
ioprst , а все-таки, в чем прикол-то задачи?
в смысле?

Добавлено через 2 минуты
even, odd - четный, нечетный
0
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
21.06.2019, 16:12  [ТС]
Все понял.
Цитата Сообщение от ioprst Посмотреть сообщение
Я вам уже написал вашу проблему
Цитата Сообщение от ioprst Посмотреть сообщение
catauggie, а вам не кажется, что вы написали кодер, хотя от вас требуют декодер?
Да я как-то про это забыл, а гугл меня подвел
Цитата Сообщение от ioprst Посмотреть сообщение
even, odd - четный, нечетный
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
21.06.2019, 16:21
Лучший ответ Сообщение было отмечено catauggie как решение

Решение

Цитата Сообщение от catauggie Посмотреть сообщение
Шифрование работает следующим образом: из исходного сообщения выписываются подряд все символы, стоявшие на четных позициях, далее подряд все символы, стоявшие на нечетных позициях.
Сразу уточним, что индексация символов входной строки у вас с 1. Это было вычислено по входным данным.
С помощью среза из входной строки берем символы с 0 индекса по середину строки. Это будут те символы, которые изначально стояли на четных позициях, т.к. они записываются первыми.
Остаток - символы, которые стояли на нечетных позициях. Тоже получаем их с помощью среза.
С помощью zip_longest группируем символы по парам. Эта функция работает следующим образом:
zip_longest ([1, 2], [3, 4]) = [(1, 3), (2, 4)].
Если в какой-то последовательности символов больше, то при добавлении в результат в качестве недостающей пары будет назначено значение None, т.е.
zip_longest ([1, 2, 3], [4, 5]) = [(1, 4), (2, 5), (3, None)].
Но None в строку нам не надо добавлять, это лишь нам говорит о том, что в строке нечеткое количество символов. Для этого последний элемент проверяется на равенство None, и, если оно выполняется, то ему присваивается символ пустой строки('').

Обычный zip не использовал, т.к. при нечетном количестве символов в строке теряется последний символ.

Возможно есть решение и лучше, это просто первое, что пришло в голову.

Можно сократить код, сразу указав значение по умолчанию, если размеры итерируемых объектов разные:
Python
1
2
z = list([list(i) for i in zip_longest(odd, even, fillvalue='')])
return ''.join([''.join(i) for i in z])
Документация zip_longest
1
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
21.06.2019, 18:17
Лучший ответ Сообщение было отмечено catauggie как решение

Решение

Но если хочется с обычным zip, то можно и с ним Правда читаемость моего кода получается так себе.
Python
1
2
s = 'qwerty'
print(''.join(sum(zip(s[len(s)//2:], s[:len(s)//2]), ())) + (s[-1] if len(s) % 2 else ''))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2019, 18:17
Помогаю со студенческими работами здесь

Написать алгоритм шифровки и дешифровки текста
Написать алгоритм шифровки и дешифровки текста в соответствии со следующим правилом: все согласные буквы записывались в 2 ряда, одна...

Опишите, пожалуйста, алгоритм дешифровки сообщений Энигмы
Положим, есть роторы: lambda_1= lambda_2= Начальное положение роторов (ключ)= Известен шифр энигмы без отражателя: ...

Подскажите как правильно сделать алгоритм дешифровки
Здравствуйте, есть следующий код: #include<iostream> #include<math.h> #include<string.h> #define m 4096 #define y0 4003 #define...

Алгоритм шифровки/дешифровки LZSS. Проблема с написанием исходного файла
Зравствуйте! Нашел алгоритм LZSS шифровки и дешифровки текста. Я очень слаб в работе с файлами и абсолютно не понимаю каким образом...

Написать алгоритм шифровки и дешифровки текста в соответствии с заданным правилом
3.Написать алгоритм шифровки и дешифровки текста в соответствии со следующим правилом: все согласные буквы записывались в 2 ряда, одна...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru