forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Abracodabra# (http://forum.boolean.name/showthread.php?t=5268)

Alex_90 11.12.2007 21:39

Abracodabra#
 
Вложений: 4
HELLO,WORLD
Вот несколько дней назад участвовал в олимпиаде по программированию:) и сейчас, так сказать, провожу разбор полетов:
Вот одна задачка, которую я не решил на олимпиаде:
Цитата:

Задача С Метод бутерброда
Секретное агентство «Super-Secret-no» решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква -номер 2, вторая - номер 3, предпоследняя - номер 4, потом третья ... и так для всех букв (см. рисунок). Затем все буквы записываются в шифр в порядке своих номеров. В конец зашифрованного слова добавляется знак «диез» (#), который нельзя использовать в сообщениях.
Например, слово «sandwich» зашифруется в «shacnidw#».
Вложение 5292
К сожалению, программист «Super-Secret-no», написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.
Формат входных данных
Вводится слово, зашифрованное методом бутерброда. Длина слова не превышает 20 букв.
Формат выходных данных
Выведите расшифрованное слово. Пример
Вложение 5293
А вот мой вариант решения (неправильный):
Цитата:

uses crt;
var
s:string[21];
s1:string[20];
d:integer;
i1,i2:integer;
begin
clrscr;
readln (s);
d:=length (s);
delete (s,d,1);
i2:=0;
for i1:=1 to d div 2 do begin
s1[i1]:=s[i1];
s1[d-i2]:=s[i1+1];
i2:=i2+1;
end;
for i1:=1 to 20 do begin
write (s1[i1]);
end;
readkey;
end.
Решал на Pascal.
Может кто знает, как решать?;)

zheland 11.12.2007 22:03

Re: Abracodabra#
 
Я был на этой олимпиаде!!!:beer:
Решил, но непомню как?!?:-D
Решал на QBasic(Знал лучше всех)
Решать несложно!!!

Первую цифру в начало(1 символ), вторую в конец(последний символ),
третью после первой(2 символ), четвертую перед последней(предпоследний символ),
...

H@NON 11.12.2007 22:12

Re: Abracodabra#
 
незнаю что у тебя написано, но алгоритм расшифровки думаю будет таким: берем зашифрованное слово, сначало записываем в новое слово(расшифровка) нечетные буквы, затем четные и получаем на выходе расшифрованное слово.
Код:

const shifrslovo$
global iskomoeslovo$

lenght = len(shifrslovo$)
for n = 1 to lenght Step 2
    a$ = mid(shifrslovo$, n, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

for m = 2 to lenght Step 2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

Print iskomoeslovo$


zheland 11.12.2007 22:37

Re: Abracodabra#
 
Ты не правильно понял:
Вот зашифрованное:
1029384756
Вот как ты расшифровал:
1234509876
Вот как надо:
1234567890
Надо чётные записывать с конца!

H@NON 11.12.2007 22:44

Re: Abracodabra#
 
а ,нуда, извиняюсь.
Код:

...
for m = lenght to 2 lenght Step -2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next


Alex_90 16.12.2007 17:33

Re: Abracodabra#
 
Только вот длина слова (без решетки) бывает разная: по числу символов и по четности или нечетности этого числа.
Проверка же идет не только по этому слову, ну и по любому другому, зашифрованному этим способом. Если число символов нечетное, то символ, расположенный (d div 2) будет потерян.:)
Первая часть кода однозначно будет выглядеть так:
Цитата:

uses crt;
var
s:string[21];
s1:string[20];
d:integer;
...
begin
clrscr;
readln (s);
d:=length (s);
delete (s,d,1);
...

Tadeus 16.12.2007 18:52

Re: Abracodabra#
 

А меня вот собираються тож на олимпиаду послать. Заставят, млин, на паскале решать. Мы его в школе учим, я его ненавижу. Вот бы на КуБасике можно было)

H@NON 16.12.2007 20:34

Re: Abracodabra#
 
эх... вот вам исправленный вариант, надеюсь теперь все верно:
Код:

const shifrslovo$
global iskomoeslovo$

lenght = len(shifrslovo$)
for n = 1 to lenght Step 2
    a$ = mid(shifrslovo$, n, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

d# = lenght Mod 2
if d#<>0 then lenght2=lenght-1 Else lenght2=lenght

for m = lenght2 to 2 Step -2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

Print iskomoeslovo$


Alex_90 16.12.2007 20:53

Re: Abracodabra#
 
Это на бейсике?;)
Буду переводить на Pascal или С++...:)

Fla 25.12.2007 16:14

Re: Abracodabra#
 
Москва? Торту такую давали, я не пошол, т.к. не хотел в каникулы переться в москву на какую-то 5 часовую олимпиаду...

Alex_90 25.12.2007 23:31

Re: Abracodabra#
 
Моя была 3 часовая!:)

dector 25.12.2007 23:32

Re: Abracodabra#
 
Ну да - старичкам трудновато далеко перебиратся) В твои-то 82..;)

