Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Прогу на Паскале

Автор: Sleepwalker
Дата сообщения: 22.10.2002 23:26
случайно нашел тему...
а обычной трассировкой никто не пробовал? уровней-то не так много.
ща попробую...

Добавлено
нда... 30 минут на выбор метода, 30 минут на тестирование на скорость, 40 минут на кодирование, 10 минут на отладку. Результат - 7-ая строка. Хотя, для простенькой олимпиадной задачки уровня района слишком все-таки долго

Добавлено
а, собственно, текст:
Uses crt;
type
TAr=array[0..6] of byte;
const
ar:array[1..7] of word=($7,$01a,$0e0,$106,$320,$248,$218); {Kod po Treshkam v HEX}
ideal:TAr=(0,0,2,0,1,0,3); {Uslovie zadachi}
CLearAr:TAr=(0,0,0,0,0,0,0); {For Clearing}
var
i,j:word;
GetMas:TAr;
b:boolean;

procedure checkAr; {Proverka po vsem treshkam}
var
a,b,k:word;
begin
a:=ar[i] xor ar[j];
k:=0;
repeat
if a mod 2=1 then k:=k+1;
a:=a shr 1;
until a<1;
GetMas[k]:=getmas[k]+1;
end;

begin
for i:=1 to 7 do
begin
GetMas:=ClearAr;
for j:=1 to 7 do
if (i<>j) then CheckAr;
b:=false;
for j:=0 to 6 do
if GetMas[j]<>Ideal[j] then b:=true;
if b then Writeln('Line ',i,' is wrong.') else writeln('Line ',i,' is right');
end;
end.
Автор: raven
Дата сообщения: 23.10.2002 15:21

Цитата:
ar:array[1..7] of word=($7,$01a,$0e0,$106,$320,$248,$218); {Kod po Treshkam v HEX}
ideal:TAr=(0,0,2,0,1,0,3); {Uslovie zadachi}
CLearAr:TAr=(0,0,0,0,0,0,0); {For Clearing}


Объясни мне подробнее эти строчки здесь или кинь в ПМ плиз!
Автор: Sleepwalker
Дата сообщения: 23.10.2002 16:53
raven
хе.. подозревал, что надо расписать, но лениво было ночью
Значит так, Ar - массив троек в унарном коде. Расклад по битам:
0 - Конст
1 - Дмит
2 - Света
3 - Эльза
4. Влад
5. Григ
6. Макс
7. Богдан
8. Жанна
9. Павел.
Нетрудно догадаться, что в хексе это будет 2 тетрады и еще 2 бита. Итого запихивается спокойно в тип ворд (досовский)
Например, третья тройка сверху выглядит так:
00 1110 0000 b = 0E0h = сколько-то в десятичной
вот и все... дальше - тупой перебор.
Кстати, вставка на асме была бы очень не лишней

Добавлено
raven

Цитата:
Добавлено
Код почти написал, но нужно использовать лейблы(labels)!
Помогите найти инфу или подскажите!

сорри, не заметил...
ну.. цикл, что ли, организуй, с лэйблами
или выход из большого цикла
хотя так НИКТО не пишет
Автор: MaxValue
Дата сообщения: 23.10.2002 18:08

Цитата:
хотя так НИКТО не пи

вот и нам в первый же день изучения паскаля сказали:
Во-первых: никаких label'ов
Во-вторых: никаких глобальных переменных в процедурах
В-третьих: никаких операторов вывода в вычислительных подпрограммах
И проч.
raven
Советую взять на заметку - пригодиться в будущем не только при работе с Паскалем а вообще в программировании.
Автор: Pisun
Дата сообщения: 23.10.2002 19:39
завтра утром, ежли на работе дел не будет, напишу алгоримт... задача 6-7-го класса..

был , помнится учебник не учебник, называелся "Реши сам" или "Решаю сам", там подобные задачи весьма доступно разбирались, решается в таблично-извратной форме

Добавлено
тьфу.. блин.. планка едет.. недоглядел ветку )))
тут уже практичски почти все сделано ) ежли не забуду, попробубую пооптимальнее
Автор: Sleepwalker
Дата сообщения: 23.10.2002 20:45
Pisun

Цитата:
ежли не забуду, попробубую пооптимальнее

хе, куда оптимальнее-то?
Автор: woffer
Дата сообщения: 23.10.2002 22:36
MaxValue не хотел я бы советы по стилю давать, но раз уж ты сам это делаешь, позволю себе сделать то же самое Убирай имена переменных типа a1, a2, b2, или через пару месяцев посмотришь -придется голову каково их назначение.
Автор: Sleepwalker
Дата сообщения: 24.10.2002 01:11
woffer

Цитата:
Убирай имена переменных типа a1, a2, b2,

а про это есть небольшая история. Заканчивается следующим:
парень в программе имена переменных делает типа ДлинныйМнемоническийИдентификаторНомер1.

вот так
Так что все зависит от полезности и объемов программы.
Автор: raven
Дата сообщения: 24.10.2002 17:28
Sleepwalker
Классно написал но мне понять трудно!
С первой строчкой понял а с

Цитата:
ideal:TAr=(0,0,2,0,1,0,3); {Uslovie zadachi}
CLearAr:TAr=(0,0,0,0,0,0,0); {For Clearing}

не очень особенно (0,0,2,0,1,0,3)

Усе!
Автор: MaxValue
Дата сообщения: 24.10.2002 17:35
woffer

Цитата:
Убирай имена переменных типа a1, a2, b2

Согласен - постепенно искореняю в себе это - здесь надо было быстро вот меня и потянуло к "старому" стилю
Автор: Sleepwalker
Дата сообщения: 25.10.2002 00:46
raven
Ideal - массив условия. Из двух троек что может быть известно? что они имеют 3 общих фамилии, 2, 1 и не одной. Если имен общих 2, то количество единиц в унарном коде - 2. Если 1 общая - 4 единицы, и если общих нет - 6 единиц. Алгоритм по очереди выбирает тройку, принимает ее за верную, и сравнивает с другими путем XOR. Число единиц в результате определяет, на сколько эти тройки различаются. Результат каждого сравнения заностится в массив GetMas. Потом остается сравнить его с идеальным - и установить, является предполагаемая строка верной.
Дословно, Ideal выглядит как:
3 - три пары троек не имеют общих имен
1 - одна пара троек имеет 1 общее имя
2 - две пары троек имеют по два общих имени.
т.е. таким образом кодируется условие.

Страницы: 12

Предыдущая тема: Альтернатива Database Desktop


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.