_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

EBINSEARCH

FILE INFORMATION

FILENAME(S): EBINSEARCH

FILE TYPE(S): SEQ

FILE SIZE: 1K

FIRST SEEN: 2025-11-30 21:07:03

APPEARS ON: 1 disk(s)

FILE HASH

ba56f8283ab364921fb9aba23b939193848210bee64e512eac061bfd862d67d9

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
UTILITY PET 02 EBINSEARCH SEQ DuncanTwain 30 8 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 0D 0D 0D 20 42 49 4E 53  45 41 52 43 48 3A 0D 20  |... BINSEARCH:. |
00000010: 20 20 20 20 72 6F 77 20  31 30 20 69 6E 74 20 63  |    row 10 int c|
00000020: 6F 6E 73 74 20 4C 49 53  54 20 3A 3A 20 5B 20 31  |onst LIST :: [ 1|
00000030: 20 2C 20 32 20 2C 20 34  20 2C 20 36 20 2C 20 31  | , 2 , 4 , 6 , 1|
00000040: 31 20 2C 20 31 33 20 2C  20 31 35 20 2C 20 32 31  |1 , 13 , 15 , 21|
00000050: 20 2C 20 32 32 20 2C 20  32 33 20 2C 20 33 30 20  | , 22 , 23 , 30 |
00000060: 5D 20 3B 0D 20 20 20 20  20 69 6E 74 20 76 61 72  |] ;.     int var|
00000070: 20 5A 20 3B 0D 20 20 20  20 20 50 55 54 20 28 20  | Z ;.     PUT ( |
00000080: 22 5A 3D 22 20 29 20 3B  0D 20 20 20 20 20 47 45  |"Z=" ) ;.     GE|
00000090: 54 20 28 20 5A 20 29 20  3B 0D 20 20 20 20 20 50  |T ( Z ) ;.     P|
000000A0: 55 54 20 28 20 49 4E 44  45 58 20 4F 46 20 5A 20  |UT ( INDEX OF Z |
000000B0: 29 20 2E 0D 0D 0D 0D 20  49 4E 44 45 58 20 4F 46  |) ..... INDEX OF|
000000C0: 20 5A 3A 0D 20 20 20 20  20 44 45 4C 49 4D 49 54  | Z:.     DELIMIT|
000000D0: 20 53 45 41 52 43 48 20  52 41 4E 47 45 20 3B 0D  | SEARCH RANGE ;.|
000000E0: 20 20 20 20 20 77 68 69  6C 65 0D 20 20 20 20 20  |     while.     |
000000F0: 20 20 53 45 41 52 43 48  20 52 41 4E 47 45 20 4E  |  SEARCH RANGE N|
00000100: 4F 54 20 45 4D 50 54 59  0D 20 20 20 20 20 72 65  |OT EMPTY.     re|
00000110: 70 0D 20 20 20 20 20 20  20 4C 4F 4F 4B 20 49 4E  |p.       LOOK IN|
00000120: 20 54 48 45 20 4D 49 44  44 4C 45 20 3B 0D 20 20  | THE MIDDLE ;.  |
00000130: 20 20 20 20 20 69 66 0D  20 20 20 20 20 20 20 20  |     if.        |
00000140: 20 45 4C 45 4D 45 4E 54  20 49 4E 20 4D 49 44 44  | ELEMENT IN MIDD|
00000150: 4C 45 20 3D 20 5A 0D 20  20 20 20 20 20 20 74 68  |LE = Z.       th|
00000160: 65 6E 0D 20 20 20 20 20  20 20 20 20 5A 20 46 4F  |en.         Z FO|
00000170: 55 4E 44 0D 20 20 20 20  20 20 20 65 6C 73 65 0D  |UND.       else.|
00000180: 20 20 20 20 20 20 20 20  20 52 45 44 55 43 45 20  |         REDUCE |
00000190: 53 45 41 52 43 48 20 52  41 4E 47 45 0D 20 20 20  |SEARCH RANGE.   |
000001A0: 20 20 20 20 66 69 0D 20  20 20 20 20 65 6E 64 72  |    fi.     endr|
000001B0: 65 70 20 3B 0D 20 20 20  20 20 5A 20 4C 4F 53 54  |ep ;.     Z LOST|
000001C0: 20 2E 0D 0D 0D 0D 20 44  45 4C 49 4D 49 54 20 53  | ..... DELIMIT S|
000001D0: 45 41 52 43 48 20 52 41  4E 47 45 3A 0D 20 20 20  |EARCH RANGE:.   |
000001E0: 20 20 69 6E 74 20 76 61  72 20 4C 4F 57 45 52 20  |  int var LOWER |
000001F0: 3A 3A 20 31 20 3B 0D 20  20 20 20 20 69 6E 74 20  |:: 1 ;.     int |
00000200: 76 61 72 20 55 50 50 45  52 20 3A 3A 20 31 30 20  |var UPPER :: 10 |
00000210: 2E 0D 0D 0D 0D 20 53 45  41 52 43 48 20 52 41 4E  |..... SEARCH RAN|
00000220: 47 45 20 4E 4F 54 20 45  4D 50 54 59 3A 0D 20 20  |GE NOT EMPTY:.  |
00000230: 20 20 20 4C 4F 57 45 52  20 3C 3D 20 55 50 50 45  |   LOWER <= UPPE|
00000240: 52 20 2E 0D 0D 0D 0D 20  4C 4F 4F 4B 20 49 4E 20  |R ..... LOOK IN |
00000250: 54 48 45 20 4D 49 44 44  4C 45 3A 0D 20 20 20 20  |THE MIDDLE:.    |
00000260: 20 69 6E 74 20 63 6F 6E  73 74 20 4D 49 44 44 4C  | int const MIDDL|
00000270: 45 20 3A 3A 20 28 20 4C  4F 57 45 52 20 2B 20 55  |E :: ( LOWER + U|
00000280: 50 50 45 52 20 29 20 64  69 76 20 32 20 2E 0D 0D  |PPER ) div 2 ...|
00000290: 0D 0D 20 45 4C 45 4D 45  4E 54 20 49 4E 20 4D 49  |.. ELEMENT IN MI|
000002A0: 44 44 4C 45 3A 0D 20 20  20 20 20 4C 49 53 54 20  |DDLE:.     LIST |
000002B0: 5B 20 4D 49 44 44 4C 45  20 5D 20 2E 0D 0D 0D 0D  |[ MIDDLE ] .....|
000002C0: 20 5A 20 46 4F 55 4E 44  3A 0D 20 20 20 20 20 6C  | Z FOUND:.     l|
000002D0: 65 61 76 65 20 49 4E 44  45 58 20 4F 46 20 5A 20  |eave INDEX OF Z |
000002E0: 77 69 74 68 20 4D 49 44  44 4C 45 20 2E 0D 0D 0D  |with MIDDLE ....|
000002F0: 0D 20 52 45 44 55 43 45  20 53 45 41 52 43 48 20  |. REDUCE SEARCH |
00000300: 52 41 4E 47 45 3A 0D 20  20 20 20 20 69 66 0D 20  |RANGE:.     if. |
00000310: 20 20 20 20 20 20 45 4C  45 4D 45 4E 54 20 49 4E  |      ELEMENT IN|
00000320: 20 4D 49 44 44 4C 45 20  3E 20 5A 0D 20 20 20 20  | MIDDLE > Z.    |
00000330: 20 74 68 65 6E 0D 20 20  20 20 20 20 20 54 41 4B  | then.       TAK|
00000340: 45 20 4C 45 46 54 20 50  41 52 54 0D 20 20 20 20  |E LEFT PART.    |
00000350: 20 65 6C 73 65 0D 20 20  20 20 20 20 20 54 41 4B  | else.       TAK|
00000360: 45 20 52 49 47 54 48 20  50 41 52 54 0D 20 20 20  |E RIGTH PART.   |
00000370: 20 20 66 69 20 2E 0D 0D  0D 0D 20 5A 20 4C 4F 53  |  fi ..... Z LOS|
00000380: 54 3A 0D 20 20 20 20 20  30 20 2E 0D 0D 0D 0D 20  |T:.     0 ..... |
00000390: 54 41 4B 45 20 4C 45 46  54 20 50 41 52 54 3A 0D  |TAKE LEFT PART:.|
000003A0: 20 20 20 20 20 55 50 50  45 52 20 3A 3D 20 4D 49  |     UPPER := MI|
000003B0: 44 44 4C 45 20 2D 20 31  20 2E 0D 0D 0D 0D 20 54  |DDLE - 1 ..... T|
000003C0: 41 4B 45 20 52 49 47 54  48 20 50 41 52 54 3A 0D  |AKE RIGTH PART:.|
000003D0: 20 20 20 20 20 4C 4F 57  45 52 20 3A 3D 20 4D 49  |     LOWER := MI|
000003E0: 44 44 4C 45 20 2B 20 31  20 2E 0D 0D 0D 0D 20 50  |DDLE + 1 ..... P|
000003F0: 52 4F 47 52 41 4D 3A 0D  20 20 20 20 20 42 49 4E  |ROGRAM:.     BIN|
00000400: 53 45 41 52 43 48 20 2E  0D                       |SEARCH ..       |
... BINSEARCH:.     ROW 10 INT CONST LIS
T :: [ 1 , 2 , 4 , 6 , 11 , 13 , 15 , 21
 , 22 , 23 , 30 ] ;.     INT VAR Z ;.   
  PUT ( "Z=" ) ;.     GET ( Z ) ;.     P
