Guest User

Untitled

a guest
Jun 23rd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace lolepes
  7. {
  8.  
  9.  
  10. /// <summary>
  11. /// Ez az osztály az állapot tér reprezentáció
  12. /// Feladat:
  13. /// Egy N x N-es tábla bal felső sarkából juttassuk el
  14. /// a lovat szabályos lólépésekben a jobb alsó sarokba.
  15. ///
  16. /// Kezdőállapot(ha N=4) =
  17. ///
  18. /// 00000000
  19. /// 00000000
  20. /// 00H00000
  21. /// 00000000
  22. /// 00000000
  23. /// 00000000
  24. /// 00000000
  25. /// 00000000
  26. ///
  27. /// (az 1.,uccsó 2 0 margó,felső és alsó 2 sor szintén)
  28. ///
  29. ///
  30. /// Egy állapotot így jellemzünk:
  31. ///
  32. /// char[][] tábla; [Itt van a tábla állapota(Semmi=0,Huszár=H)]
  33. /// int xH,yH; (Huszár helye);
  34. /// Kezdetben xH=2; yH=2;
  35. /// Vége,ha xH=5; yH=5;
  36. ///
  37. /// Operátorok:
  38. ///
  39. /// Lólépések,8db:
  40. ///
  41. /// -2,-1
  42. /// -2,1
  43. /// 2,-1
  44. /// 2,1
  45. /// -1,-2
  46. /// -1,2
  47. /// 1,-2
  48. /// 1,2
  49. ///
  50. /// Előfeltétel:
  51. /// igaz(Amúgy nincs)
  52. /// Utófeltétel:
  53. /// Nem szabad margón állni, azaz
  54. ///
  55. /// xH nagyobb-egyenlő, mint 2,
  56. /// yH nagyobb-egyenlő, mint 2,
  57. /// xH kisebb-egyenlő, mint 5,
  58. /// yH kisebb-egyenlő, mint 5,
  59. ///
  60. /// </summary>
  61. class Állapot
  62. {
  63.  
  64. private const int N = 4;
  65. private char[,] tábla = new char[N, N];
  66. private int xH, yH;
  67.  
  68. //konstruktor kezdőértéket állít be
  69.  
  70. public Állapot()
  71. {
  72. for (int i = 0; i < N; i++)
  73. {
  74. for (int j = 0; j < N; j++)
  75. {
  76. tábla[i,j]='0';
  77. }
  78. }
  79. tábla[2, 2] = 'H';
  80.  
  81. xH = 2;
  82. yH = 2;
  83.  
  84. }
  85.  
  86. public bool ÁllapotE()
  87. {
  88. //A táblán tartja a huszárt,nem engedi margóra
  89. return xH >= 2 && xH <= N + 1 && yH >= 2 && yH <= N + 1;
  90. }
  91.  
  92. public bool VégállapotE()
  93. {
  94. return xH == N + 1 && yH == N+1;
  95. }
  96.  
  97. // "O" (Operátor) megadása szuperoperátorral
  98. //A szuperoperátor az alapoperátorokat hívja
  99. //Mindig cask egy paramétere van: Melyik alapoperátort kell hívni
  100.  
  101. public Állapot SzuperOp(int i)
  102. {
  103. switch (i)
  104. {
  105. case 0: return lólépés(-2, -1);
  106. case 1: return lólépés(-2, 1);
  107. case 2: return lólépés(2, -1);
  108. case 3: return lólépés(2, -1);
  109. case 4: return lólépés(-1, -2);
  110. case 5: return lólépés(-1, 2);
  111. case 6: return lólépés(1, -2);
  112. case 7: return lólépés(1, 2);
  113. default: return null;
  114. }
  115.  
  116. }
  117.  
  118. private Állapot lólépés(int relativX,int relativY)
  119.  
  120. {
  121. if (preLólépés(relativX,relativY) )
  122. {
  123. Állapot újÁllapot = new Állapot();
  124. újÁllapot.tábla[2, 2] = '0'; //Kivettem a huszárt
  125. újÁllapot.xH = this.xH + relativX;
  126. újÁllapot.yH = this.yH + relativY;
  127. újÁllapot.tábla[újÁllapot.xH, újÁllapot.yH] = 'H';
  128.  
  129. if (újÁllapot.ÁllapotE()) return újÁllapot;
  130.  
  131. }
  132. return null;
  133.  
  134. }
  135.  
  136. private bool preLólépés(int relativX, int relativY)
  137. {
  138. return true;
  139. }
  140. }
  141.  
  142. class Program
  143. {
  144. static void Main(string[] args)
  145. {
  146. }
  147. }
  148. }
Add Comment
Please, Sign In to add comment