ПредишенСледващото

Бикове и крави

Това е нещо като игра по този начин. Може ли някой да има линк за неговото изпълнение (при източника)? Или някой изобщо знае алгоритъма?
такива условия са: човек си мисли за броя (4 цифри) и компютърът се опитва да отгатне. Но не само това: тя предлага свой собствен номер на версия, а потребителят отговори: Колко бикове (числа, стоящи на местата си) и крави (номера, присъстващи в неизвестен брой, но не стои на мястото си).
Чакам някой, който да каже, че.

Харесва ми, когато нещо не е, ако мога да намеря - изпратете.

Дойде pliz.
Може би дори някой там?

Аз не, но Chezerella-ви книга "Скици на програмирането" - там е тази игра с описанието на оптимална стратегия. Тя е проста - да се изгради целия набор от комбинации. И след всеки опит не може да бъде изтрита (много от тях). Всеки ход е направен така, че да намали броя на бита и парчета за минути. Все още можете да наберете Статистика на човешките предпочитания. Като цяло, от гледна точка на компютърна игра, не е iteresesnaya - твърд алгоритъм. Възпроизвеждане на серия от "стратегия без играта" (Има една книга от Дж Arzak - стар, но също така е разглобена)

Аз ще трябва най-малко една част от кода.
Как да съхранявате опции (определен масив.) Как да се справим с това, въведена от потребителя (без да знаят какви са истинските цифри, и които не са трудни за отгатване вариации обичат да си спомня това, което потребителят е влязъл и е удобно да се използва след това?). С една дума, аз нямам нищо добро се е случило, може да има още някоя мисли / съвет?

правят точно обратното. Нека броят на компютъра си мисли за и познае човек. но като цяло решението е масив от четири записа

Имам чувството, че истината е някъде наблизо, но Мълдър и не мога да го проумея :).
Погледнато TButton предположих, че самият предполагам, че е масив от четири записа.

Това е като този:
TMyArray = масив [0..3] от
рекорд
byte_: байт;
Bol: булева;
приключи;
или така

TMyArray = масив [0..9999] от
byte1: байт;
byte2: байт;
byte3: байт;
byte4: байт;
Bol: булева;
приключи;

Или нещо друго.
Той също така не е ясно, че в този масив да се направи.
Бутон (може да ти се обадя свойски, а не като клас, както и негов представител, без Т.)), може да ви моля, уточнете.
Съжаляваме, ако аз пиша глупави неща.

рекорд

Типове TMyRec = запис
# XA0; предполагам: Булева; // вярно - познае
# XA0; бр: байт; # XA0; # XA0; # XA0; // номер (ако се досещате - не ме)
приключи;

масив

изкопава: масив [1..4] на TMyRec;

част от код

защото: = 1 до 4 направи
# XA0; ако разкопки [Ь] .guess
# XA0; # XA0, след Продължи
# XA0; # XA0; друго изкопава [Ь] .dig: = Произволни (10);

C, N, ако, като представител, то е по-добре да Button1. но аз все още се използва като клас.

Пс, аз си мислех. възможно без Т, но след това - ruglishem (т.е. Baton)

> Изтрит от модератора
За какво?
> TButton
Страхувам се, че не се оре, ние не знаем кога да сложи quess: = вярно, тъй като потребителят не ни казва правилните цифри!

Game Space е тип масив (ако 4 цифри)

Игра: масив [0..9,0..9,0..9,0..9] на булевата;

Първоначално всички True (т.е., всички варианти са възможни)

Въпреки че можете да го разгърне и във вектор.

Ако е налице комбинация ABCD - известни и Colva бикове (х) и крави (у) и х<>4 е ясно, че самата комбинация не е подходящ (zhnachit става False). Следваща prostrannstvo преглед опции. И proizovim yatseykoy горе всеки вид операция игра [I, J, K, п] и CanBe (); CanBe дава True, ако модификация ABCD с известно х и у може да даде ijkn и False в противен случай (например ако имате 1111 - нула и бикове и крави, комбинацията с най-малко един yedinichku ще False). След това изберете новия курс на пространството игра Вярно е, добре, и т.н. докато има една стойност.

