!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.16 (Debian). PHP/5.3.3-7+squeeze19 

uname -a: Linux mail.tri-specialutilitydistrict.com 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC
2014 x86_64
 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/share/pyshared/glchess/chess/   drwxr-xr-x
Free 130 GB of 142.11 GB (91.48%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     bitboard.py (6.75 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# -*- coding: utf-8 -*-

#
#
#      +---+---+---+---+---+---+---+---+
#    8 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
#      +---+---+---+---+---+---+---+---+
#    7 | . |   | . |   | . |   | . |   |
#      +---+---+---+---+---+---+---+---+
#    6 |   | . |   | . |   | . |   | . |
# r    +---+---+---+---+---+---+---+---+
# a  5 | . |   | . |   | . |   | . |   |
# n    +---+---+---+---+---+---+---+---+
# k  4 |   | . |   | . |   | . |   | . |
# s    +---+---+---+---+---+---+---+---+
#    3 | . |   | . |   | . |   | . |   |
#      +---+---+---+---+---+---+---+---+
#    2 |   | . |   | . |   | . |   | . |
#      +---+---+---+---+---+---+---+---+
#    1 |56 |57 |58 |59 |60 |61 |62 |63 |
#      +---+---+---+---+---+---+---+---+
#
#        a   b   c   d   e   f   g   h
#                    files

def getIndex(square):
    file = ord(square[0]) - ord('a')
    rank = ord(square[1]) - ord('1')
    return (7 - rank) * 8 + file

def getRankAndFile(index):
    file = index % 8
    rank = 7 - (index / 8)
    return (file, rank)

def reflectField(field):
    outField = 0
    for i in xrange(64):
        if field & LOCATIONS[i]:
            (file, rank) = getRankAndFile(i)
            outField |= LOCATIONS[rank * 8 + file]
    return outField

def reflectMoves(inMoves, outMoves):
    for i in xrange(64):
        (file, rank) = getRankAndFile(i)
        outMoves[rank * 8 + file] = reflectField(inMoves[i])

def printField(field):
    string = '+---+---+---+---+---+---+---+---+\n'
    rowCount = 0
    colour = ' '
    for l in LOCATIONS:
        if field & l:
            string += '|[%s]' % colour
        else:
            string += '| %s ' % colour
        rowCount += 1
        if rowCount == 8:
            rowCount = 0
            string += '|\n+---+---+---+---+---+---+---+---+\n'
        else:
            if colour == ' ':
                colour = '.'
            else:
                colour = ' '
    print string

LOCATIONS = [0x0000000000000001, 0x0000000000000002, 0x0000000000000004, 0x0000000000000008,
             0x0000000000000010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080,
             0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x0000000000000800,
             0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000,
             0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000,
             0x0000000000100000, 0x0000000000200000, 0x0000000000400000, 0x0000000000800000,
             0x0000000001000000, 0x0000000002000000, 0x0000000004000000, 0x0000000008000000,
             0x0000000010000000, 0x0000000020000000, 0x0000000040000000, 0x0000000080000000,
             0x0000000100000000, 0x0000000200000000, 0x0000000400000000, 0x0000000800000000,
             0x0000001000000000, 0x0000002000000000, 0x0000004000000000, 0x0000008000000000,
             0x0000010000000000, 0x0000020000000000, 0x0000040000000000, 0x0000080000000000,
             0x0000100000000000, 0x0000200000000000, 0x0000400000000000, 0x0000800000000000,
             0x0001000000000000, 0x0002000000000000, 0x0004000000000000, 0x0008000000000000,
             0x0010000000000000, 0x0020000000000000, 0x0040000000000000, 0x0080000000000000,
             0x0100000000000000, 0x0200000000000000, 0x0400000000000000, 0x0800000000000000,
             0x1000000000000000, 0x2000000000000000, 0x4000000000000000, 0x8000000000000000]
             
KNIGHT_MOVES = [0xFFFFFFFFFFFFFFFF] * 64
WHITE_PAWN_MOVES = KNIGHT_MOVES[:]
WHITE_PAWN_TAKES = KNIGHT_MOVES[:]
BLACK_PAWN_MOVES = KNIGHT_MOVES[:]
BLACK_PAWN_TAKES = KNIGHT_MOVES[:]
ROOK_MOVES = KNIGHT_MOVES[:]
BISHOP_MOVES = KNIGHT_MOVES[:]
KNIGHT_MOVES = KNIGHT_MOVES[:]
QUEEN_MOVES = KNIGHT_MOVES[:]
WHITE_KING_MOVES = KNIGHT_MOVES[:]
BLACK_KING_MOVES = KNIGHT_MOVES[:]

INBETWEEN_SQUARES = [None] * 64
for i in xrange(64):
    INBETWEEN_SQUARES[i] = [0L] * 64

def genMoves():    
    for start in xrange(64):
        (f0, r0) = getRankAndFile(start)
        pawnField = 0
        pawnTakeField = 0
        rookField = 0
        bishopField = 0
        knightField = 0
        queenField = 0
        kingField = 0

        for end in xrange(64):
            # Ignore null move
            if end == start:
                continue

            (f1, r1) = getRankAndFile(end)
            endField = LOCATIONS[end]
            
            ibField = 0
            # Vertical, horizontal or diagonal
            if f0 == f1 or r0 == r1 or abs(f0 - f1) == abs(r0 - r1):
                fstep = cmp(f1, f0)
                rstep = cmp(r1, r0)
                file = f0 + fstep
                rank = r0 + rstep
                count = max(abs(f0 - f1), abs(r0 - r1)) - 1
                for i in xrange(count):
                    ibField |= LOCATIONS[(7 - rank) * 8 + file]
                    file += fstep
                    rank += rstep
                
            INBETWEEN_SQUARES[start][end] = ibField

            # Pawn moves
            if f0 == f1:
                if r1 - r0 == 1:
                    pawnField |= endField
                # March
                if r0 == 1 and r1 == 3:
                    pawnField |= endField
                    
            # Pawn takes
            if abs(f0 - f1) == 1 and r1 - r0 == 1:
                pawnField |= endField
                pawnTakeField |= endField
            
            # Knight moves
            if abs(f0 - f1) * abs(r0 - r1) == 2:
                knightField |= endField
                
            # Do diagonals
            if abs(f0 - f1) == abs(r0 - r1):
                bishopField |= endField
                queenField |= endField
        
            # Do orthogonals
            if abs(f0 - f1) * abs(r0 - r1) == 0:
                rookField |= endField
                queenField |= endField

            # Standard king
            if abs(f0 - f1) <= 1 and abs(r0 - r1) <= 1:
                kingField |= endField
                
            # Castling
            if r0 == r1 and r0 == 0 and f0 == 4 and abs(f0 - f1) == 2:
                kingField |= endField

        WHITE_PAWN_MOVES[start] = pawnField
        WHITE_PAWN_TAKES[start] = pawnTakeField
        ROOK_MOVES[start] = rookField
        BISHOP_MOVES[start] = bishopField
        KNIGHT_MOVES[start] = knightField
        QUEEN_MOVES[start] = queenField
        WHITE_KING_MOVES[start] = kingField

    reflectMoves(WHITE_PAWN_MOVES, BLACK_PAWN_MOVES)
    reflectMoves(WHITE_PAWN_TAKES, BLACK_PAWN_TAKES)
    reflectMoves(WHITE_KING_MOVES, BLACK_KING_MOVES)

    move = 60
    #printField(WHITE_PAWN_MOVES[move])
    #printField(WHITE_PAWN_TAKES[move])
    #printField(BLACK_PAWN_MOVES[move])
    #printField(BLACK_PAWN_TAKES[move])
    #printField(ROOK_MOVES[move])
    #printField(BISHOP_MOVES[move])
    #printField(KNIGHT_MOVES[move])
    #printField(QUEEN_MOVES[move])
    #printField(WHITE_KING_MOVES[move])

genMoves()

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0202 ]--