Pasjans - algorytm

0

Witam

Wszyscy wiecie jak wygląda Pasjans, taka gra Windowsowa. Chce napisac algorytm, który wyszuka mi najlepszy sposób na ułożenie pasjansa (przy najmnijeszej ilości ruchów). Rozłożenie kart na kupkach jest z góry wiadome.

Za podpowiedzi z góry dziekuje.

0

Skoro jest od razu wiadome to jaki jest sens ukladania pasjansa?:)

0

Masz racje, ale tylko jeśli gra się dla przyjemności. :)
Chcę napisac program tzw. Cheater, który będzie grał za mnie. Już napisałem funkcję, która przekłada za mnie karty itp. Teraz chciałem napisac algorytm, który będzie wybierał najlepszy sposób jego ułożenia (to jest przy jak najmniejszej liczbie ruchów). Oczywiście cały czas przy założeniu, że rozkład kart jest z góry WIADOMY!. :)

Mam już kilka pomysłów, napisze je, może ktoś mi pomoże rozwinąc moje pomysły.:

więc najpier definiuje strukturę:

typedef struct Karta
{
  unsigned char iNumerKarty; //numer karty od 2 do 14, gdzie AS ma 14 itd.
  unsigned char iKolorKarty; //kolor karty; 0 - czarny, 1 - czerwony
  unsigned char iPolozenieKarty; //położenie karty
} KARTA;

Położenie karty:
od 0 do 17 - karta na tablecie nr 1.
od 18 do 35 - karta na tablecie nr 2..
itd. aż do tabletu nr 7

potem
126 do 138 - karta na kupce nr 1 (karty z wina)
139 do 151 - karta na kupce nr 2 (karty z dzwonkiem)
152 do 164 - karta na kupce nr 3 (karty z czerwem)
165 do 177 - karta na kupce nr 4 (karty z żołedziem)

i od 178 do 202 - karta w ręce

Utworzylbym strukture kart

KARTA Karty[52]; //52 karty

zainicjował ich położenie.

Teraz trzeba przeglądac tą strukturę.
Najlepiej będzie napisac chyba funkcję rekurencyjną.
Taka funkcja po X wywołaniach zwróci X możliwości ułożenia pasjansa.
Definiujemy sobie Y np.

#define Y 3000

Y to nasze ograniczenie w ilości możliwych ułożeń pasjansa.

Dostaniemy tablice, przeglądamy tablice i wybieramy najszybszy sposob ulozenia pasjansa.

0

Nie chcę Cię martwić, ale pasjansów są setki. Nawet w samym windowsie są dwa (solitare i pajączek).
Na pracowni projektowej mieliśmy pasjansy na rozgrzewkę napisać (każdy dostał inny). I są pasjansy, w których zasady są tak banalne, że prawie nie da się przegrać, a są takie, które ciężko jest ułożyć dla człowieka, a co dopiero mówić o maszynie.

Swoją drogą, to psujesz przyjemność z grania :P
Ale zawsze miło jest coś popróbować takiego napisać SAMEMU dla wprawienia się.

0

wiem, że są setki ;]
ale ja potrzebuje dla jednego konkretnego
a mianowicie tego windowsowego (Solitare nie FreeCell)
z tym, że karty w ręce przekładamy pojednej, nie po trzy naraz

1 użytkowników online, w tym zalogowanych: 0, gości: 1