у нас по закону 5 часов.
но гады сказали что 1 час идет на набор программ - я в шоке! и забрали у нас час.

Fla 25.12.2007 23:55

Re: Abracodabra#
 
Укуреные идиоты, как можно решать задачи на листочке? Без дебагера, без возможности проверки работоспособности.

*Все это идет, что бы своих протолкнуть. А делается это элементарно - комуто ставятся ',' и ';' лишние, а комуто тупо пишут.
**Такова жизнь

dector 26.12.2007 00:08

Re: Abracodabra#
 
Да не думаю что кто-то своих пропихает.а может...

Цитата:

Укуреные идиоты, как можно решать задачи на листочке? Без дебагера, без возможности проверки работоспособности.
Ты к чему клонишь?:wild:
Если ты про них - то я согласен немного.Ведь мы не пишем программу на листочке. А потом вводим. Это смешно - олимпиада по информатике на бумажке всеравно что конкурс вышивания без иголки с ниткой и ткани):mda:

Fla 26.12.2007 00:33

Re: Abracodabra#
 
Конечно же про организаторов.

dector 26.12.2007 00:35

Re: Abracodabra#
 
)
Но всетаки врядли на информатике коррупция будет... Но в любом случае - программы на бАмажках - маразм!

Magus 26.12.2007 00:57

Re: Abracodabra#
 
Цитата:

программы на бАмажках - маразм!
Ничуть. Если ты умеешь программировать, сможешь и на бумажке программу написать.

Я, например, периодически в метро по дороге домой что-нибудь кодю на листочке.

Silver 26.12.2007 01:16

Re: Abracodabra#
 
К слову, про проталкивание своих. ПРАВДА!!!! Недавно был на Районной. Ну естественно решил всё правельно ( задания были как для 5-класников ). Так мне поставили 69 ( из 70 возможных ), а участнику из лицея в котором проводилось сие мироприятие 70. На вопрос почему так мне ответели ( Хочеш меньше? ).
PS Всё больше на ольмпиады по информ ездить не буду.

dector 26.12.2007 02:20

Re: Abracodabra#
 
Мда... "Весело" Вот и у меня разница 1 бал... С 11 классом.. Но ты не отчаивайся! ПОРВЕМ ВСЕХ!

На счет бумажек: ИМХО стоит различать: когда кодишь для себя и когда на конкурсе.

Silver 26.12.2007 02:37

Re: Abracodabra#
 
dector, Да я всё понимаю но хотя бы отговорку придумали. Мне в принципе наплевать на Районную. Я либо в июле либо в октябре ( незнаю точно когда будет ) еду в Днепропетровск на областную. Хорошо хоть там своих проталкивать не будут поскольку своих там уже небудет.
PS Тема будет " Разработка видео игр для ПК, мобл., XBOX360 "

dector 26.12.2007 02:38

Re: Abracodabra#
 
У нас такого не проводится( По разработке игр.((((

А ты на чем прогать буш?

Silver 26.12.2007 02:46

Re: Abracodabra#
 
В смысле ( У нас )? Очень даже проводится только не олимпиады щас название не помню но что-то связано с конкурсами. Они не проводятся школьно ( тоесть только среди учеников ) может быть принят любой участник выигравший что либо или представивший свой проэкт. Мою кандидатуру на конкурс предложила моя уч. по инфо. А ( По разработке игр ) так это у меня тема такая, там есть ещё много чего, от сайтов до маленьких ОС ( ну естественно на базе Linux). Скорее всего это будет что-то вроде научной работы.
PS Прогать буду на C# и XNA

dector 26.12.2007 02:55

Re: Abracodabra#
 
ясно. надо будет в каком-то сайтовском конкурсе поучавствовать.

Silver 26.12.2007 02:57

Re: Abracodabra#
 
Да я вот тоже хочу где нить поучаствовать. Не ради выиграша а чтобы самоутвердится. ладно пойду спать.

dector 26.12.2007 03:34

Re: Abracodabra#
 
аха - вдруг заинтерисуются.

jimon 26.12.2007 12:02

Re: Abracodabra#
 
научная работа по игровой тематике ето мертвый ребенок
у нас ее максимум до городской дотянешь ...
потому что игры в образовании запрещены ;)

HolyDel 26.12.2007 12:10

Re: Abracodabra#
 
по поводу проталкивания своих - конечно проталкивают. глупо было бы не проталкивать.

всем олимпийцам - удачи!

Magus, можно писать на карманной персоналке. потом быстро перекинуть текст "большому брату", и отловить небольшие бажки.
кстати, ни у кого нет бейсикового IDE для КПК?

Fla 26.12.2007 12:25

Re: Abracodabra#
 
В кпк юзаю CEdit - блокнот с подсветкой C...
Для Вазика - любой IDE под ДОС. Запускать через PocketDos\DosBox.
Жаль BorlandC++ не запускается под досбоксом, приходится юзать порт мамаича.


Часовой пояс GMT +4, время: 07:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot