____
флаговые карты... - ну я думаю, тут скорее ответиить мог бы, например Vigo, или April - кто то из практиков.
Я с такими вопросами лезу в практикум, который вел Саид и читаю, то что там было... И это тоже не догма...
Сейчас я углубился в теорию, и не знаю ответа на такой вопрос. Теория пока на него мне не отвечает... Возможно, когда, будет готова модель с корнями и нитегрирована с “черепашками“ - будет получен естественный ответ. Возможно, прийдется установить связь с гексами... Об этом рано думать. Меня волнует все больше вопрос, который мне уже задавали в этом топике - практическая проверка теории... Сборка заказных видов сходящихся ЦС - это хорошо. Но для чего? :)))
пфьук (#170, 2005-12-16, 22:12:55 )
ну короче, до библы с графами пока не дошел, но буду с ней работать обязателно
вот у меня какая примерно колода как класс вырисовывается
---
type
// one card
TPMCardRec = record
Suit: integer;
Nominal: integer;
end; // TPMCardRec record
// card desk chain
TPMCardSet = class
private
Cards: array [0..pmCards - 1] of TPMCardRec;
Validated: Boolean; // right and full cardset
function GetCard(Idx: integer): TPMCardRec;
procedure SetCard(Idx: integer; Value: TPMCardRec);
protected
function NormalCardIndex(Idx: integer): integer;
procedure ImportPrim(PrimStr: WideString; Relative: Boolean = False);
public
property Card[Idx: integer]: TPMCardRec read GetCard write SetCard;
property IsValid: Boolean read Validated;
constructor Create;
procedure Clear; // fill by pmBadCard
procedure Validate; // check to doubles in cardset, and without pmBadCard
procedure NormalizeCard(Idx: integer); // normalize suit and nominal of one card
procedure NormalizeCards; // normalize all cards
function CardName(Idx: integer; Relative: Boolean = False): WideString;
function Name(Relative: Boolean = False): WideString;
function OctavedName(Relative: Boolean = False): WideString;
procedure Sort2Right; // cardset from 6 diamond to ace spade
procedure Sort2Left; // cardset from ace spade to 6 diamond
function Import(CardStr: WideString; Relative: Boolean = False): Boolean;
function Export2CSV(Relative: Boolean = False): WideString;
function TransSuits(Idx1: integer; Idx2: integer = pmBadCard): Boolean;
function TransNominals(Idx1: integer; Idx2: integer = pmBadCard): Boolean;
function Transited(Idx1: integer; Idx2: integer = pmBadCard): Boolean;
function IsReconverging : Boolean;
function TimingString: WideString;
procedure Exchange(Idx1, Idx2: integer; Size: integer = 1);
procedure ShiftHorz(Idx: integer; Size: integer = 1; Left: Boolean = False);
procedure ShiftVert(Value: integer = 1; Suite: Boolean = False);
procedure Normalize;
procedure MakeTransitPath(First: integer = 0; Last: integer = pmCards - 1);
procedure UnTransitPath(First: integer = 0; Last: integer = pmCards - 1);
end; // TPMCardSet class
---
методы конечно не все еще детално прописаны,
и это далеко не окончателный вариант по названиям и функциям.
типа отчёта как бы
вот как пример работы - код
---
procedure TfrmMain.BitBtn2Click(Sender: TObject);
var
pm: TPMCardSet;
S: WideString;
tmp: integer;
begin
pm := TPMCardSet.Create;
// setup transit path
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
S := “9D,9C,9H,9S,AS,KS,JS,7S,6S,6H,8H,10H,QH,AH,KH,JH,“;
//17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
S := S + “JC,JD,10D,10C,8C,6C,6D,7D,8D,8S,10S,QS,QD,QC,AC,KC,7C,7H,KD,AD“;
if pm.Import(S) then
begin
Log(msgImport[LangID] + “: [“ + pm.Name + “]“);
Log(msgTiming[LangID] + “: [“ + pm.TimingString + “]“);
if not pm.IsReconverging then
Log(msgNonReconverging[LangID]);
pm.UnTransitPath(0, 32 - 1);
tmp := LangID;
if tmp <> lngRussian then
LangID := lngRussian;
SetupLanguage;
Log(msgUntransit[LangID] + “: [“ + pm.OctavedName + “]“);
Log(msgTiming[LangID] + “: [“ + pm.TimingString + “]“);
if not pm.IsReconverging then
Log(msgNonReconverging[LangID]);
if tmp <> LangID then
LangID := tmp;
SetupLanguage;
end
else
begin
Log(msgWrongInput[LangID]);
Log(“[“ + S + “]“);
end;
pm.Free;
end;
---
в логе это выглядеть будет вот так
---
---+++ 17 Декабрь 2005 г. 02:09[English] +++---
Import: [9d,9c,9h,9s,As,Ks,Js,7s,6s,6h,8h,10h,Qh,Ah,Kh,Jh,Jc,Jd,10d,10c,8c,6c,6d,7d,8d,8s,10s,Qs,Qd,Qc,Ac,Kc,7c,7h,Kd,Ad]
Timing: [3:1:2:1:1:1:3:1:1:1:1:2:4:3:3:2:2:1:4]
Warning: patience is non-reconverging!
---+++ [Русский] +++---
Ретранзит: [(9б,8ч,6к,9к,10ч,6б,9ч):(Дч,7б,9п,Тч,8б,Тп):(Кч,8п):(Кп):(Вч,10п):(Вп):(Вк,Дп):(7п,Вб,Дб,6п,10б):(Дк,6ч,10к):(Тк,8ч,Кк):(7к,7ч,Кб,Тб,9к)]
Тайминг: [7:6:2:1:2:1:2:5:3:3:5]
Внимание: несходящийся пасьянс!
---
кое чё подправлю, завтра выложу
есть ли у когоньть готовая цепочка 35:1 для отладки?
пфьук (#171, 2005-12-17, 18:28:26 )
konste
по поводу флаговых карт, кстати
я уже и не помню с чем это связано, постаните сюда цытатку бум разбирацца
Читать дальше