My Project
majorPiece.h
Go to the documentation of this file.
1 /* majorPiece.h
2  */
3 
4 #ifndef EVAL_ML_MAJORPIECE_H
5 #define EVAL_ML_MAJORPIECE_H
6 
7 #include "osl/eval/weights.h"
8 #include "osl/eval/midgame.h"
9 #include "osl/numEffectState.h"
10 #include <cstdlib>
11 
12 namespace osl
13 {
14  namespace eval
15  {
16  namespace ml
17  {
18  template <bool Opening, Ptype MajorBasic>
19  class MajorY
20  {
21  private:
23  static int index(Piece piece)
24  {
25  return ((piece.owner() == BLACK) ? (piece.square().y() - 1) :
26  (9 - piece.square().y())) + (piece.isPromoted() ? 9 : 0);
27  }
28  public:
29  enum { DIM = 18 };
30  static void setUp(const Weights &weights);
31  static int eval(const NumEffectState &state)
32  {
33  int value = 0;
35  i < PtypeTraits<MajorBasic>::indexLimit;
36  ++i)
37  {
38  const Piece piece = state.pieceOf(i);
39  if (piece.isOnBoard())
40  {
41  if (piece.owner() == BLACK)
42  value += table[index(piece)];
43  else
44  value -= table[index(piece)];
45  }
46  }
47  return value;
48  }
49  };
50 
51  class RookYOpening : public MajorY<true, ROOK>
52  {
53  };
54  class RookYEnding : public MajorY<false, ROOK>
55  {
56  };
57  class BishopYOpening : public MajorY<true, BISHOP>
58  {
59  };
60  class BishopYEnding : public MajorY<false, BISHOP>
61  {
62  };
63 
64  template <bool Opening>
65  class RookPawn
66  {
67  public:
68  enum { DIM = 1 };
69  static void setUp(const Weights &weights);
70  static int eval(const NumEffectState &state);
71  private:
72  static int weight;
73  };
74  class RookPawnOpening : public RookPawn<true>
75  {
76  };
77  class RookPawnEnding : public RookPawn<false>
78  {
79  };
80 
81  class RookPawnY
82  {
83  friend class RookPawnYX;
84  public:
85  enum { ONE_DIM = 180, DIM = ONE_DIM * EvalStages };
86  static void setUp(const Weights &weights);
87  static MultiInt eval(const NumEffectState &state,
88  const CArray2d<int, 2, 9> &pawns);
89  private:
90  static int index(const Piece rook, const int pawn_y)
91  {
92  const int rook_y =
93  (rook.owner() == BLACK ? rook.square().y() : 10 - rook.square().y());
94  return (rook_y - 1) * 10 + pawn_y + (rook.isPromoted() ? 90 : 0);
95  }
96  static int indexY(const Square king,
97  const Piece rook, int pawn_y)
98  {
99  const int x_diff = std::abs(rook.square().x() - king.x());
100  const int rook_y =
101  (rook.owner() == BLACK ? rook.square().y() : 10 - rook.square().y());
102  return x_diff * 10 * 9 + (rook_y - 1) * 10 + pawn_y + (rook.isPromoted() ? 810 : 0);
103  }
107  };
108 
110  {
111  public:
112  enum { ONE_DIM = 1620, DIM = ONE_DIM * 2*EvalStages };
113  static void setUp(const Weights &weights);
114  };
115 
116  class AllMajor
117  {
118  public:
119  enum { DIM = 1 };
120  static void setUp(const Weights &weights,int stage);
121  static MultiInt eval(int black_major_count)
122  {
123  if (black_major_count == 4)
124  return weight;
125  else if (black_major_count == 0)
126  return -weight;
127 
128  return MultiInt();
129  }
130  private:
131  static MultiInt weight;
132  };
133 
134  template <bool Opening>
136  {
137  public:
138  enum { DIM = 32 };
139  static void setUp(const Weights &weights);
140  static int eval(const NumEffectState &state);
141  static int index(const NumEffectState &state, Piece piece);
142  template <Ptype PTYPE>
143  static int evalOne(const NumEffectState &state);
144  private:
146  };
147 
149  {
150  };
152  {
153  };
154 
156  {
157  friend class RookEffectPiece;
158  public:
159  enum { ONE_DIM = 612, DIM = ONE_DIM * 2 };
160  static MultiInt eval(const NumEffectState &state);
161  protected:
162  template<Player P>
163  static MultiInt evalOne(const NumEffectState& state,
164  Square rook,
165  Square myKing,
166  Square opKing,
167  Square up,
168  Square dp,
169  Square rp,
170  Square lp,
171  bool isP);
177  static int index(int abs_x_diff, int y_diff, bool horizontal, bool is_promoted)
178  {
179  return y_diff + 8 + abs_x_diff * 17 + (horizontal ? 153 : 0) +
180  (is_promoted ? 306 : 0);
181  }
190  static int index0(int abs_x_diff,int y_diff,
191  PtypeO ptypeO,
192  bool horizontal, bool promoted){
193  return y_diff+8+abs_x_diff*17+(ptypeO - PTYPEO_MIN) * 17 * 9 +
194  (horizontal ? 4896 : 0) + (promoted ? 9792 : 0);
195  }
205  static int index1(Square king,Square from,PtypeO ptypeO,bool isP)
206  {
207  int y_diff=from.y()-king.y();
208  int x_diff=from.x()-king.x();
209  return index1(x_diff,y_diff,ptypeO,isP);
210  }
219  static int index1(int x_diff,int y_diff,PtypeO ptypeO,bool isP){
220  assert(-9 <= y_diff && y_diff <= 9);
221  assert(-9 <= x_diff && x_diff <= 9);
222  assert(getPtype((PtypeO)ptypeO)!=PTYPE_EMPTY);
223  int index=(ptypeO-PTYPEO_MIN)+32*((y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0)));
224  assert(0<=index && index<32*19*19*2);
225  return index;
226  }
234  static int index2(Square king,Square from,bool isP)
235  {
236  int y_diff=from.y()-king.y();
237  int x_diff=from.x()-king.x();
238  return index2(x_diff,y_diff,isP);
239  }
246  static int index2(int x_diff,int y_diff,bool isP){
247  assert(-9 <= y_diff && y_diff <= 9);
248  assert(-9 <= x_diff && x_diff <= 9);
249  int index=(y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0));
250  assert(0<=index && index<19*19*2);
251  return index;
252  }
266  };
267  class RookEffect : public RookEffectBase
268  {
269  public:
270  static void setUp(const Weights &weights,int stage);
271  };
272 
274  {
275  public:
276  enum { DIM = 32 * EvalStages };
277  static void setUp(const Weights &weights);
278  };
280  {
281  public:
282  enum { ONE_DIM = 19584, DIM = ONE_DIM * 2*EvalStages };
283  static void setUp(const Weights & weights);
284  };
285 
287  {
289  public:
290  enum { ONE_DIM = 256, DIM = ONE_DIM * EvalStages };
291  static void setUp(const Weights &weights);
292  static MultiInt eval(const NumEffectState &state);
293  private:
296  };
297 
299  {
300  public:
301  enum { ONE_DIM = 144, DIM = ONE_DIM * EvalStages };
302  static void setUp(const Weights &weights);
303  private:
304  };
305 
307  {
308  friend class BishopEffectPiece;
309  public:
310  enum { ONE_DIM = 612, DIM = ONE_DIM * 2 };
311  static MultiInt eval(const NumEffectState &state);
312  protected:
313  template<Player P>
314  static MultiInt evalOne(const NumEffectState& state,
315  Square bishop,
316  Square myKing,
317  Square opKing,
318  Square ulp,
319  Square urp,
320  Square dlp,
321  Square drp,
322  bool isP);
323  static int index(int x_diff, int y_diff, bool ur, bool promoted)
324  {
325  if (x_diff<0)
326  ur = !ur;
327  return y_diff + 8 + std::abs(x_diff) * 17 + (ur ? 153 : 0) + (promoted ? 306 : 0);
328  }
329  static int index0(int x_diff, int y_diff,PtypeO ptypeO,bool ur, bool promoted)
330  {
331  if (x_diff>0)
332  ur = !ur;
333  return -y_diff + 8 + std::abs(x_diff) * 17 + (ptypeO - PTYPEO_MIN) * 17 * 9 +
334  (ur ? 4896 : 0) + (promoted ? 9792 : 0);
335  }
345  static int index1(Square king,Square from,PtypeO ptypeO,bool isP)
346  {
347  int y_diff=from.y()-king.y();
348  int x_diff=from.x()-king.x();
349  return index1(x_diff,y_diff,ptypeO,isP);
350  }
359  static int index1(int x_diff,int y_diff,PtypeO ptypeO,bool isP){
360  assert(-9 <= y_diff && y_diff <= 9);
361  assert(-9 <= x_diff && x_diff <= 9);
362  assert(getPtype((PtypeO)ptypeO)!=PTYPE_EMPTY);
363  int index=(ptypeO-PTYPEO_MIN)+32*((y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0)));
364  assert(0<=index && index<32*19*19*2);
365  return index;
366  }
374  static int index2(Square king,Square from,bool isP)
375  {
376  int y_diff=from.y()-king.y();
377  int x_diff=from.x()-king.x();
378  return index2(x_diff,y_diff,isP);
379  }
386  static int index2(int x_diff,int y_diff,bool isP){
387  assert(-9 <= y_diff && y_diff <= 9);
388  assert(-9 <= x_diff && x_diff <= 9);
389  int index=(y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0));
390  assert(0<=index && index<19*19*2);
391  return index;
392  }
406  };
408  {
409  public:
410  static void setUp(const Weights &weights,int stage);
411  };
413  {
414  public:
415  enum { DIM = 32*EvalStages };
416  static void setUp(const Weights &weights);
417  };
418 
420  {
421  public:
422  enum { ONE_DIM = 19584, DIM = ONE_DIM * 2*EvalStages };
423  static void setUp(const Weights & weights);
424  };
425 
427  {
429  friend class BishopHeadX;
430  public:
431  enum { ONE_DIM = 32, DIM = ONE_DIM * EvalStages };
432  static void setUp(const Weights &weights);
433  static MultiInt eval(const NumEffectState &state);
434  private:
435  static int indexK(Player player, PtypeO ptypeO, int x_diff, int y_diff)
436  {
437  if (player == WHITE)
438  {
439  ptypeO=(PtypeO)(static_cast<int>(ptypeO)^(~15));
440  }
441  if (player == WHITE)
442  {
443  y_diff = -y_diff;
444  }
445  return (ptypeOIndex(ptypeO) * 9 + x_diff) * 17 + y_diff + 8;
446  }
447  template <Player P>
448  static int indexX(PtypeO ptypeO, int x)
449  {
450  if (x > 5)
451  {
452  x = 10 - x;
453  }
454  if (P == WHITE)
455  {
456  ptypeO = altIfPiece(ptypeO);
457  }
458  return x - 1 + 5 * ptypeOIndex(ptypeO);
459  }
463  };
464 
466  {
467  public:
468  enum { ONE_DIM = 4896, DIM = ONE_DIM * EvalStages };
469  static void setUp(const Weights &weights);
470  };
472  {
473  public:
474  enum { ONE_DIM = 160, DIM = ONE_DIM * EvalStages };
475  static void setUp(const Weights &weights);
476  };
478  {
479  public:
480  enum { ONE_DIM = 374544, DIM = ONE_DIM * EvalStages };
481  static void setUp(const Weights &weights);
482  template<Player King>
483  static MultiInt evalOne(const NumEffectState &state);
484  static MultiInt eval(const NumEffectState &state);
485  private:
487  template <Player King>
488  static int index(const Square king, const Piece rook, const Piece bishop)
489  {
490  const int rook_x = std::abs(king.x() - rook.square().x());
491  const int bishop_x = std::abs(king.x() - bishop.square().x());
492  const int rook_y = (King == BLACK ? rook.square().y() - king.y() : king.y() - rook.square().y());
493  const int bishop_y = (King == BLACK ? bishop.square().y() - king.y() : king.y() - bishop.square().y());
494  return bishop_y + 8 + 17 * (bishop_x + 9 * (rook_y + 8 + 17 * (rook_x + 9 * ((bishop.owner() == King ? 1 : 0) + 2 * ((rook.owner() == King ? 1 : 0) + 2 * (2 * (bishop.isPromoted() ? 1 : 0) + (rook.isPromoted() ? 1 : 0)))))));
495  }
496  };
497 
499  {
503  public:
504  static MultiInt eval(const NumEffectState &state);
505  private:
506  static void countBetween(const NumEffectState &state,
507  Square king, Piece bishop,
508  int &self_count, int &opp_count,
509  int &total_count);
513  };
515  {
516  public:
517  enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
518  static void setUp(const Weights &weights);
519  };
521  {
522  public:
523  enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
524  static void setUp(const Weights &weights);
525  };
527  {
528  public:
529  enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
530  static void setUp(const Weights &weights);
531  };
533  {
534  public:
535  enum { ONE_DIM = 64, DIM = ONE_DIM * EvalStages };
536  static void setUp(const Weights &weights);
537  static MultiInt eval(const NumEffectState &state);
538  private:
539  static int index(Ptype ptype, bool self_with_support,
540  bool opp_with_support)
541  {
542  return ptype + PTYPE_SIZE * ((self_with_support ? 1 : 0) +
543  2 * (opp_with_support ? 1 : 0));
544  }
546  };
547 
548  class RookRook
549  {
550  public:
551  enum { ONE_DIM = 800, DIM = ONE_DIM * EvalStages };
552  static void setUp(const Weights &weights);
553  static MultiInt eval(const NumEffectState &state);
554  private:
555  template <bool SamePlayer, Player P>
556  static int index(Piece rook1, Piece rook2)
557  {
558  const int y1 = (rook1.isOnBoard() ? rook1.square().y() : 0);
559  const int y2 = (rook2.isOnBoard() ? rook2.square().y() : 0);
560  if (SamePlayer)
561  {
562  if (P == BLACK)
563  {
564  return y1 + 10 *
565  (y2 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
566  ((rook2.isPromoted() ? 1 : 0) + 2 *
567  (SamePlayer ? 1 : 0))));
568  }
569  else
570  {
571  if (y1 == 0 || y2 == 0 || y1 == y2)
572  {
573  return (10 - y1) % 10 + 10 *
574  ((10 - y2) % 10 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
575  ((rook2.isPromoted() ? 1 : 0) + 2 *
576  (SamePlayer ? 1 : 0))));
577  }
578  else
579  {
580  return (10 - y2) % 10 + 10 *
581  ((10 - y1) % 10 + 10 * ((rook2.isPromoted() ? 1 : 0) + 2 *
582  ((rook1.isPromoted() ? 1 : 0) + 2 *
583  (SamePlayer ? 1 : 0))));
584  }
585  }
586  }
587  else
588  {
589  return y1 + 10 *
590  (y2 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
591  ((rook2.isPromoted() ? 1 : 0) + 2 *
592  (SamePlayer ? 1 : 0))));
593  }
594  }
595  static int index(bool same_player, bool promoted1,
596  bool promoted2, int y1, int y2)
597  {
598  return y1 + 10 *
599  (y2 + 10 * ((promoted1 ? 1 : 0) + 2 *
600  ((promoted2 ? 1 : 0) + 2 *
601  (same_player ? 1 : 0))));
602  }
604  };
605 
607  {
608  public:
609  enum { ONE_DIM = 128, DIM = ONE_DIM * EvalStages };
610  static void setUp(const Weights &weights);
611  static MultiInt eval(const NumEffectState &state);
612  private:
613  static int index(Ptype ptype, bool self_with_support,
614  bool opp_with_support, bool vertical)
615  {
616  return ptype + PTYPE_SIZE * ((self_with_support ? 1 : 0) +
617  2 * (opp_with_support ? 1 : 0)) +
618  (vertical ? PTYPE_SIZE * 2 * 2 : 0);
619  }
621  };
622 
624  {
625  public:
626  enum { ONE_DIM = 32, DIM = ONE_DIM * EvalStages };
627  static void setUp(const Weights &weights);
628  static MultiInt eval(const NumEffectState &state);
629  private:
631  };
632 
634  {
635  public:
636  enum {
637  ONE_DIM = PTYPE_SIZE * 2/*bishop or rook*/ * 2 /*promotable*/,
639  };
640  static void setUp(const Weights &weights);
641  static MultiInt eval(const NumEffectState &state);
642  private:
644  template <Player Owner>
645  static MultiInt addOne(const NumEffectState &state);
646  static size_t index(Ptype ptype, bool is_rook, bool can_promote)
647  {
648  return ptype * 4 + is_rook * 2 + can_promote;
649  }
650  };
651 
653  {
654  public:
655  enum {
656  ONE_DIM = 5 * 9 * 9 * 9 * 9 * 9,
658  };
659  static void setUp(const Weights &weights);
660  static MultiInt eval(const NumEffectState &state);
661  private:
663  static size_t index(int rook_x, int rook_y, int silver_x, int silver_y,
664  int knight_x, int knight_y)
665  {
666  return knight_y + 9 * (knight_x + 9 * (silver_y + 9 * (silver_x + 9 * (rook_y + 9 * rook_x))));
667  }
668  };
669 
671  {
672  public:
673  enum {
674  ONE_DIM = 5 * 9 * 9 * 9 * 9 * 9,
676  };
677  static void setUp(const Weights &weights);
678  static MultiInt eval(const NumEffectState &state);
679  private:
681  static size_t index(int bishop_x, int bishop_y, int silver_x, int silver_y,
682  int knight_x, int knight_y)
683  {
684  return knight_y + 9 * (knight_x + 9 * (silver_y + 9 * (silver_x + 9 * (bishop_y + 9 * bishop_x))));
685  }
686  };
687 
689  {
690  public:
691  enum {
692  ONE_DIM = PTYPE_SIZE * PTYPE_SIZE * 2 * 2 * 2,
694  };
695  static void setUp(const Weights &weights);
696  static MultiInt eval(const NumEffectState &state);
697  private:
699  size_t maxActive() const { return 4; }
700  static int index(Ptype support, Ptype attack, bool has_gold,
701  bool rook_support, bool bishop_support)
702  {
703  return (unpromoteSafe(support)*16 + unpromoteSafe(attack))*8+has_gold*4
704  +rook_support*2+bishop_support;
705  }
706  template <Player Owner>
707  static void addOne(const NumEffectState &state, Piece rook, MultiInt&);
708  };
709  }
710  }
711 }
712 
713 #endif // EVAL_ML_MAJORPIECE_H
714 // ;;; Local Variables:
715 // ;;; mode:c++
716 // ;;; c-basic-offset:2
717 // ;;; End:
osl::eval::ml::RookSilverKnight::DIM
@ DIM
Definition: majorPiece.h:657
osl::eval::ml::BishopHead::king_table
static CArray< MultiInt, 4896 > king_table
Definition: majorPiece.h:461
osl::eval::ml::BishopHeadKingRelative
Definition: majorPiece.h:466
osl::eval::ml::BishopBishopPiece
Definition: majorPiece.h:533
osl::eval::ml::BishopStandFile5::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1177
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::DIM
@ DIM
Definition: majorPiece.h:523
osl::eval::ml::RookRookPiece::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1104
osl::eval::ml::BishopStandFile5::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:626
osl::eval::ml::RookPawnY::indexY
static int indexY(const Square king, const Piece rook, int pawn_y)
Definition: majorPiece.h:96
osl::eval::ml::AttackMajorsInBase::index
static int index(Ptype support, Ptype attack, bool has_gold, bool rook_support, bool bishop_support)
Definition: majorPiece.h:700
osl::eval::ml::BishopEffectBase
Definition: majorPiece.h:307
osl::eval::ml::RookEffectPiece::DIM
@ DIM
Definition: majorPiece.h:276
osl::Square
Definition: basic_type.h:532
osl::eval::ml::RookEffectBase::attack_l
static CArray< MultiInt, 23104 > attack_l
Definition: majorPiece.h:258
osl::eval::ml::MajorCheckWithCapture::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1209
osl::eval::ml::BishopHead::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:431
osl::eval::ml::RookPawnEnding
Definition: majorPiece.h:78
osl::eval::ml::RookRookPiece::DIM
@ DIM
Definition: majorPiece.h:609
osl::eval::ml::RookPawn::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:26
osl::container::QuadInt
Definition: quadInt.h:43
osl::eval::ml::BishopHeadKingRelative::DIM
@ DIM
Definition: majorPiece.h:468
osl::eval::ml::RookPawnYX
Definition: majorPiece.h:110
osl::eval::ml::RookEffectBase::defense_r
static CArray< MultiInt, 23104 > defense_r
Definition: majorPiece.h:263
osl::eval::ml::RookEffect::setUp
static void setUp(const Weights &weights, int stage)
Definition: majorPiece.cc:280
osl::eval::ml::BishopBishopPiece::DIM
@ DIM
Definition: majorPiece.h:535
osl::WHITE
@ WHITE
Definition: basic_type.h:10
osl::eval::ml::BishopStandFile5::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1187
osl::eval::ml::RookEffectBase::index2
static int index2(Square king, Square from, bool isP)
黒の飛車(竜)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス king - 玉の位置 from - 飛車(竜)の位置 isP - 竜...
Definition: majorPiece.h:234
osl::eval::ml::RookPromoteDefense::DIM
@ DIM
Definition: majorPiece.h:290
osl::eval::ml::RookPromoteDefense::promote_defense_table
static CArray< MultiInt, 256 > promote_defense_table
Definition: majorPiece.h:294
osl::eval::ml::BishopSilverKnight::DIM
@ DIM
Definition: majorPiece.h:675
osl::eval::ml::RookPromoteDefenseRookH::DIM
@ DIM
Definition: majorPiece.h:301
osl::eval::ml::KingRookBishop::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:750
osl::eval::ml::BishopHeadX::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:474
osl::eval::ml::BishopEffectBase::index
static int index(int x_diff, int y_diff, bool ur, bool promoted)
Definition: majorPiece.h:323
osl::eval::ml::BishopEffectBase::index0
static int index0(int x_diff, int y_diff, PtypeO ptypeO, bool ur, bool promoted)
Definition: majorPiece.h:329
osl::eval::ml::RookPawn::DIM
@ DIM
Definition: majorPiece.h:68
osl::eval::ml::RookRook::index
static int index(Piece rook1, Piece rook2)
Definition: majorPiece.h:556
osl::PTYPE_SIZE
const int PTYPE_SIZE
Definition: basic_type.h:107
osl::eval::ml::RookPawnY::DIM
@ DIM
Definition: majorPiece.h:85
osl::eval::ml::RookEffectPieceKingRelative::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:282
osl::eval::ml::RookPawn
Definition: majorPiece.h:66
osl::eval::ml::BishopEffectPiece::DIM
@ DIM
Definition: majorPiece.h:415
osl::eval::ml::RookPawnY::index
static int index(const Piece rook, const int pawn_y)
Definition: majorPiece.h:90
osl::eval::ml::RookEffectBase::index1
static int index1(int x_diff, int y_diff, PtypeO ptypeO, bool isP)
黒の飛車(竜)からの利きのある駒のindex {attack,defense}_{u,r,l,d} へのアクセスに使う (x_diff, y_diff) - 玉を基準に見た駒の相対位置 ptypeO -...
Definition: majorPiece.h:219
osl::eval::ml::BishopEffectBase::defense_table
static CArray< MultiInt, 612 > defense_table
Definition: majorPiece.h:394
osl::eval::ml::RookRook::index
static int index(bool same_player, bool promoted1, bool promoted2, int y1, int y2)
Definition: majorPiece.h:595
eval
weights.h
osl::eval::ml::RookYOpening
Definition: majorPiece.h:52
osl::eval::ml::RookPromoteDefense
Definition: majorPiece.h:287
osl::eval::ml::KingRookBishop
Definition: majorPiece.h:478
osl::eval::ml::BishopEffectBase::evalOne
static MultiInt evalOne(const NumEffectState &state, Square bishop, Square myKing, Square opKing, Square ulp, Square urp, Square dlp, Square drp, bool isP)
Definition: majorPiece.cc:480
osl::eval::ml::BishopEffectBase::DIM
@ DIM
Definition: majorPiece.h:310
osl::eval::ml::RookPromoteDefenseRookH
Definition: majorPiece.h:299
osl::eval::ml::BishopStandFile5::table
static CArray< MultiInt, 32 > table
Definition: majorPiece.h:630
osl::eval::ml::BishopHeadX
Definition: majorPiece.h:472
osl::getPtype
Ptype getPtype(PtypeO ptypeO)
Definition: basic_type.h:217
osl::eval::ml::RookPromoteDefense::promote_defense_rook_table
static CArray< MultiInt, 144 > promote_defense_rook_table
Definition: majorPiece.h:295
osl::eval::ml::BishopHeadX::DIM
@ DIM
Definition: majorPiece.h:474
osl::eval::ml::AllMajor::weight
static MultiInt weight
Definition: majorPiece.h:131
osl::eval::ml::RookEffectBase::attack_d
static CArray< MultiInt, 23104 > attack_d
Definition: majorPiece.h:257
osl::eval::ml::RookPawnY::y_defense_table
static CArray< MultiInt, 1620 > y_defense_table
Definition: majorPiece.h:106
osl::altIfPiece
PtypeO altIfPiece(PtypeO ptypeO)
Pieceの時にはowner を反転する
Definition: basic_type.h:281
osl::eval::ml::BishopEffectBase::defense_ul
static CArray< MultiInt, 23104 > defense_ul
Definition: majorPiece.h:401
osl::eval::ml::MajorGoldSilverAttackedEnding
Definition: majorPiece.h:152
osl::eval::ml::RookYEnding
Definition: majorPiece.h:55
osl::eval::ml::BishopSilverKnight
Definition: majorPiece.h:671
osl::eval::ml::NumPiecesBetweenBishopAndKing::opp_table
static CArray< MultiInt, 9 > opp_table
Definition: majorPiece.h:511
osl::eval::ml::Weights
Definition: weights.h:18
osl::PtypeTraits
Definition: ptypeTraits.h:12
osl::eval::ml::MajorGoldSilverAttacked::eval
static int eval(const NumEffectState &state)
Definition: majorPiece.cc:180
osl::eval::ml::MajorCheckWithCapture::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1249
osl::eval::ml::BishopEffectBase::attack_dl
static CArray< MultiInt, 23104 > attack_dl
Definition: majorPiece.h:399
osl::eval::ml::BishopStandFile5::DIM
@ DIM
Definition: majorPiece.h:626
osl::eval::ml::AllMajor::setUp
static void setUp(const Weights &weights, int stage)
Definition: majorPiece.cc:127
osl::eval::ml::MajorGoldSilverAttacked::evalOne
static int evalOne(const NumEffectState &state)
Definition: majorPiece.cc:157
osl::eval::ml::AttackMajorsInBase::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:692
osl::eval::ml::NumPiecesBetweenBishopAndKing::self_table
static CArray< MultiInt, 9 > self_table
Definition: majorPiece.h:510
osl::eval::ml::BishopStandFile5
Definition: majorPiece.h:624
osl::Ptype
Ptype
駒の種類を4ビットでコード化する
Definition: basic_type.h:84
osl::eval::ml::RookEffectPieceKingRelative::DIM
@ DIM
Definition: majorPiece.h:282
osl::eval::ml::MajorY::index
static int index(Piece piece)
Definition: majorPiece.h:23
osl::eval::ml::MajorY::DIM
@ DIM
Definition: majorPiece.h:29
osl::eval::ml::BishopHead::indexX
static int indexX(PtypeO ptypeO, int x)
Definition: majorPiece.h:448
osl::eval::ml::BishopBishopPiece::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:535
osl::eval::ml::MajorGoldSilverAttacked::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:138
osl::eval::ml::RookEffectPieceKingRelative::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:299
osl::eval::ml::MajorCheckWithCapture::addOne
static MultiInt addOne(const NumEffectState &state)
osl::eval::ml::MajorCheckWithCapture::table
static CArray< MultiInt, ONE_DIM > table
Definition: majorPiece.h:643
osl::eval::ml::BishopHeadKingRelative::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:468
osl::eval::ml::RookSilverKnight::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1269
osl::eval::ml::BishopHead::table
static CArray< MultiInt, 32 > table
Definition: majorPiece.h:460
osl::eval::ml::RookEffectBase::defense_d
static CArray< MultiInt, 23104 > defense_d
Definition: majorPiece.h:261
osl::eval::ml::BishopSilverKnight::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1353
osl::eval::ml::NumPiecesBetweenBishopAndKing::countBetween
static void countBetween(const NumEffectState &state, Square king, Piece bishop, int &self_count, int &opp_count, int &total_count)
Definition: majorPiece.cc:863
osl::eval::ml::AttackMajorsInBase::table
static CArray< MultiInt, ONE_DIM > table
Definition: majorPiece.h:698
osl::Piece
駒.
Definition: basic_type.h:788
osl::eval::ml::MajorCheckWithCapture::index
static size_t index(Ptype ptype, bool is_rook, bool can_promote)
Definition: majorPiece.h:646
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp
Definition: majorPiece.h:521
osl::eval::ml::RookRook::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1062
osl::eval::ml::RookRook::DIM
@ DIM
Definition: majorPiece.h:551
osl::eval::ml::KingRookBishop::DIM
@ DIM
Definition: majorPiece.h:480
osl::eval::ml::RookEffectPiece::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:289
osl::eval::ml::BishopEffectPiece
Definition: majorPiece.h:413
osl::eval::ml::MajorGoldSilverAttacked::DIM
@ DIM
Definition: majorPiece.h:138
osl::eval::ml::RookEffectBase::DIM
@ DIM
Definition: majorPiece.h:159
osl::eval::ml::BishopBishopPiece::table
static CArray< MultiInt, 64 > table
Definition: majorPiece.h:545
osl::SimpleState::pieceOf
const Piece pieceOf(int num) const
Definition: simpleState.h:76
osl::eval::ml::RookEffectBase::evalOne
static MultiInt evalOne(const NumEffectState &state, Square rook, Square myKing, Square opKing, Square up, Square dp, Square rp, Square lp, bool isP)
Definition: majorPiece.cc:209
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::DIM
@ DIM
Definition: majorPiece.h:517
osl::eval::ml::RookEffectBase::index1
static int index1(Square king, Square from, PtypeO ptypeO, bool isP)
黒の飛車(竜)からの利きのある駒のindex {attack,defense}_{u,r,l,d} へのアクセスに使う from - 駒の位置 king - 玉の位置 ptypeO - 駒の種類,白から...
Definition: majorPiece.h:205
osl::eval::ml::RookRook::table
static CArray< MultiInt, 800 > table
Definition: majorPiece.h:603
osl::eval::ml::RookPromoteDefenseRookH::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:301
osl::eval::ml::RookPawnY::eval
static MultiInt eval(const NumEffectState &state, const CArray2d< int, 2, 9 > &pawns)
Definition: majorPiece.cc:84
osl::eval::ml::BishopEffectBase::piece_table
static CArray< MultiInt, 32 > piece_table
Definition: majorPiece.h:395
osl::eval::ml::RookPawnY::table
static CArray< MultiInt, 180 > table
Definition: majorPiece.h:104
osl::eval::ml::BishopEffectBase::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:310
osl::eval::ml::RookPromoteDefenseRookH::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:387
osl::eval::ml::RookRookPiece::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1094
osl::eval::ml::BishopEffectBase::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:523
osl::eval::ml::BishopEffectPiece::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:559
osl::eval::ml::RookEffectBase::defense_table
static CArray< MultiInt, 612 > defense_table
Definition: majorPiece.h:254
osl::eval::ml::RookEffectPieceKingRelative
Definition: majorPiece.h:280
osl::eval::ml::RookPawn::weight
static int weight
Definition: majorPiece.h:72
osl::eval::ml::MajorCheckWithCapture::DIM
@ DIM
Definition: majorPiece.h:638
osl::eval::ml::RookEffectBase::attack_table
static CArray< MultiInt, 612 > attack_table
Definition: majorPiece.h:253
osl::eval::ml::RookEffectBase::piece_table
static CArray< MultiInt, 32 > piece_table
Definition: majorPiece.h:255
osl::eval::ml::RookRook
Definition: majorPiece.h:549
midgame.h
osl::eval::ml::BishopEffectBase::attack_dr
static CArray< MultiInt, 23104 > attack_dr
Definition: majorPiece.h:398
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::DIM
@ DIM
Definition: majorPiece.h:529
osl::eval::ml::RookEffectBase::index0
static int index0(int abs_x_diff, int y_diff, PtypeO ptypeO, bool horizontal, bool promoted)
黒の飛車(竜)から利きのある駒 (abs_x_diff, y_diff) - 駒を基準にした玉の相対位置 abs_x_diffは絶対値 ptypeO - 駒のptypeO,...
Definition: majorPiece.h:190
osl::eval::ml::MajorCheckWithCapture
Definition: majorPiece.h:634
osl::eval::ml::RookRook::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1002
osl::eval::ml::BishopBishopPiece::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:923
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:517
osl::eval::ml::RookEffectBase::attack_r
static CArray< MultiInt, 23104 > attack_r
Definition: majorPiece.h:259
osl::eval::ml::KingRookBishop::evalOne
static MultiInt evalOne(const NumEffectState &state)
Definition: majorPiece.cc:761
osl::eval::ml::NumPiecesBetweenBishopAndKing::all_table
static CArray< MultiInt, 9 > all_table
Definition: majorPiece.h:512
osl::Piece::isPromoted
bool isPromoted() const
promoteした駒かどうかをチェックする
Definition: basic_type.h:898
osl::eval::ml::BishopHead::x_table
static CArray< MultiInt, 160 > x_table
Definition: majorPiece.h:462
osl::eval::ml::RookSilverKnight::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1259
osl::eval::ml::AttackMajorsInBase::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:1483
osl::eval::ml::BishopHead::indexK
static int indexK(Player player, PtypeO ptypeO, int x_diff, int y_diff)
Definition: majorPiece.h:435
osl::eval::ml::BishopBishopPiece::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:933
osl::eval::ml::RookEffectBase::index
static int index(int abs_x_diff, int y_diff, bool horizontal, bool is_promoted)
(abs_x_diff, y_diff) - 玉を原点とした時の空マスの相対位置 horizontal - 飛車の横利きがある場合 is_promoted - 竜の場合
Definition: majorPiece.h:177
osl::eval::ml::BishopEffectPieceKingRelative::DIM
@ DIM
Definition: majorPiece.h:422
osl::eval::ml::KingRookBishop::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:480
osl::eval::ml::RookSilverKnight::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:656
osl::Piece::owner
Player owner() const
Definition: basic_type.h:963
osl::eval::ml::RookPromoteDefense::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:290
osl::eval::ml::MajorCheckWithCapture::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:637
osl::eval::ml::RookEffectBase::index2
static int index2(int x_diff, int y_diff, bool isP)
黒の飛車(竜)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス (x_diff, y_diff) - 玉を基準にしてみた飛車(竜)の相...
Definition: majorPiece.h:246
osl::Square::x
int x() const
将棋としてのX座標を返す.
Definition: basic_type.h:563
osl::eval::ml::BishopEffectPieceKingRelative::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:570
osl::eval::ml::AttackMajorsInBase::DIM
@ DIM
Definition: majorPiece.h:693
osl::PtypeO
PtypeO
Player + Ptype [-15, 15] PtypeO の O は Owner の O.
Definition: basic_type.h:199
osl::eval::ml::BishopHead
Definition: majorPiece.h:427
osl::eval::ml::MajorGoldSilverAttacked::table
static CArray< int, 32 > table
Definition: majorPiece.h:145
osl::NumEffectState
利きを持つ局面
Definition: numEffectState.h:34
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:523
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf
Definition: majorPiece.h:515
osl::eval::ml::RookEffectBase::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:254
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:801
osl::eval::ml::RookEffectBase::attack_nospace
static CArray< MultiInt, 722 > attack_nospace
Definition: majorPiece.h:264
osl::eval::ml::RookPawnY::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:85
osl::eval::ml::RookRook::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:551
osl::eval::ml::NumPiecesBetweenBishopAndKingAll
Definition: majorPiece.h:527
osl::eval::ml::BishopSilverKnight::table
static CArray< MultiInt, ONE_DIM > table
Definition: majorPiece.h:680
osl::eval::ml::AttackMajorsInBase::maxActive
size_t maxActive() const
Definition: majorPiece.h:699
osl::unpromoteSafe
constexpr Ptype unpromoteSafe(Ptype ptype)
Definition: basic_type.h:164
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:529
osl::Square::y
int y() const
将棋としてのY座標を返す.
Definition: basic_type.h:567
osl::eval::ml::NumPiecesBetweenBishopAndKing
Definition: majorPiece.h:499
osl::eval::ml::AllMajor
Definition: majorPiece.h:117
osl::eval::ml::RookEffectPiece
Definition: majorPiece.h:274
osl::eval::ml::BishopEffectBase::defense_dl
static CArray< MultiInt, 23104 > defense_dl
Definition: majorPiece.h:403
osl::eval::ml::RookEffectBase::defense_nospace
static CArray< MultiInt, 722 > defense_nospace
Definition: majorPiece.h:265
osl::eval::ml::RookSilverKnight::index
static size_t index(int rook_x, int rook_y, int silver_x, int silver_y, int knight_x, int knight_y)
Definition: majorPiece.h:663
osl::MultiInt
QuadInt MultiInt
Definition: midgame.h:13
osl::eval::ml::BishopHead::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:707
osl::PTYPEO_MIN
@ PTYPEO_MIN
Definition: basic_type.h:200
osl::eval::ml::RookEffectBase::defense_u
static CArray< MultiInt, 23104 > defense_u
Definition: majorPiece.h:260
osl::eval::ml::MajorY
Definition: majorPiece.h:20
osl::eval::ml::BishopEffectBase::defense_dr
static CArray< MultiInt, 23104 > defense_dr
Definition: majorPiece.h:402
osl::eval::ml::BishopEffectBase::attack_table
static CArray< MultiInt, 612 > attack_table
Definition: majorPiece.h:393
osl::Piece::square
const Square square() const
Definition: basic_type.h:832
osl::eval::ml::BishopEffectBase::index2
static int index2(int x_diff, int y_diff, bool isP)
黒の角(馬)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス (x_diff, y_diff) - 玉を基準にしてみた角(馬)の相対位...
Definition: majorPiece.h:386
osl::eval::ml::BishopEffectBase::attack_ul
static CArray< MultiInt, 23104 > attack_ul
Definition: majorPiece.h:397
osl::eval::ml::RookPawnOpening
Definition: majorPiece.h:75
osl::eval::ml::MajorGoldSilverAttackedOpening
Definition: majorPiece.h:149
osl::eval::ml::BishopHead::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:664
osl::BLACK
@ BLACK
Definition: basic_type.h:9
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:812
osl::ptypeOIndex
unsigned int ptypeOIndex(PtypeO ptypeo)
Definition: basic_type.h:205
osl::eval::ml::RookEffectBase::attack_u
static CArray< MultiInt, 23104 > attack_u
Definition: majorPiece.h:256
osl::eval::ml::RookPawn::eval
static int eval(const NumEffectState &state)
Definition: majorPiece.cc:32
osl::eval::ml::RookPawnYX::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:60
osl::eval::ml::RookPawnYX::DIM
@ DIM
Definition: majorPiece.h:112
osl::eval::ml::RookEffect
Definition: majorPiece.h:268
osl::eval::ml::BishopHeadKingRelative::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:674
osl::eval::ml::RookPawnY
Definition: majorPiece.h:82
osl::eval::ml::RookRookPiece
Definition: majorPiece.h:607
osl::eval::ml::RookRookPiece::table
static CArray< MultiInt, 128 > table
Definition: majorPiece.h:620
osl::eval::ml::RookSilverKnight
Definition: majorPiece.h:653
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:823
osl::eval::ml::BishopEffectBase::index1
static int index1(int x_diff, int y_diff, PtypeO ptypeO, bool isP)
黒の角(馬)からの利きのある駒のindex {attack,defense}_{ul,ur,dl,dr} へのアクセスに使う (x_diff, y_diff) - 玉を基準に見た駒の相対位置 ptype...
Definition: majorPiece.h:359
osl::eval::ml::RookPawnY::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:74
osl::eval::ml::RookRookPiece::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:609
osl::eval::ml::BishopYOpening
Definition: majorPiece.h:58
osl::PTYPE_EMPTY
@ PTYPE_EMPTY
Definition: basic_type.h:85
osl::eval::ml::BishopEffectBase::defense_nospace
static CArray< MultiInt, 722 > defense_nospace
Definition: majorPiece.h:405
osl::eval::ml::RookPawnYX::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:112
osl::eval::ml::KingRookBishop::index
static int index(const Square king, const Piece rook, const Piece bishop)
Definition: majorPiece.h:488
osl::eval::ml::AttackMajorsInBase
Definition: majorPiece.h:689
osl::eval::ml::BishopSilverKnight::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:674
osl::eval::ml::MajorGoldSilverAttacked
Definition: majorPiece.h:136
osl::eval::ml::AllMajor::eval
static MultiInt eval(int black_major_count)
Definition: majorPiece.h:121
osl::Player
Player
Definition: basic_type.h:8
numEffectState.h
osl::eval::ml::AttackMajorsInBase::addOne
static void addOne(const NumEffectState &state, Piece rook, MultiInt &)
Definition: majorPiece.cc:1439
osl::eval::ml::BishopHead::DIM
@ DIM
Definition: majorPiece.h:431
osl::eval::ml::BishopEffectBase::attack_ur
static CArray< MultiInt, 23104 > attack_ur
Definition: majorPiece.h:396
osl::eval::ml::RookEffectBase::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:159
osl::eval::ml::BishopBishopPiece::index
static int index(Ptype ptype, bool self_with_support, bool opp_with_support)
Definition: majorPiece.h:539
osl::eval::ml::KingRookBishop::table
static CArray< MultiInt, 374544 > table
Definition: majorPiece.h:486
osl::eval::ml::RookRookPiece::index
static int index(Ptype ptype, bool self_with_support, bool opp_with_support, bool vertical)
Definition: majorPiece.h:613
osl::eval::ml::MajorY::table
static CArray< int, 18 > table
Definition: majorPiece.h:22
osl::eval::ml::BishopEffectBase::defense_ur
static CArray< MultiInt, 23104 > defense_ur
Definition: majorPiece.h:400
osl::CArray< int, 18 >
osl::eval::ml::RookPromoteDefense::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:378
osl::eval::ml::BishopSilverKnight::index
static size_t index(int bishop_x, int bishop_y, int silver_x, int silver_y, int knight_x, int knight_y)
Definition: majorPiece.h:681
osl::eval::ml::RookEffectBase
Definition: majorPiece.h:156
osl::eval::ml::RookPromoteDefense::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:398
osl::eval::ml::MajorGoldSilverAttacked::index
static int index(const NumEffectState &state, Piece piece)
Definition: majorPiece.cc:148
osl::eval::ml::BishopYEnding
Definition: majorPiece.h:61
osl::eval::ml::BishopEffectPieceKingRelative
Definition: majorPiece.h:420
osl::eval::ml::MajorY::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:12
osl::eval::ml::MajorY::eval
static int eval(const NumEffectState &state)
Definition: majorPiece.h:31
osl::eval::ml::BishopEffectBase::index1
static int index1(Square king, Square from, PtypeO ptypeO, bool isP)
黒の角(馬)からの利きのある駒のindex {attack,defense}_{ul,ur,dl,dr} へのアクセスに使う from - 駒の位置 king - 玉の位置 ptypeO - 駒の種類,...
Definition: majorPiece.h:345
osl::eval::ml::BishopEffectPieceKingRelative::ONE_DIM
@ ONE_DIM
Definition: majorPiece.h:422
osl::eval::ml::RookSilverKnight::table
static CArray< MultiInt, ONE_DIM > table
Definition: majorPiece.h:662
osl::Piece::isOnBoard
bool isOnBoard() const
Definition: basic_type.h:985
osl::eval::ml::RookPawnY::y_attack_table
static CArray< MultiInt, 1620 > y_attack_table
Definition: majorPiece.h:105
osl::eval::ml::BishopHeadX::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:697
osl::eval::ml::RookEffectBase::defense_l
static CArray< MultiInt, 23104 > defense_l
Definition: majorPiece.h:262
osl::eval::ml::BishopEffectBase::index2
static int index2(Square king, Square from, bool isP)
黒の角(馬)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス king - 玉の位置 from - 角(馬)の位置 isP - 馬の場...
Definition: majorPiece.h:374
osl::eval::ml::BishopSilverKnight::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1343
osl::eval::ml::AllMajor::DIM
@ DIM
Definition: majorPiece.h:119
osl::eval::ml::BishopEffect::setUp
static void setUp(const Weights &weights, int stage)
Definition: majorPiece.cc:550
osl
Definition: additionalEffect.h:6
osl::eval::ml::BishopEffect
Definition: majorPiece.h:408
osl::eval::ml::BishopEffectBase::attack_nospace
static CArray< MultiInt, 722 > attack_nospace
Definition: majorPiece.h:404
osl::eval::ml::NumPiecesBetweenBishopAndKing::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:834
osl::EvalStages
const int EvalStages
Definition: midgame.h:12
osl::eval::ml::AttackMajorsInBase::setUp
static void setUp(const Weights &weights)
Definition: majorPiece.cc:1427
osl::eval::ml::KingRookBishop::eval
static MultiInt eval(const NumEffectState &state)
Definition: majorPiece.cc:790