UT ( INDEX OF Z ) ..... INDEX OF Z:.    
 DELIMIT SEARCH RANGE ;.     WHILE.     
  SEARCH RANGE NOT EMPTY.     REP.      
 LOOK IN THE MIDDLE ;.       IF.        
 ELEMENT IN MIDDLE = Z.       THEN.     
    Z FOUND.       ELSE.         REDUCE 
SEARCH RANGE.       FI.     ENDREP ;.   
  Z LOST ..... DELIMIT SEARCH RANGE:.   
  INT VAR LOWER :: 1 ;.     INT VAR UPPE
R :: 10 ..... SEARCH RANGE NOT EMPTY:.  
   LOWER <= UPPER ..... LOOK IN THE MIDD
LE:.     INT CONST MIDDLE :: ( LOWER + U
PPER ) DIV 2 ..... ELEMENT IN MIDDLE:.  
   LIST [ MIDDLE ] ..... Z FOUND:.     L
EAVE INDEX OF Z WITH MIDDLE ..... REDUCE
 SEARCH RANGE:.     IF.       ELEMENT IN
 MIDDLE > Z.     THEN.       TAKE LEFT P
ART.     ELSE.       TAKE RIGTH PART.   
  FI ..... Z LOST:.     0 ..... TAKE LEF
T PART:.     UPPER := MIDDLE - 1 ..... T
AKE RIGTH PART:.     LOWER := MIDDLE + 1
 ..... PROGRAM:.     BINSEARCH ..
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL