PASTEBIN
| #1 paste tool since 2002
create new paste
tools
api
archive
real-time
faq
PASTEBIN
create new paste
trending pastes
sign up
login
my alerts
my settings
my profile
Got an iPhone or iPad? We have a brand new Pastebin App for both devices, and it's totally free!
Click here to download the new Pastebin App for iOS
.
Public Pastes
Untitled
2 sec ago
Untitled
2 sec ago
Untitled
5 sec ago
Untitled
7 sec ago
Untitled
11 sec ago
Untitled
12 sec ago
Untitled
12 sec ago
Untitled
37 sec ago
New Paste
DEFINT A-Z DECLARE SUB SQUARE (A, B, C) DECLARE SUB SHOWMAN (A, B, FLAG) DECLARE SUB SHOWBD () DECLARE SUB IO (A, B, X, Y, RESULT) DECLARE FUNCTION INCHECK (X) DECLARE SUB MAKEMOVE (A, B, X, Y) DECLARE SUB KNIGHT (A, B, XX(), YY(), NDX) DECLARE SUB KING (A, B, XX(), YY(), NDX) DECLARE SUB QUEEN (A, B, XX(), YY(), NDX) DECLARE SUB ROOK (A, B, XX(), YY(), NDX) DECLARE SUB BISHOP (A, B, XX(), YY(), NDX) DECLARE SUB MOVELIST (A, B, XX(), YY(), NDX) DECLARE SUB PAWN (A, B, XX(), YY(), NDX) DECLARE FUNCTION EVALUATE (ID, PRUNE) DIM SHARED BOARD(0 TO 7, 0 TO 7) DIM SHARED BESTA(0 TO 7), BESTB(0 TO 7), BESTX(0 TO 7), BESTY(0 TO 7) DIM SHARED LEVEL, MAXLEVEL, SCORE, CFLAG CFLAG = 0 LEVEL = 0 MAXLEVEL = 5 DATA -500,-270,-300,-900,-7500,-300,-270,-500 DATA -100,-100,-100,-100, -100,-100,-100,-100 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 100, 100, 100, 100, 100, 100, 100, 100 DATA 500, 270, 300, 900, 5000, 300, 270, 500 FOR X = 0 TO 7 FOR Y = 0 TO 7 READ Z BOARD(X, Y) = Z NEXT Y NEXT X A = -1 RESULT = 0 DO SCORE = 0 CALL IO(A, B, X, Y, RESULT) CLS CALL SHOWBD RESULT = EVALUATE(-1, 10000) A = BESTA(1) B = BESTB(1) X = BESTX(1) Y = BESTY(1) LOOP SUB BISHOP (A, B, XX(), YY(), NDX) ID = SGN(BOARD(B, A)) FOR DXY = 1 TO 7 X = A - DXY Y = B + DXY IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR GOSUB 3 IF BOARD(Y, X) THEN EXIT FOR NEXT FOR DXY = 1 TO 7 X = A + DXY Y = B + DXY IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR GOSUB 3 IF BOARD(Y, X) THEN EXIT FOR NEXT FOR DXY = 1 TO 7 X = A - DXY Y = B - DXY IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR GOSUB 3 IF BOARD(Y, X) THEN EXIT FOR NEXT FOR DXY = 1 TO 7 X = A + DXY Y = B - DXY IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN EXIT FOR GOSUB 3 IF BOARD(Y, X) THEN EXIT FOR NEXT EXIT SUB 3 REM IF ID <> SGN(BOARD(Y, X)) THEN NDX = NDX + 1 XX(NDX) = X YY(NDX) = Y END IF RETURN END SUB FUNCTION EVALUATE (ID, PRUNE) DIM XX(0 TO 26), YY(0 TO 26) LEVEL = LEVEL + 1 BESTSCORE = 10000 * ID FOR B = 7 TO 0 STEP -1 FOR A = 7 TO 0 STEP -1 IF SGN(BOARD(B, A)) <> ID THEN GOTO 1 IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 8) CALL MOVELIST(A, B, XX(), YY(), NDX) FOR I = 0 TO NDX X = XX(I) Y = YY(I) IF LEVEL = 1 THEN LOCATE 1, 1 PRINT "TRYING: "; CHR$(65 + A); 8 - B; "-"; CHR$(65 + X); 8 - Y CALL SHOWMAN(X, Y, 8) END IF OLDSCORE = SCORE MOVER = BOARD(B, A) TARGET = BOARD(Y, X) CALL MAKEMOVE(A, B, X, Y) IF (LEVEL < MAXLEVEL) THEN SCORE = SCORE + EVALUATE(-ID, BESTSCORE - TARGET + ID * (8 - ABS(4 - X) - ABS(4 - Y))) SCORE = SCORE + TARGET - ID * (8 - ABS(4 - X) - ABS(4 - Y)) IF (ID < 0 AND SCORE > BESTSCORE) OR (ID > 0 AND SCORE < BESTSCORE) THEN BESTA(LEVEL) = A BESTB(LEVEL) = B BESTX(LEVEL) = X BESTY(LEVEL) = Y BESTSCORE = SCORE IF (ID < 0 AND BESTSCORE >= PRUNE) OR (ID > 0 AND BESTSCORE <= PRUNE) THEN BOARD(B, A) = MOVER BOARD(Y, X) = TARGET SCORE = OLDSCORE IF (LEVEL = 1) THEN CALL SHOWMAN(X, Y, 0) IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 0) LEVEL = LEVEL - 1 EVALUATE = BESTSCORE EXIT FUNCTION END IF END IF BOARD(B, A) = MOVER BOARD(Y, X) = TARGET SCORE = OLDSCORE IF (LEVEL = 1) THEN CALL SHOWMAN(X, Y, 0) 1 NEXT IF (LEVEL = 1) THEN CALL SHOWMAN(A, B, 0) NEXT NEXT LEVEL = LEVEL - 1 EVALUATE = BESTSCORE END FUNCTION FUNCTION INCHECK (X) DIM XX(0 TO 26), YY(0 TO 26), NDX FOR B = 0 TO 7 FOR A = 0 TO 7 IF BOARD(B, A) >= 0 THEN GOTO 6 CALL MOVELIST(A, B, XX(), YY(), NDX) FOR I = 0 TO NDX STEP 1 X = XX(I) Y = YY(I) IF BOARD(Y, X) = 5000 THEN PRINT "YOU ARE IN CHECK!" PRINT " " PRINT " " INCHECK = 1 EXIT FUNCTION END IF NEXT 6 NEXT NEXT INCHECK = 0 END FUNCTION SUB IO (A, B, X, Y, RESULT) DIM XX(0 TO 26), YY(0 TO 26) CLS IF A >= 0 THEN IF RESULT < -2500 THEN PRINT "I RESIGN" SLEEP SYSTEM END IF PIECE = BOARD(Y, X) CALL MAKEMOVE(A, B, X, Y) PRINT "MY MOVE: "; CHR$(65 + A); 8 - B; "-"; CHR$(65 + X); 8 - Y IF PIECE THEN PRINT "I TOOK YOUR "; IF PIECE = 100 THEN PRINT "PAWN" IF PIECE = 270 THEN PRINT "KNIGHT" IF PIECE = 300 THEN PRINT "BISHOP" IF PIECE = 500 THEN PRINT "ROOK" IF PIECE = 900 THEN PRINT "QUEEN" IF PIECE = 5000 THEN PRINT "KING" END IF NULL = INCHECK(0) END IF DO CALL SHOWBD LOCATE 24, 1 INPUT "YOUR MOVE: ", IN$ IF UCASE$(IN$) = "QUIT" THEN CLS : END IF UCASE$(IN$) = "O-O" OR IN$ = "0-0" THEN IF CFLAG THEN GOTO 16 IF BOARD(7, 7) <> 500 THEN GOTO 16 IF BOARD(7, 6) OR BOARD(7, 5) THEN GOTO 16 BOARD(7, 6) = 5000 BOARD(7, 4) = 0 BOARD(7, 5) = 500 BOARD(7, 7) = 0 CFLAG = 1 EXIT SUB END IF IF UCASE$(IN$) = "O-O-O" OR IN$ = "0-0-0" THEN IF CFLAG THEN GOTO 16 IF BOARD(7, 0) <> 500 THEN GOTO 16 IF BOARD(7, 1) OR BOARD(7, 2) OR BOARD(7, 3) THEN GOTO 16 BOARD(7, 2) = 5000 BOARD(7, 4) = 0 BOARD(7, 3) = 500 BOARD(7, 0) = 0 CFLAG = 1 EXIT SUB END IF IF LEN(IN$) < 5 THEN GOTO 16 B = 8 - (ASC(MID$(IN$, 2, 1)) - 48) A = ASC(UCASE$(MID$(IN$, 1, 1))) - 65 X = ASC(UCASE$(MID$(IN$, 4, 1))) - 65 Y = 8 - (ASC(MID$(IN$, 5, 1)) - 48) IF B > 7 OR B < 0 OR A > 7 OR A < 0 OR X > 7 OR X < 0 OR Y > 7 OR Y < 0 THEN GOTO 16 IF BOARD(B, A) <= 0 THEN GOTO 16 CALL MOVELIST(A, B, XX(), YY(), NDX) FOR K = 0 TO NDX STEP 1 IF X = XX(K) AND Y = YY(K) THEN MOVER = BOARD(B, A) TARGET = BOARD(Y, X) CALL MAKEMOVE(A, B, X, Y) LOCATE 1, 1 IF INCHECK(0) = 0 THEN EXIT SUB BOARD(B, A) = MOVER BOARD(Y, X) = TARGET GOTO 16 END IF NEXT 16 CLS LOOP END SUB SUB KING (A, B, XX(), YY(), NDX) ID = SGN(BOARD(B, A)) FOR DY = -1 TO 1 IF B + DY < 0 OR B + DY > 7 THEN GOTO 12 FOR DX = -1 TO 1 IF A + DX < 0 OR A + DX > 7 THEN GOTO 11 IF ID <> SGN(BOARD(B + DY, A + DX)) THEN NDX = NDX + 1 XX(NDX) = A + DX YY(NDX) = B + DY END IF 11 NEXT 12 NEXT END SUB SUB KNIGHT (A, B, XX(), YY(), NDX) ID = SGN(BOARD(B, A)) X = A - 1 Y = B - 2 GOSUB 5 X = A - 2 Y = B - 1 GOSUB 5 X = A + 1 Y = B - 2 GOSUB 5 X = A + 2 Y = B - 1 GOSUB 5 X = A - 1 Y = B + 2 GOSUB 5 X = A - 2 Y = B + 1 GOSUB 5 X = A + 1 Y = B + 2 GOSUB 5 X = A + 2 Y = B + 1 GOSUB 5 EXIT SUB 5 IF X < 0 OR X > 7 OR Y < 0 OR Y > 7 THEN RETURN IF ID <> SGN(BOARD(Y, X)) THEN NDX = NDX + 1: XX(NDX) = X: YY(NDX) = Y RETURN END SUB SUB MAKEMOVE (A, B, X, Y) BOARD(Y, X) = BOARD(B, A) BOARD(B, A) = 0 IF Y = 0 AND BOARD(Y, X) = 100 THEN BOARD(Y, X) = 900 IF Y = 7 AND BOARD(Y, X) = -100 THEN BOARD(Y, X) = -900 END SUB SUB MOVELIST (A, B, XX(), YY(), NDX) PIECE = INT(ABS(BOARD(B, A))) NDX = -1 IF PIECE = 100 THEN CALL PAWN(A, B, XX(), YY(), NDX) ELSEIF PIECE = 270 THEN CALL KNIGHT(A, B, XX(), YY(), NDX) ELSEIF PIECE = 300 THEN CALL BISHOP(A, B, XX(), YY(), NDX) ELSEIF PIECE = 500 THEN CALL ROOK(A, B, XX(), YY(), NDX) ELSEIF PIECE = 900 THEN CALL QUEEN(A, B, XX(), YY(), NDX) ELSE CALL KING(A, B, XX(), YY(), NDX) END IF END SUB SUB PAWN (A, B, XX(), YY(), NDX) ID = SGN(BOARD(B, A)) IF (A - 1) >= 0 AND (A - 1) <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN IF SGN(BOARD((B - ID), (A - 1))) = -ID THEN NDX = NDX + 1 XX(NDX) = A - 1 YY(NDX) = B - ID END IF END IF IF (A + 1) >= 0 AND (A + 1) <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN IF SGN(BOARD((B - ID), (A + 1))) = -ID THEN NDX = NDX + 1 XX(NDX) = A + 1 YY(NDX) = B - ID END IF END IF IF A >= 0 AND A <= 7 AND (B - ID) >= 0 AND (B - ID) <= 7 THEN IF BOARD((B - ID), A) = 0 THEN NDX = NDX + 1 XX(NDX) = A YY(NDX) = B - ID IF (ID < 0 AND B = 1) OR (ID > 0 AND B = 6) THEN IF BOARD((B - ID - ID), A) = 0 THEN NDX = NDX + 1 XX(NDX) = A YY(NDX) = B - 2 * ID END IF END IF END IF END IF END SUB SUB QUEEN (A, B, XX(), YY(), NDX) CALL BISHOP(A, B, XX(), YY(), NDX) CALL ROOK(A, B, XX(), YY(), NDX) END SUB SUB ROOK (A, B, XX(), YY(), NDX) ID = SGN(BOARD(B, A)) FOR X = A - 1 TO 0 STEP -1 IF ID <> SGN(BOARD(B, X)) THEN NDX = NDX + 1 XX(NDX) = X YY(NDX) = B END IF IF (BOARD(B, X)) THEN EXIT FOR NEXT FOR X = A + 1 TO 7 STEP 1 IF ID <> SGN(BOARD(B, X)) THEN NDX = NDX + 1 XX(NDX) = X YY(NDX) = B END IF IF (BOARD(B, X)) THEN EXIT FOR NEXT FOR Y = B - 1 TO 0 STEP -1 IF ID <> SGN(BOARD(Y, A)) THEN NDX = NDX + 1 XX(NDX) = A YY(NDX) = Y END IF IF (BOARD(Y, A)) THEN EXIT FOR NEXT FOR Y = B + 1 TO 7 STEP 1 IF ID <> SGN(BOARD(Y, A)) THEN NDX = NDX + 1 XX(NDX) = A YY(NDX) = Y END IF IF (BOARD(Y, A)) THEN EXIT FOR NEXT END SUB SUB SHOWBD LOCATE 3, 30 COLOR 7, 0 PRINT "A B C D E F G H" FOR K = 0 TO 25 LOCATE 4, 28 + K COLOR 6, 0 PRINT CHR$(220) NEXT FOR B = 0 TO 7 LOCATE 2 * B + 5, 26 COLOR 7, 0 PRINT CHR$(56 - B) LOCATE 2 * B + 5, 28 COLOR 6, 0 PRINT CHR$(219) LOCATE 2 * B + 6, 28 COLOR 6, 0 PRINT CHR$(219) FOR A = 0 TO 7 IF ((A + B) MOD 2) THEN COLOUR = 8 ELSE COLOUR = 12 END IF CALL SQUARE(3 * A + 31, 2 * B + 5, COLOUR) NEXT LOCATE 2 * B + 5, 53 COLOR 6, 0 PRINT CHR$(219) LOCATE 2 * B + 6, 53 COLOR 6, 0 PRINT CHR$(219) LOCATE 2 * B + 6, 55 COLOR 7, 0 PRINT CHR$(56 - B) NEXT FOR K = 0 TO 25 LOCATE 21, 28 + K COLOR 6, 0 PRINT CHR$(223) NEXT LOCATE 22, 30 COLOR 7, 0 PRINT "A B C D E F G H" FOR B = 0 TO 7 FOR A = 0 TO 7 CALL SHOWMAN(A, B, 0) NEXT NEXT COLOR 7, 0 END SUB SUB SHOWMAN (A, B, FLAG) IF BOARD(B, A) < 0 THEN BACK = 0 IF BOARD(B, A) > 0 THEN BACK = 7 FORE = 7 - BACK + FLAG IF BOARD(B, A) = 0 THEN IF (A + B) AND 1 THEN BACK = 8 ELSE BACK = 12 FORE = BACK - (FLAG > 0) END IF N$ = " " PIECE = INT(ABS(BOARD(B, A))) IF PIECE = 0 THEN N$ = CHR$(219) IF PIECE = 100 THEN N$ = "P" IF PIECE = 270 THEN N$ = "N" IF PIECE = 300 THEN N$ = "B" IF PIECE = 500 THEN N$ = "R" IF PIECE = 900 THEN N$ = "Q" IF PIECE = 5000 OR PIECE = 7500 THEN N$ = "K" LOCATE 2 * B + 5 - (BOARD(B, A) > 0), 3 * A + 30 COLOR FORE, BACK PRINT N$ LOCATE 1, 1 COLOR 7, 0 END SUB SUB SQUARE (A, B, C) MT$ = CHR$(219) MT$ = MT$ + MT$ + MT$ LOCATE B, A - 2 COLOR C, C PRINT MT$ LOCATE B + 1, A - 2 COLOR C, C PRINT MT$ COLOR 7, 0 END SUB
Optional Paste Settings
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
HTML 5
Java
JavaScript
Lua
None
Perl
PHP
Python
Rails
-------------
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
ActionScript
ActionScript 3
Ada
ALGOL 68
Apache Log
AppleScript
APT Sources
ASM (NASM)
ASP
autoconf
Autohotkey
AutoIt
Avisynth
Awk
BASCOM AVR
Bash
Basic4GL
BibTeX
Blitz Basic
BNF
BOO
BrainFuck
C
C for Macs
C Intermediate Language
C#
C++
C++ (with QT extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
ChaiScript
Clojure
Clone C
Clone C++
CMake
COBOL
CoffeeScript
ColdFusion
CSS
Cuesheet
D
DCS
Delphi
Delphi Prism (Oxygene)
Diff
DIV
DOS
DOT
E
ECMAScript
Eiffel
Email
EPC
Erlang
F#
Falcon
FO Language
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
Game Maker
GDB
Genero
Genie
GetText
Go
Groovy
GwBasic
Haskell
HicEst
HQ9 Plus
HTML
HTML 5
Icon
IDL
INI file
Inno Script
INTERCAL
IO
J
Java
Java 5
JavaScript
jQuery
KiXtart
Latex
Liberty BASIC
Linden Scripting
Lisp
LLVM
Loco Basic
Logtalk
LOL Code
Lotus Formulas
Lotus Script
LScript
Lua
M68000 Assembler
MagikSF
Make
MapBasic
MatLab
mIRC
MIX Assembler
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MPASM
MXML
MySQL
newLISP
None
NullSoft Installer
Oberon 2
Objeck Programming Langua
Objective C
OCalm Brief
OCaml
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
Pascal
PAWN
PCRE
Per
Perl
Perl 6
PHP
PHP Brief
Pic 16
Pike
Pixel Bender
PL/SQL
PostgreSQL
POV-Ray
Power Shell
PowerBuilder
ProFTPd
Progress
Prolog
Properties
ProvideX
PureBasic
PyCon
Python
q/kdb+
QBasic
R
Rails
REBOL
REG
Robots
RPM Spec
Ruby
Ruby Gnuplot
SAS
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
SQL
SystemVerilog
T-SQL
TCL
Tera Term
thinBasic
TypoScript
Unicon
UnrealScript
Vala
VB.NET
VeriLog
VHDL
VIM
Visual Pro Log
VisualBasic
VisualFoxPro
WhiteSpace
WHOIS
Winbatch
XBasic
XML
Xorg Config
XPP
YAML
Z80 Assembler
ZXBasic
Paste Expiration:
Never
10 Minutes
1 Hour
1 Day
1 Month
Paste Exposure:
Public
Unlisted
Private (members only)
Paste Name / Title:
Hello
Guest
Sign Up
or
Login
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login