Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача "Казино"

Автор: _Mystery_ 21.05.2006 21:01

Помогите с задачей на массивы
Расположить по порядку.
В большом городе много казино. В одном из них дилер жульничает. Она довела до совершенства несколько перетасовочных трюков; каждый трюк меняет порядок карт одним и тем же образом, когда бы он ни был использован. Простой пример – это трюк «нижней карты», при котором нижняя карта переносится наверх колоды. Используя различные комбинации известных ей трюков, нечестный дилер может расположить карты практически в любом желаемом порядке.
Вы были наняты менеджером службы безопасности, чтобы поймать этого дилера. Вам дали список всех трюков, используемых дилером, а также список визуальных подсказок, благодаря которым вы можете определить, какой трюк она использует в любой данный момент времени. Ваша задача состоит в том, чтобы предсказать порядок карт после последовательности трюков.
Стандартная игральная колода состоит из 52 карт, четыре масти по 13 значений каждая. Значения карт:2, 3, 4, 5, 6, 7, 8, 9, 10, Валет (Jack), Дама (Queen), Король(King), Туз (Ace). Названия мастей: Трефы (Clubs), Бубны (Diamonds), Червы(Hearts), Пики (Spades). Определенная карта в колоде может быть однозначно определена по ее значению в порядке, описанном выше.
Входные данные.
Входные данные начинаются со строки, содержащей 1 положительное целое число, которое означает количество тестовых блоков, за которой следует пустая строка. Между двумя последовательными тестовыми блоками также находится пустая строка.
Каждый блок состоит из целого числа n<=100 – числа трюков, которые знает дилер. Далее следует n наборов по 52 целых числа, каждый из которых содержит все числа от 1 до 52 в определенном порядке. Внутри каждого набора из 52 чисел, если i стоит j-м по счету, то это значит, что трюк перемещает i-ю карту в колоде j-ое место.
Далее следует несколько строк, каждая из которых содержит целое число k от 1 до n. Оно означает, что вы увидели, как дилер делает k-й трюк, заданный во входных данных.
Выходные данные.
Для каждого тестового блока считайте, что дилер начинает с новой колоды, карты в которой расположены в порядке, описанном выше. Выведите новый порядок карт в колоде, после того как все трюки были проделаны.
Для двух последовательных блоков должны быть разделены пустой строкой.

Автор: virt 23.05.2006 12:59

 program kazino;
var p : array[1..52] of byte;
n : array[1..52] of byte;
i ,j : integer;

begin
assign(input, '_mystery_.in');reset(input);
for i := 1 to 52 do p[i] := i;
while not eof do
begin
for i := 1 to 52 do
begin
read(j);
n[i] := j;
end;
for i := 1 to 52 do
p[i] := n[i];
end;
for i := 1 to 52 do write(p[i], ' ');
end.

Может так?
Считаем что тестовый блок 1 и количество трюков равно количеству строк.

Автор: _Mystery_ 26.05.2006 20:22

Огромное спасибо, но тут не совсем то smile.gif