PDA

View Full Version : سوال: پازل هشت تایی



shahlay
دوشنبه 11 خرداد 1388, 01:45 صبح
سلام دوستان

کسی سورس کد به زبان #C یا VB پیاده سازی پازل هشت تایی رو با الگوریتم های 1-ژنتیک 2-SMA* و 3-جستجوی دو طرفه داره؟
خیلی فرصتم کمه.اگه کسی کمکم کنه ممنون میشم:ناراحت::گریه:

میدونم که خواستن سورس پروژه خلاف قوانین سایته اما لطفا اگه کسی میدونه الگوریتماشو بهم بگه خودم برنامشو بنویسم.اصلا نمیدونم باید از کجا شروع کنم:اشتباه:

qwerty11
دوشنبه 11 خرداد 1388, 23:23 عصر
در مورد ژنتیک و اون مورد دیگه اطلاعی ندارم. اما جستجوی 2 طرفه کار ساده ایه. کافیه که از 2 حالت شروع و پایان جستجوی سطحی رو به کار ببری و هر مرحله ببینی به هم میرسن یا نه. البته من سورس کد همچین برنامه ای رو به زبان #C و VB ندارم و با جاوا برنامه مینویسم.
امیدوارم این توضیح من کمکت کنه اگر نه لطفاً بگو کجاش رو بیشتر توضیح بدم.
موفق باشی.

shahlay
سه شنبه 12 خرداد 1388, 01:14 صبح
ممنونم از توجه شما
ببخشید میتونم ازتون بخوام سورس کد جاواتونو ببینم؟البته اگه از الگوریتم جستجوی دو طرفه یا اون دو مورد دیگه واسه پیاده سازیش استفاده کردین.من خیلی مبتدیم تو این زمینه!!

ممنون

qwerty11
سه شنبه 12 خرداد 1388, 10:51 صبح
ممنونم از توجه شما
ببخشید میتونم ازتون بخوام سورس کد جاواتونو ببینم؟البته اگه از الگوریتم جستجوی دو طرفه یا اون دو مورد دیگه واسه پیاده سازیش استفاده کردین.من خیلی مبتدیم تو این زمینه!!

ممنون
من سورس کد یه طرفه رو دارم. به دردتون میخوره؟؟؟؟؟؟؟؟

shahlay
چهارشنبه 13 خرداد 1388, 00:54 صبح
آره ممنوم میشم.که بتونم ازش یه ایده بگیرم

qwerty11
چهارشنبه 13 خرداد 1388, 12:47 عصر
import java.util.Hashtable;
import java.util.LinkedList;
public class Puzzle {
private String source;
private String destination;
public Puzzle(String s,String d){source=s; destination=d;}
public Puzzle() {}
static final int N=3;
boolean inside(int i,int j) {return i>=0 && i<N && j>=0 && j<N;}
final int[][] move={{0,1},{0,-1},{1,0},{-1,0}};
final char[] op={'R','L','D','U'};
int I(int k) {return k/N;}
int J(int k) {return k%N;}
int K(int i,int j) {return i*N+j;}
private boolean solvAbility(){
int first=invariant(source);
int last=invariant(destination);
int plf=source.indexOf("9");
int pll=destination.indexOf("9");
return (first+I(plf)+J(plf))%2==(last+I(pll)+J(pll))%2;
}
private int invariant(String st){
int k=0;
for (int i = 0; i < st.length(); i++) {
for (int j = i+1; j < st.length(); j++) {
if(st.charAt(i)>st.charAt(j)) k++;
}
}
return k;
}
public String solveBfs(){
if(!solvAbility()) return null;
LinkedList<String> quee=new LinkedList<String>();
Hashtable<String, String> ht=new Hashtable<String, String>();
ht.put(source, "");
quee.add(source);
while(true){
String q=quee.removeFirst();
String st=ht.get(q);
int place=q.indexOf("9");
int i=I(place);
int j=J(place);
for (int d = 0; d < 4; d++) {
int ii=i+move[d][0];
int jj=j+move[d][1];
if(inside(ii, jj)){
int k=K(ii,jj);
StringBuffer cur=new StringBuffer(q);
cur.setCharAt(place, cur.charAt(k));
cur.setCharAt(k, '9');
String p=cur.toString();
if(p.equals(destination)){
return st+op[d];
}
if(!ht.containsKey(p)){
quee.add(p);
ht.put(p, st+op[d]);
}
}
}
}
}
public static void main(String[] args) {
System.out.println(new Puzzle("123456789","479658123").solveBfs());
//System.out.println();
}
}

