Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.04.2012, 16:16
eyesandsky eyesandsky вне форума
Прохожий
 
Регистрация: 23.04.2012
Сообщения: 5
Репутация: 10
По умолчанию комбинаторная задача

помогите пожалуйста ))
нужно написать программу подбирающую ключи:

Перед играющим четыре запертые двери. Открыть все двери, располагая десятью ключами, каждый из которых может открыть несколько дверей. Представляется 14 попыток.
Ответить с цитированием
  #2  
Старый 23.04.2012, 18:54
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от eyesandsky
помогите пожалуйста ))
нужно написать программу подбирающую ключи:

Перед играющим четыре запертые двери. Открыть все двери, располагая десятью ключами, каждый из которых может открыть несколько дверей. Представляется 14 попыток.
несколько дверей - это скока??
Ответить с цитированием
  #3  
Старый 23.04.2012, 19:00
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

По-моему, здесь можно просто по порядку все ключи использовать, и двери откроются. Не вижу комбинаторики. Уточни условие.
Ответить с цитированием
  #4  
Старый 23.04.2012, 21:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Смутно напоминает игру "Быки и коровы".
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 23.04.2012, 23:54
eyesandsky eyesandsky вне форума
Прохожий
 
Регистрация: 23.04.2012
Сообщения: 5
Репутация: 10
По умолчанию

предположим по 2 двери
в общем есть массив ключей (1..10) и каждый из них иткрывает две двери(от 1 до 4 соответственно) )
Ответить с цитированием
  #6  
Старый 24.04.2012, 00:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну очень понятно объяснил.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 24.04.2012, 08:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

к примеру массив-описание ключей:
Код:
Keys: array [0..9] of Byte = (3, 5, 6, 9, 10, 12, 10, 9, 6, 5);
значения элементов в двоичном виде определяют номера дверей, которые он открывает.
тогда чтобы открыть все двери нужны ключи 3, 6, 10, 12
я правильно понял?

добавлено позже

кста, ключей достаточно 6:
0011 = 3
0101 = 5
0110 = 6
1001 = 9
1010 = 10
1100 = 12
или я ничего не понял или я еще не проснулся или при любой комбинации двери откроются
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 24.04.2012 в 09:13.
Ответить с цитированием
  #8  
Старый 24.04.2012, 09:17
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Скорее всего заранее не известно сколько и каких дверей открывает каждый конкретный ключ.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #9  
Старый 24.04.2012, 18:45
eyesandsky eyesandsky вне форума
Прохожий
 
Регистрация: 23.04.2012
Сообщения: 5
Репутация: 10
По умолчанию

в идеале да, не известно сколько каждый ключ открывает и какие, но на конкретном примере я себе так представляю)) :
дверь "1" которую открывают ключи 3,5,6,7,9;
дверь "2" которую открывают ключи 1,4,8,9,10; и т.д.
и дальше мы ключи от 1 до 10 сравниваем со значениями массива (3,5,6,7,9) и когда они совпадают , останавливаем цикл и сравниваем след. массив , ну и счётчик надо чтоб 14 не превышало

П.С. с while и repeat у меня не выходит, есть команда, останавливающая цикл for ?
Ответить с цитированием
  #10  
Старый 24.04.2012, 20:41
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от eyesandsky
П.С. с while и repeat у меня не выходит, есть команда, останавливающая цикл for ?
break; для выхода из цикла, continue; для следующей итерации.
Ответить с цитированием
Этот пользователь сказал Спасибо nixel за это полезное сообщение:
eyesandsky (26.04.2012)
  #11  
Старый 25.04.2012, 09:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Печаль

все-равно я толком не понял - это типа игры и игрок подбирает ключи к дверям, а программа должна сказать открыты все двери или нет? или же реализовать алгоритм подбора ключей?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 26.04.2012, 00:40
eyesandsky eyesandsky вне форума
Прохожий
 
Регистрация: 23.04.2012
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
все-равно я толком не понял - это типа игры и игрок подбирает ключи к дверям, а программа должна сказать открыты все двери или нет? или же реализовать алгоритм подбора ключей?


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

у меня тут вопрос века назрел я беру первый ключ и сравниваю его с каждым эл-том массива( 6,1,5,7,9)
for j:=1 to 10 do begin
for i:=1 to 5 do begin
if a[i]=k[j] then j:=c;
break;
по идее же j должен быть равен 1 т.к. 1 уже есть во втором цикле, но j выводит = 6. почему? (он тупо первое число во втором цикле выводит)
Ответить с цитированием
  #13  
Старый 26.04.2012, 00:44
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не обращай внимания, это приколы Дельфи. Подсчитывает он всё равно правильно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #14  
Старый 26.04.2012, 08:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а что компилятор уже не выдает ошибку Assignment to FOR-Loop variable 'j' ?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #15  
Старый 26.04.2012, 09:24
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

пользуй вайлы/репиты.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025