Аз трябваше да пиша за начина, по който е създаден много възможности varyantov:

тип
FourDigit = рекорд
# XA0 а. 0-9;
# XA0; б. 0-9;
# XA0 С. 0-9;
# XA0; г. 0-9;
приключи;

конст
FileName = "Data.txt";

процедура TFormMain.ButtonCreateDataFileClick (Sender: TObject);
Var
Cykl. цяло число;
А, В, С, D. 0-9;
OutFile. текстов файл;
TempArray. масив [0..9999] на FourDigit;
OutRecCount. цяло число;
започвам
# XA0; OutRecCount: = 0;
# XA0; за Cykl: = 0-9999 направи
# XA0; започне
# XA0; # XA0 А: = # XA0; Cykl DIV 1000;
# XA0; # XA0; В: = (Cykl- (A * 1000)) DIV 100;
# XA0; # XA0 С: = (Cykl- (A * 1000) - (B * 100)) DIV 10;
# XA0; # XA0; D: = (Cykl- (A * 1000) - (B * 100) - (С * 10));

# XA0; # XA0; ако НЕ ((А = В) или (А = С) или (А = D) или (В = С) или (В = D) или (С = D)), тогава
# XA0; # XA0; започне
# XA0; # XA0; # XA0; TempArray [OutRecCount] .a: = А;
# XA0; # XA0; # XA0; TempArray [OutRecCount] .b: = В;
# XA0; # XA0; # XA0; TempArray [OutRecCount] .c: = С;
# XA0; # XA0; # XA0; TempArray [OutRecCount] .d: = D;
# XA0; # XA0; # XA0; INC (OutRecCount);
# XA0; # XA0; край;
# XA0; край;
# XA0; AssignFile (OutFile, FileName);
# XA0; Rewrite (OutFile);
# XA0; за Cykl: = 0 до OutRecCount-1 направи
# XA0; започне
# XA0; # XA0; записване (OutFile, TempArray [Cykl] .a, TempArray [Cykl] .b, TempArray [Cykl] .c, TempArray [Cykl] .d);
# XA0; край;
# XA0; CloseFile (OutFile);
приключи;

при стартиране на програма zagruzhassya масив:

конст
FileName = "Data.txt";
ArrayLength = 5 '

Var
DataArray. масив [0..ArrayLength] на FourDigit;

процедура TFormMain.FormCreate (Sender: TObject);
Var
INFILE. Файл на байт;
Cykl # XA0. цяло число;
А, В, С, D. байт;
започвам
# XA0; AssignFile (INFILE, FileName);
# XA0; Reset (INFILE);
# XA0; за Cykl: = 0 до ArrayLength направи
# XA0; започне
# XA0; # XA0; чете (INFILE, А, В, С, D);
# XA0; # XA0; DataArray [Cykl] .A: = StrToInt (Chr (А));
# XA0; # XA0; DataArray [Cykl] .B: = StrToInt (Chr (В));
# XA0; # XA0; DataArray [Cykl] .C: = StrToInt (Chr (С));
# XA0; # XA0; DataArray [Cykl] .d: = StrToInt (Chr (D));
# XA0; # XA0; Application.ProcessMessages;
# XA0; край;
# XA0; CloseFile (INFILE);
приключи;


и по-нататък, като от масив бе избрана след регистриране и отговор на потребителя да има (ДП 3: 2) съответства на новия масив, само тези записи, които съответстват на отговора.
(И след това се брои някои числа в масива повече. Т.н.), което трябва да бъде достатъчно.

Аз съм нов за Delphi. но превода на тази програма с VB # XA0 и че самият той е написал само аз не са имали човек си мисли за броя и програмата ще изпрати при проявен интерес.

> Arximed
Когато го мисли за компютър - осъществява много по-лесно. И нито един пример, когато компютърът познае съм не е намерен. Аз се опитвам да си пиша :).

Аз също си мисли, на компютъра, само с обрати.

www.algolist.manual.ru - виж, там е мястото, където компютърните догадките.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!