stayesh
شنبه 20 تیر 1388, 20:29 عصر
سلام دوستان
مي شه با الگوريتم Bss هم بگذاريم لطفا يه خوده سريعتر:ناراحت:

qwerty11
سه شنبه 23 تیر 1388, 20:58 عصر
سلام دوستان
مي شه با الگوريتم Bss هم بگذاريم لطفا يه خوده سريعتر:ناراحت:

الگوریتم Bss دیگه چیه؟!! میشه یکم توضیح بدین؟؟؟

MTD_GOLD
دوشنبه 05 مرداد 1388, 22:45 عصر
qwerty11 (http://barnamenevis.org/forum/member.php?u=97849) عزیز
با عرض سلام و خسته نباشی
من به برنامه هشت وزیر نیاز مبرم دارم(برای جاوا)
اگه لطف کنی برنامه رو برام قرار بدی دعا گوت می شم
اگه یه توضیحی بدی که برنامه رو چه جوری نوشتی واقعا ممنونت می شم
یا علی

kadir_4
پنج شنبه 08 مرداد 1388, 23:12 عصر
دوستان این صفحه رو تو سایت codeproject حتماً ببینید.
الگوریتم پازل 8 تایی به کمک چند الگوریتم پیاده سازی شده.مطمئنا خیلی به دردتون میخوره.
http://www.codeproject.com/KB/recipes/Seshi8Puzzle.aspx
موفق باشید.

qwerty11
جمعه 09 مرداد 1388, 20:39 عصر
qwerty11 (http://barnamenevis.org/forum/member.php?u=97849) عزیز
با عرض سلام و خسته نباشی
من به برنامه هشت وزیر نیاز مبرم دارم(برای جاوا)
اگه لطف کنی برنامه رو برام قرار بدی دعا گوت می شم
اگه یه توضیحی بدی که برنامه رو چه جوری نوشتی واقعا ممنونت می شم
یا علی

اگه با الگوریتم پسگرد آشنا باشی این کد خیلی آسونه و مطمئناً متوجه میشی.


import java.util.Scanner;

public class NQuee {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] row = new int[n];
NQuee.putQuee(0, n, row);
}

static void putQuee(int k, int n, int[] row) {
for (int i = 0; i < n; i++) {
row[k] = i;
if (isSoloution(k, row)) {
if (k == n - 1) {
print(row);
System.err.println("");
}
else {
putQuee(k + 1, n, row);
}
}
}
}

static boolean isSoloution(int k, int[] row) {
for (int i = 0; i <= k - 1; i++) {
if (row[i] == row[k]) {
return false;
}
if (Math.abs(row[i] - row[k]) == Math.abs(i - k)) {
return false;
}
}
return true;
}

static void print(int[] row) {
for (int i = 0; i < row.length; i++) {
for (int j = 0; j < row.length; j++) {
if (j == row[i]) {
System.err.print("Q ");
}
else {
System.err.print(". ");
}
}
System.err.println("");
}
}
}

hamedyp
یک شنبه 30 آذر 1393, 12:57 عصر
برنامه پازل 15 تایی و استفاده از مرتب سازی اول عمق با زیان برنامه نویسی #c رو هم می تونید در سایت بزارید ممنون