Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2012, 15:35   #1
spichki
 
Регистрация: 19.05.2012
Сообщений: 4
По умолчанию СПИЧКИ в паскале

Реализация выигрышной стратегии для компа: не менее 50 спичек, нужно взять одну и не более чем вдвое больше, чем пред. игрок. Выигрывает тот, кто берет последнюю спичку.
spichki вне форума Ответить с цитированием
Старый 20.05.2012, 08:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А вы зря поиском не пользуетесь.
Вот буквально несколько дней назад обсуждалось.
Реализация выигрышной стратегии для компьютера
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2012, 22:15   #3
spichki
 
Регистрация: 19.05.2012
Сообщений: 4
По умолчанию

сложность для меня в том, что мое условие ограничено по другому, если в той задаче(на которую вы дали ссылку) можно брать 1 или 2, то у меня от 1 и не более чем в два раза предыдущего игрока..и опять же выигышность компа при этом
spichki вне форума Ответить с цитированием
Старый 20.05.2012, 22:18   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Задача другая, но принципы построения выигрышной стратегии те же.
s-andriano вне форума Ответить с цитированием
Старый 20.05.2012, 22:46   #5
spichki
 
Регистрация: 19.05.2012
Сообщений: 4
По умолчанию

# не знаю куда эту решетку ставить) в общем я изменила код. но не уверена что правильно, что так как нужно, потому что я все еще выигрываю компьютер....блин

Код:
var
InitialCount:integer;
Count: integer;
Num,num1: integer;
Player: integer;
Correct: boolean;
begin
cls;
repeat
writeln ('Введите количество спичек');
readln(InitialCount);
if InitialCount<50 then writeln('число спичек по условию не менее 50');
until InitialCount>=50;
Player := 1;
Count := InitialCount;
repeat
write('Ваш ход. На столе ',Count,' спичек. ');
write('Сколько спичек Вы берете? ');
readln(Num);
Correct := (Num>=1) and (Num<=Count);
if not Correct then
writeln('Неверно! Повторите ввод!');
until Correct;
Count:=count-Num;
repeat
if Player=2 then
begin
repeat
write('Ваш ход. На столе ',Count,' спичек. ');
write('Сколько спичек Вы берете? ');
readln(Num);
Correct := (Num>=1) and (Num<=Count)and(num<=num1*2);
if not Correct then
writeln('Неверно! Повторите ввод!');
until Correct;
Count:=count-Num;
end
else
begin
num1:=num*2;
if Num1>Count then
Num1 := Count;
writeln('Компьютер взял ',Num1,' спичек');
Count:=count-Num1;end;
if Player=1 then
Player := 2
else Player := 1;
until Count=0;
if Player=1 then
writeln('Вы победили!')
else writeln('Вы проиграли!');
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.05.2012 в 00:08.
spichki вне форума Ответить с цитированием
Старый 20.05.2012, 22:48   #6
spichki
 
Регистрация: 19.05.2012
Сообщений: 4
По умолчанию

в примере (где можно 1 или 2 спички брать), мод использовался, а мне его не нужно?если нужно то как использовать, ведь у меня число спичек не указано
spichki вне форума Ответить с цитированием
Старый 20.05.2012, 23:11   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Естественно, боту нужно сообщить, какое количество спичек имеется, и сколько взял предыдущий игрок. А он должен ответить, сколько спичек берет он.
s-andriano вне форума Ответить с цитированием
Старый 21.05.2012, 06:11   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
# не знаю куда эту решетку ставить
Выделите текст мышкой и нажмите на #.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.05.2012, 08:07   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от spichki Посмотреть сообщение
в примере (где можно 1 или 2 спички брать), мод использовался, а мне его не нужно?если нужно то как использовать, ведь у меня число спичек не указано
Если у Вас нет идей, как составить формулу, можно поступить проще (в смысле: меньше думать, но больше писать), а именно: осуществить рекурсивный поиск. Т.е. перебрать все решения в глубину и выбрать среди них выигрышное. Т.к. число ходов растет как экспонента, глубина рекурсии не должна быть слишком большой.
Перебор советую начинать с больших чисел.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игра спички marque Помощь студентам 1 03.05.2012 17:29
Задача Спички Блондинка_Таня Помощь студентам 0 21.02.2012 11:22
на ПАСКАЛЕ ddeman666 Помощь студентам 2 19.04.2010 19:57
привет всем! помогите пожалуйста решить две задачи на паскале. я в паскале полный ноль. Пищенок Саша Паскаль, Turbo Pascal, PascalABC.NET 5 20.01.2009 13:46
На Паскале Bagsi Помощь студентам 13 21.11.2007 21:40