Dynamic Essentialy Different Grid Search Program

Programs which generate, solve, and analyze Sudoku puzzles

Dynamic Essentialy Different Grid Search Program

Postby RichardGoodrich » Wed Aug 06, 2025 9:42 pm

OK, this is ALPHA code in Python3. Posting it here first. [Wed Aug 8, 2025] Will put on my github soon. It has been tested VERY minimally. For now you must edit the find_minlex(*) code at the end of the python script below. The parameter can either be the index or the 81-char string of the ED catalog. It does NOT create any large files in the process and seems reasonably fast. I am running it with the latest PyCharm IDE. If you can do Python, please play with it and give me feedback!

You will also need the 416 Sudz files (~5.4 GiB) (actually 401, since 15 of them are NOT used/empty) which you can get from the 1to90nly github and the sudz program to match your OS (also from a 1to9Only github . My OS is MX-Linux.

IF you have some reasonably different test cases I can run - especially corner / edge cases please let me know!

Here are a few runs:
Hidden Text: Show
Code: Select all

find_minlex('123456789457389612896721354231645978649817523785293146318564297562978431974132865')
  Lists created
  Start time is:  2025.8.6 - 17:5:16
  Index = 5472730527, string = 123456789457389612896721354231645978649817523785293146318564297562978431974132865
  End time is 2025.8.6 - 17:5:16
  We done!

find_minlex(1)
  Lists created
  Start time is:  2025.8.6 - 17:9:5
  Index = 1, String = 123456789456789123789123456214365897365897214897214365531642978642978531978531642
  End time is 2025.8.6 - 17:9:6
  We done!

find_minlex(5472730538)
  Lists created
  Start time is:  2025.8.6 - 17:11:7
  Index = 5472730538, String = 123456789457893612986217354274538196531964827698721435342685971715349268869172543
  End time is 2025.8.6 - 17:11:7
  We done!

find_minlex(5472730539)
  Lists created
  Must be an integer in range of 1 to 5472730538
   We done!

find_minlex(0)
  Lists created
  Must be an integer in range of 1 to 5472730538
  We done!

find_minlex('213456789457893612986217354274538196531964827698721435342685971715349268869172543')
  Lists created
  We done!


The Python3 Script
Hidden Text: Show
Code: Select all
import csv
import json
import subprocess
from datetime import datetime
import os

sudz_min_index = 1
sudz_max_index = 5472730538
sudz_min_string = '123456789456789123789123456214365897365897214897214365531642978642978531978531642'
sudz_max_string = '123456789457893612986217354274538196531964827698721435342685971715349268869172543'

with open('config.json') as f:
    config = json.load(f)

db_dir = config["db_dir"]
sudz_cmd = config["sudz_cmd"]
sudz_dir = os.path.join(db_dir, 'sudz_files')
csv_file = 'docs/GangDB.csv'

gangs = []
sudz_indices = []
sudz_strings = []

def find_sudz_index(value):
    gang = '0'
    sudz_str = '0'
    for i, val in enumerate(sudz_indices):
        num = int(val)
        if value < num:
            gang = gangs[i]
            sudz_str = sudz_strings[i]
            break

    if gang != '0':
        sudz_file = gang + '.sudz'
        the_file = os.path.join(sudz_dir, sudz_file)
        if i > 0:
            sudz_idx = sudz_indices[i - 1]
        else:
            sudz_idx = '1'

        #sudz_idx = sudz_indices[i - 1]
        idx_num = int(sudz_idx)
        idx_dif = value - idx_num + 1
        idx = str(idx_dif) + 'p'

        report_time('Start time is: ')
        p1 = subprocess.run([sudz_cmd, '-f%g', the_file], stdout=subprocess.PIPE, text=True)
        p2 = subprocess.run(['sed', '-n', idx], stdout=subprocess.PIPE, text=True, input=p1.stdout)
        temp_str = p2.stdout.strip()
        result_list = temp_str.split(':')
        result_string = result_list[0]
        print(f' Index = {value}, String = {result_string}')
        report_time(f'End time is')


def find_sudz_string(value):
    gang = '0'
    sudz_index = '0'
    value_num = int(value)
    for i, item in enumerate(sudz_strings):
        item_num = int(item)
        if value_num <= item_num:
            gang = gangs[i]
            if i > 0:
                sudz_index = int(sudz_indices[i - 1])
            else:
                sudz_index = 0
            break

    if gang != '0':
        sudz_file = gang + '.sudz'
        the_file = os.path.join(sudz_dir, sudz_file)

        report_time('Start time is: ')
        p1 = subprocess.run([sudz_cmd, '-f%g', the_file], stdout=subprocess.PIPE, text=True)
        p2 = subprocess.run(['grep', '-n', value], stdout=subprocess.PIPE, text=True, input=p1.stdout)
        temp_str = p2.stdout.strip()
        result_list = temp_str.split(':')
        result_index = int(result_list[0]) + sudz_index - 1
        result_string = result_list[1]

        print(f'Index = {result_index}, string = {result_string}')
        report_time(f'End time is')


def find_minlex(value):
    if isinstance(value, int):
        if value in range(sudz_max_index + 1) and value > 0:
            find_sudz_index(value)
        else:
            print(f'Must be an integer in range of 1 to {sudz_max_index}')

    elif isinstance(value, str) and len(value) == 81:
        if value >= sudz_min_string and value <= sudz_max_string:
            find_sudz_string(value)


def create_lists():
    with open(csv_file, 'r') as c_file:
        csv_reader = csv.reader(c_file)
        for line in csv_reader:
            gangs.append(line[0])
            sudz_indices.append(line[1])
            sudz_strings.append(line[2])
    print(f'Lists created')


def report_time(msg):
    current_time = datetime.now()
    time_string = (f'{current_time.year}.{current_time.month}.{current_time.day} - '
                   f'{current_time.hour}:{current_time.minute}:{current_time.second}')
    print(f'{msg} {time_string}')


if __name__ == '__main__':
    create_lists()
    find_minlex('123456789457389612896721354231645978649817523785293146318564297562978431974132865')
    print(f'We done!')






You will also need a "config.json" file in same directory as the code: (the db_index entry is NOT needed!)
Code: Select all
{
  "db_dir": "PATH-TO-SUDZ-FILE",
  "db_index": 1,
  "sudz_cmd": "PATH-TO-SUDZ-CMD"
}


You will also need a GanDB.csv file in a docs sub-folder:
Hidden Text: Show
Code: Select all
001, 0001007171, 123456789456789123789123456267834591348915672591267834672348915834591267915672348
002, 0026509253, 123456789456789123789123465297831654641295837835647291378912546514368972962574318
003, 0043047340, 123456789456789123789123564295364871637518942841972635374691258518247396962835417
004, 0051465246, 123456789456789123789132465274591836638274951915863247347925618592618374861347592
005, 0100203037, 123456789456789123789132546298675314537941862614823975361297458875364291942518637
006, 0196432079, 123456789456789123789132564298675431574813692631924875367591248812347956945268317
007, 0212197522, 123456789456789123789231564275963418638174295941528637367842951592317846814695372
008, 0217503802, 123456789456789123789231645274863591538194267961527834395672418617348952842915376
009, 0225639815, 123456789456789123798132465274815936639247518815693247347961852582374691961528374
010, 0272814008, 123456789456789123798132546289675314374291865561348972615823497837964251942517638
011, 0319602404, 123456789456789123798132564289675341374291856561348972615823497842917635937564218
012, 0365779674, 123456789456789123798213564289675431375841692614392857542138976837964215961527348
013, 0381120068, 123456789456789123798213654287134596364895271915672348541328967679541832832967415
014, 0426517338, 123456789456789123798231564279865431645317892831942675367594218582173946914628357
015, 0472118096, 123456789456789123798231645287965314561348297934172568312897456679514832845623971
016, 0473749672, 123456789456789123897231564248573691671924835935168247369815472582347916714692358
017, 0488843213, 123456789456789123897231645285147936639825471741693258364512897572968314918374562
018, 0533944813, 123456789456789132789123546298647351375912468614538297567294813842361975931875624
019, 0578777236, 123456789456789132789132546298675413375914628614823957562391874841267395937548261
020, 0667559762, 123456789456789132789132564298675413574913826631824975367598241845261397912347658
021, 0711596330, 123456789456789132789213456298675341375124698614938275542391867861547923937862514
022, 0797223889, 123456789456789132789213645298675413574931826631842957367128594845397261912564378
023, 0839935011, 123456789456789132789213654298674513574321896631598247312847965865932471947165328
024, 0925037384, 123456789456789132789231546298675413574913628631842975367524891815397264942168357
025, 0966884423, 123456789456789132789231564298674351547318926631592478362947815874165293915823647
026, 1008219814, 123456789456789132879231564298675413534812697617943825345128976761394258982567341
027, 1012675318, 123456789456789231789123645274961853395842176861375492537618924642597318918234567
028, 1053778232, 123456789456789231789132546298674315375821694614593872531248967862917453947365128
029, 1058369623, 123456789456789231789231564274518396538962417961374852395627148617843925842195673
030, 1063033884, 123456789456789231789312456294873165365194872871265394542638917618927543937541628
031, 1076640093, 123456789456789231798213645287694513365128974941537826532861497614972358879345162
032, 1117337800, 123456789457189236689237145298765314361842957745391862512673498836924571974518623
033, 1197806463, 123456789457189236689237154298765413564913872731842965372698541846521397915374628
034, 1276982073, 123456789457189236689237415298765341564813972731942658376598124842671593915324867
035, 1354961856, 123456789457189236689237451298765314564913872731842965376594128845321697912678543
036, 1393498154, 123456789457189236689237514298765341516394872734812695375921468861543927942678153
037, 1469645121, 123456789457189236689237541298765413564913872731842965376598124845621397912374658
038, 1544150786, 123456789457189236689273145298765413564831972731942658376594821815627394942318567
039, 1618305350, 123456789457189236689273154298765413564931872731842965372698541816524397945317628
040, 1690476797, 123456789457189236689273415298765341564831972731942658376598124842617593915324867
041, 1726530252, 123456789457189236689273451298765314536941872741328965375694128814532697962817543
042, 1797082542, 123456789457189236689273514298765341564931872731842965376594128815627493942318657
043, 1866520117, 123456789457189236689273541298765413564931872731842965376598124815624397942317658
044, 1934499068, 123456789457189236689327145298765413564831972731942658376594821842613597915278364
045, 1968403089, 123456789457189236689327154298765341536914827714238695375891462861542973942673518
046, 2034740496, 123456789457189236689327415298765341564831972731942658376598124842613597915274863
047, 2100620657, 123456789457189236689327451298765314564931872731842965376594128845213697912678543
048, 2165617038, 123456789457189236689327514298765341564931872731842965376294158842513697915678423
049, 2229515100, 123456789457189236689327541298765413564931872731842965376598124845213697912674358
050, 2291707320, 123456789457189236689372145298765413564831972731924658376218594845697321912543867
051, 2353398795, 123456789457189236689372154298765413564931872731824965376298541842513697915647328
052, 2413591180, 123456789457189236689372415298765341564831972731924568376598124845213697912647853
053, 2443557564, 123456789457189236689372451298765314536941872741238965375694128814523697962817543
054, 2473292059, 123456789457189236689372514298765341365941872741238965516827493832694157974513628
055, 2532023572, 123456789457189236689372541298765413564931872731824965376298154842513697915647328
056, 2589287390, 123456789457189236689723145298675413564831972731942658376218594842597361915364827
057, 2646320665, 123456789457189236689723154298675413564931872731842695376514928845297361912368547
058, 2701715221, 123456789457189236689723415298675341564831972731942658376598124812364597945217863
059, 2756738151, 123456789457189236689723514298675341564931872731842965376594128845217693912368457
060, 2810756665, 123456789457189236689723541298675413564931872731842695376598124812364957945217368
061, 2863721535, 123456789457189236689732145298675413564813972731924658375291864842567391916348527
062, 2915964027, 123456789457189236689732154298675413564913872731824965376298541842561397915347628
063, 2967209027, 123456789457189236689732415298675341564813972731924658376598124842361597915247863
064, 3017749769, 123456789457189236689732514298675341564913872731824965376591428845267193912348657
065, 3067393896, 123456789457189236689732541298675413564913872731824965376598124845261397912347658
066, 3116584874, 123456789457189236698237145289765413564813972731942658376524891845691327912378564
067, 3140662174, 123456789457189236698237154289765341365914872741823965514372698876591423932648517
068, 3188640980, 123456789457189236698237415289765341564813972731942568376598124845321697912674853
069, 3235700507, 123456789457189236698237514289765341564913872731842695376594128842671953915328467
070, 3281932088, 123456789457189236698237541289765413564913872731842695376594128845321967912678354
071, 3304647883, 123456789457189236698273145289765314361924857745318962512637498874591623936842571
072, 3349426087, 123456789457189236698273154289765413564931872731842965372698541816524397945317628
073, 3393479556, 123456789457189236698273415289765341564831972731942658376598124842617593915324867
074, 3436881463, 123456789457189236698273514289765341564931872731842965376594128815627493942318657
075, 3458280269, 123456789457189236698273541289765314536941872741328965375694128814532697962817453
076, 3500341709, 123456789457189236698327145289765413564831972731942658376594821842613597915278364
077, 3541657834, 123456789457189236698327154289765413564931872731842965376298541842513697915674328
078, 3582229079, 123456789457189236698327415289765341564831972731942658376598124842613597915274863
079, 3622511526, 123456789457189236698327541289765413564931872731842965376294158842513697915678324
080, 3661744744, 123456789457189236698372145289765413564831972731924658376218594845697321912543867
081, 3700267063, 123456789457189236698372154289765413564931872731824695376298541845613927912547368
082, 3738148976, 123456789457189236698372415289765341564831972731924568376298154812543697945617823
083, 3775609169, 123456789457189236698372514289765341564931872731824695346298157812547963975613428
084, 3794069373, 123456789457189236698372541289765314546931872731248965375624198814593627962817453
085, 3830197176, 123456789457189236698723145289675413564831972731942658376218594842597361915364827
086, 3865781945, 123456789457189236698723154289675413564931872731842965376298541812564397945317628
087, 3900603476, 123456789457189236698723415289675341564831972731942658376598124812364597945217863
088, 3934938192, 123456789457189236698723514289675341564931872731842965376594128815267493942318657
089, 3968707354, 123456789457189236698732145289675413564813972731924658375291864842567391916348527
090, 4001881755, 123456789457189236698732154289675413564913872731824965376298541842561397915347628
091, 4034401792, 123456789457189236698732415289675341564813972731924568376591824845267193912348657
092, 4066347333, 123456789457189236698732514289675341564913872731824965376591428845267193912348657
093, 4097568405, 123456789457189236869237145298765413645813972731942658384691527576324891912578364
094, 4128147815, 123456789457189236869237514298765341645913872731842695386591427512374968974628153
095, 4158125547, 123456789457189236869273145298765413645831972731942658382617594576394821914528367
096, 4187515608, 123456789457189236869273154298765413645931872731842965384597621572614398916328547
097, 4202033976, 123456789457189236869273415298764351546391872731528964375642198682917543914835627
098, 4216406420, 123456789457189236869273514298765341536941872714328695345812967681597423972634158
099, 4244674441, 123456789457189236869327154298765413645931872731842965386274591512698347974513628
100, 4272524394, 123456789457189236869327415298765341645831972731942658382614597574298163916573824
101, 4286293248, 123456789457189236869327514298765341615243897734891625341672958586934172972518463
102, 4313222701, 123456789457189236869372145298765413645831972731924658382647591514298367976513824
103, 4339605507, 123456789457189236869372154298765413645931872731824695386547921512698347974213568
104, 4343964821, 123456789457189236869372415298531674534267891716894352382945167645713928971628543
105, 4369962117, 123456789457189236869372514298765341645931872731824695316547928584293167972618453
106, 4395429314, 123456789457189236869723145298675413645831972731942658386217594572394861914568327
107, 4420317842, 123456789457189236869723154298675413645931872731842965386214597574398621912567348
108, 4444741142, 123456789457189236869723514298675341645931872731842965386594127512367498974218653
109, 4468729468, 123456789457189236869732145298675413645813927731924658386291574514367892972548361
110, 4492271395, 123456789457189236869732154298675413645913872731824965386297541512348697974561328
111, 4515341925, 123456789457189236896237145289765413645813972731942568378594621514628397962371854
112, 4537951067, 123456789457189236896237154289765413645913872731824965378692541512348697964571328
113, 4560051525, 123456789457189236896237514289765341645913872731842695374621958568394127912578463
114, 4570931039, 123456789457189236896273145289765314631948572745321968378594621514632897962817453
115, 4592309101, 123456789457189236896273154289765413645931872731842965378694521514328697962517348
116, 4613294275, 123456789457189236896273514289765341645931872731842965372694158514328697968517423
117, 4633969247, 123456789457189236896327145289765413645831927731942568374298651518674392962513874
118, 4654076363, 123456789457189236896327154289765413645931872731842965368274591512698347974513628
119, 4673930969, 123456789457189236896327514289765341645931872731842965362518497574693128918274653
120, 4683663939, 123456789457189236896372145289765314645231978731948562318594627574623891962817453
121, 4702748427, 123456789457189236896372154289765413645931872731824695374698521568213947912547368
122, 4712239752, 123456789457189236896372514269847351584931672731625948312794865675218493948563127
123, 4730772033, 123456789457189236896723154289675413645931872731842965378594621564218397912367548
124, 4739914518, 123456789457189236896723514289674351371895462564312897648937125715268943932541678
125, 4757989787, 123456789457189236896732154289675413645913827731824695378561942564298371912347568
126, 4775665093, 123456789457189236896732514289675341645913872731824965374591628568247193912368457
127, 4793210845, 123456789457189236968237154296875413745913862831642975389764521574321698612598347
128, 4810200943, 123456789457189236968237514296875341745913862831642957389761425512394678674528193
129, 4818570416, 123456789457189236968273514296847351741532968835961472379614825514328697682795143
130, 4834977121, 123456789457189236968327154296875413745931862831264975389612547514793628672548391
131, 4851167117, 123456789457189236968327514296875341745931862831642957382714695519268473674593128
132, 4866958886, 123456789457189236968372154296847513745931862831625947389714625574268391612593478
133, 4869572231, 123456789457189236968372514296531478314798625785624391531847962649213857872965143
134, 4884934895, 123456789457189236968723154296875413745931862831642975384597621519268347672314598
135, 4900207371, 123456789457189236968732154296875413745913862831624975389267541572341698614598327
136, 4915125407, 123456789457189236986237154298765413645913872731842695379628541512374968864591327
137, 4922379857, 123456789457189236986273154298764315574321968631895472319548627745632891862917543
138, 4936762932, 123456789457189236986327154298765413645931872731842965379614528564278391812593647
139, 4943774646, 123456789457189236986372154298764315645231978731598462374625891519843627862917543
140, 4957512807, 123456789457189263689237145298765431564913872731842956372694518845321697916578324
141, 4970957959, 123456789457189263689237415298765341564913872731842956312674598875391624946528137
142, 4977551764, 123456789457189263689237451298765314534812697716394528375928146861543972942671835
143, 4990469881, 123456789457189263689237514298765431564913872731824695376592148845371926912648357
144, 4996873150, 123456789457189263689273154298765341361824975745391826512637498836942517974518632
145, 5009441286, 123456789457189263689273415298765341564931872731842596376594128815627934942318657
146, 5021796006, 123456789457189263689273451298765314564931872731842695376594128815327946942618537
147, 5033832475, 123456789457189263689273514298765431564931872731824695376512948845397126912648357
148, 5039763548, 123456789457189263689273541298764315364521897715938426546817932832695174971342658
149, 5045712608, 123456789457189263689327154298765341534291876716834592342978615861542937975613428
150, 5057290460, 123456789457189263689327415298765341564931872731842596345618927876293154912574638
151, 5068726093, 123456789457189263689327514298765431564931872731248956376894125845612397912573648
152, 5079882067, 123456789457189263689327541298765314564931872731842695376214958845693127912578436
153, 5090553553, 123456789457189263689372145298765431564931872731824956346297518812543697975618324
154, 5101079288, 123456789457189263689372154298765431564931872731248695376524918812693547945817326
155, 5111267922, 123456789457189263689372415298765341564931872731824596376518924842693157915247638
156, 5121327539, 123456789457189263689372451298765314564931827731824596376518942842693175915247638
157, 5131133352, 123456789457189263689372514298765431564931872731824956312597648876243195945618327
158, 5140762672, 123456789457189263689723145298675431564931872731842596376518924812394657945267318
159, 5150252894, 123456789457189263689723154298675431564931872731842695376514928845297316912368547
160, 5159533018, 123456789457189263689723451298675314564931872731842695376514928812397546945268137
161, 5168377130, 123456789457189263689732145298675431564913827731824956376298514815347692942561378
162, 5177005229, 123456789457189263689732154298675431564913827731824596376248915845391672912567348
163, 5185434822, 123456789457189263689732415298675341564913872731824596376598124845261937912347658
164, 5193661966, 123456789457189263689732451298675314564913827731824596376598142842361975915247638
165, 5201660253, 123456789457189263689732514298675431564913827731824956376548192842391675915267348
166, 5209473666, 123456789457189263689732541298675314564813972731924658376248195812597436945361827
167, 5213312815, 123456789457189263698237154289764531541823976736591842315672498864915327972348615
168, 5220860867, 123456789457189263698237415289765341564913872731842956375628194812594637946371528
169, 5228210154, 123456789457189263698237451289765314564913827731824596312648975875391642946572138
170, 5235356961, 123456789457189263698237514289765431564913872731842695346571928812694357975328146
171, 5242350383, 123456789457189263698273145289765431564931872731842596376518924812394657945627318
172, 5249179184, 123456789457189263698273415289765341564931872731842596376518924812394657945627138
173, 5255854095, 123456789457189263698273451289765314564931827731824596376512948842697135915348672
174, 5262330343, 123456789457189263698273514289765431564931872731842695376594128815327946942618357
175, 5265496808, 123456789457189263698327145289765314365814927714932658541273896876591432932648571
176, 5271702771, 123456789457189263698327154289765431564931872731842596376514928815293647942678315
177, 5277743402, 123456789457189263698327415289765341564931872731842596375618924812594637946273158
178, 5283626336, 123456789457189263698327451289765314564931872731248596375612948812594637946873125
179, 5289439084, 123456789457189263698327514289765431564931872731842695376594128815273946942618357
180, 5295054166, 123456789457189263698372154289765431564931872731824596376248915812593647945617328
181, 5300515553, 123456789457189263698372415289765341564931872731824596345618927812597634976243158
182, 5305882967, 123456789457189263698372514289765431564931872731824695346517928875293146912648357
183, 5311105035, 123456789457189263698372541289765314564831972731924856312547698845693127976218435
184, 5316177984, 123456789457189263698732145289675431564813927731924658376298514812547396945361872
185, 5321096261, 123456789457189263698732154289675431564913872731824695376541928845297316912368547
186, 5325875139, 123456789457189263698732451289675314564913872731824695376541928845297136912368547
187, 5330516142, 123456789457189263869237154298765431645321978731948526316592847574813692982674315
188, 5335055766, 123456789457189263869237415298765341645913872731842596382694157516378924974521638
189, 5339463050, 123456789457189263869237514298765431645913827731824956384571692576392148912648375
190, 5341649872, 123456789457189263869273451298764315536921847741538692382695174615347928974812536
191, 5345870693, 123456789457189263869327415298765341645931872731842596372618954586294137914573628
192, 5350028790, 123456789457189263869327451298765314645931872731842596374698125586213947912574638
193, 5354098948, 123456789457189263869327514298765431645931872731248695384612957572893146916574328
194, 5357956051, 123456789457189263869372145298765431645913872731248956384691527512837694976524318
195, 5361741679, 123456789457189263869372154298765431645931872731248695384517926572694318916823547
196, 5365435153, 123456789457189263869372514298765431645931872731248695382694157574813926916527348
197, 5368990834, 123456789457189263896237145289765431645913872731842596372598614564371928918624357
198, 5372443923, 123456789457189263896237154289765431645913872731842695312698547564371928978524316
199, 5375789590, 123456789457189263896237451289765314645391827731842695372918546518674932964523178
200, 5379041817, 123456789457189263896327145289765431645931872731842596364218957572694318918573624
201, 5382207071, 123456789457189263896327154289765431645931872731842596374618925518293647962574318
202, 5385271133, 123456789457189263896327415289765341645931872731248596378612954514893627962574138
203, 5388237442, 123456789457189263896327451289765314645931872731248596378612945564893127912574638
204, 5391170332, 123456789457189263896327514289765431645931872731842695374218956518694327962573148
205, 5394011712, 123456789457189263896327541289765314645913827731842695312674958578291436964538172
206, 5396713697, 123456789457189263896372145289765431645913872731248956378521694562894317914637528
207, 5399342485, 123456789457189263896372154289765431645931827731824695362547918514698372978213546
208, 5401874683, 123456789457189263896372451289765314645931872731248596362517948514893627978624135
209, 5404318643, 123456789457189263968327145296875431745931826831642957389514672512768394674293518
210, 5405562602, 123456789457189263968327154294875631736941825815632497342518976579264318681793542
211, 5407879773, 123456789457189263968327415296875341745913826831642597384591672579268134612734958
212, 5410237627, 123456789457189263968327514296875431745931826831642957374518692519264378682793145
213, 5411375216, 123456789457189263968327541296745318735891426841632975382564197574918632619273854
214, 5412458444, 123456789457189263968372145296837514375941826814625937539268471681794352742513698
215, 5414641755, 123456789457189263986327145298765431645931827731842956374618592569274318812593674
216, 5416886508, 123456789457189263986327154298765431645931872731248695362894517579612348814573926
217, 5419030185, 123456789457189263986327451298765314645931872731842695369218547572694138814573926
218, 5421130983, 123456789457189326689237451298765143564913872731824695342571968876392514915648237
219, 5422138448, 123456789457189326689237514298715643536894271714362895362971458871543962945628137
220, 5424108763, 123456789457189326689237541298765413564913872731824695342571968876392154915648237
221, 5425950485, 123456789457189326689273145298765431561834297734912568375628914842591673916347852
222, 5427823584, 123456789457189326689273451298765143564391278731842695376928514845617932912534867
223, 5429595885, 123456789457189326689273541298765413564321978731948652342617895876592134915834267
224, 5429943662, 123456789457189326689327154296735841745891632831642597368274915574918263912563478
225, 5431912104, 123456789457189326689327451298765143564931278731842695376298514815674932942513867
226, 5433589808, 123456789457189326689327541298765413564813972731294865345671298876932154912548637
227, 5435110809, 123456789457189326689372415298765143541238967736914852362891574874523691915647238
228, 5436609543, 123456789457189326689372541298765413564913278731824695376298154815647932942531867
229, 5438124909, 123456789457189326689723145298675431564831972731942568376598214845217693912364857
230, 5439582007, 123456789457189326689723415298675143564831972731942568376518294845297631912364857
231, 5440913192, 123456789457189326689732145298675431564321978731948652315897264876214593942563817
232, 5442192761, 123456789457189326689732415298675143564321978731948652345297861876513294912864537
233, 5443454774, 123456789457189326689732514298675431564391278731248695312964857876513942945827163
234, 5444673518, 123456789457189326689732541298675413564813972731294865376928154845361297912547638
235, 5445060160, 123456789457189326698237145286741593735968412941325678379612854514893267862574931
236, 5446243123, 123456789457189326698237541289765413561394278734821695375948162816572934942613857
237, 5446813295, 123456789457189326698273514289734651376591248514628973741962835865317492932845167
238, 5447924378, 123456789457189326698273541289765413561348972734921865345617298812594637976832154
239, 5449000929, 123456789457189326698732415289675143564321978731948562315864297842597631976213854
240, 5449167961, 123456789457189326869372514298543671514768932736921845345617298672894153981235467
241, 5449701901, 123456789457189623689237145298715364315864972746392851562971438871543296934628517
242, 5450749984, 123456789457189623689237154298765431561843297734921568342618975876594312915372846
243, 5451724575, 123456789457189623689273145298765431561834297734921568345618972876592314912347856
244, 5452692363, 123456789457189623689273154298765431564931278731842965342618597876594312915327846
245, 5453147673, 123456789457189623689273541298761354536948217714325968362894175871532496945617832
246, 5454062922, 123456789457189623689327145298765431561843297734291568312974856876532914945618372
247, 5454563459, 123456789457189623689327154298763541361542897574918362742635918836291475915874236
248, 5455346795, 123456789457189623689372145298765431536214897741938562312647958874593216965821374
249, 5456169291, 123456789457189623689372154298765431561843297734921568342618975876594312915237846
250, 5456546547, 123456789457189623689372514298764351346521897715938246531297468874615932962843175
251, 5456955103, 123456789457189623689723145298675314371248956546391278765832491834917562912564837
252, 5457392895, 123456789457189623689723154298645371345917862761832495574261938836594217912378546
253, 5457779924, 123456789457189623689723415298675134316294578574318296765832941842961357931547862
254, 5457920360, 123456789457189623689723451296837514318645972574291836762918345831564297945372168
255, 5458282322, 123456789457189623689723514298645137376291845541378962765832491834917256912564378
256, 5458637024, 123456789457189623689723541298641357314975862765832194542318976836297415971564238
257, 5459312698, 123456789457189623689732145298675431564391872731248956376514298815927364942863517
258, 5459974435, 123456789457189623689732154298675431564391278731248596376824915815967342942513867
259, 5460287644, 123456789457189623689732415298574361546391278731268594315927846874615932962843157
260, 5460910835, 123456789457189623689732451298675314564321978731948562315864297876293145942517836
261, 5461456918, 123456789457189623689732514298675431564391872731248956315864297876923145942517368
262, 5461981722, 123456789457189623689732541298675314561394278734218965315827496876943152942561837
263, 5462515889, 123456789457189623698237145289765431561943872734821596345672918812594367976318254
264, 5463019273, 123456789457189623698237154289765431561943278734821596345692817812374965976518342
265, 5463484258, 123456789457189623698237541289765314536841972714392865362974158845613297971528436
266, 5463946044, 123456789457189623698273145289765431561834297734912568345691872812347956976528314
267, 5464387689, 123456789457189623698273154289765431561934278734821596345692817812347965976518342
268, 5464806462, 123456789457189623698327145289765431564831297731942568315694872842573916976218354
269, 5465230610, 123456789457189623698327154289765431531942876746813592362574918874291365915638247
270, 5465609051, 123456789457189623698327514289765431546213897731948256362571948815694372974832165
271, 5465970936, 123456789457189623698372145289765431561943278734821596312594867845637912976218354
272, 5466331757, 123456789457189623698372154289765431564213897731894562315948276842637915976521348
273, 5466507918, 123456789457189623698732145289675314374218956516394278765823491831947562942561837
274, 5466679941, 123456789457189623698732154289617435316594278745823916562978341834261597971345862
275, 5466845868, 123456789457189623698732415289645371374218956516397248765823194831974562942561837
276, 5467000562, 123456789457189623698732514289645137376291845514378962765823491842917356931564278
277, 5467151226, 123456789457189623698732541289617435316594278745823916571948362862375194934261857
278, 5467460625, 123456789457189623869237145298765431641328597735941268384572916516894372972613854
279, 5467605552, 123456789457189623869273145298761534536948217741325896312597468674832951985614372
280, 5467747372, 123456789457189623869273154298764315546321978731598246315947862674832591982615437
281, 5467884973, 123456789457189623869273451298761534536948172741325896315697248674832915982514367
282, 5468172640, 123456789457189623869327154298765431635214897741938562316842975572691348984573216
283, 5468418733, 123456789457189623869372145298765431645831972731294856386517294512948367974623518
284, 5468542213, 123456789457189623869372154298763541346521978715948236571894362634215897982637415
285, 5468666283, 123456789457189623896237145289715364531964278674823951315678492742591836968342517
286, 5468783253, 123456789457189623896237154289741365645823971731695842372964518514378296968512437
287, 5468900604, 123456789457189623896237415289745361534961278671823954345678192712594836968312547
288, 5469011022, 123456789457189623896237451289741536645823197731695842378964215514372968962518374
289, 5469049010, 123456789457189623896237514268974135371865492945312867534691278682743951719528346
290, 5469158361, 123456789457189623896237541289745136534691872671823495318572964762914358945368217
291, 5469369628, 123456789457189623896327145289765431645231897731948562362574918514893276978612354
292, 5469579264, 123456789457189623896327154289765431645231897731948562378612945514893276962574318
293, 5469768425, 123456789457189623896327415289765341635241978741893256368574192514932867972618534
294, 5469957191, 123456789457189623896327451289765314645213897731894562362571948514938276978642135
295, 5470128775, 123456789457189623896327514289765431641893257735241968312574896564918372978632145
296, 5470281408, 123456789457189623896372145289765431645231897731894562318947256574623918962518374
297, 5470429214, 123456789457189623896372154289765431534921867671843295345618972762594318918237546
298, 5470500169, 123456789457189623896372451289763514645918372731524968312647895564891237978235146
299, 5470633471, 123456789457189623968327145296875431741932568835641972312794856579268314684513297
300, 5470773225, 123456789457189623968327154296875431741293865835641972312968547589734216674512398
301, 5470892451, 123456789457189623968327415296875341745631892831294567384512976519768234672943158
302, 5470912654, 123456789457189623968372145285793461631248597749561238314825976592637814876914352
303, 5470974900, 123456789457189623968372154296837541735241968841695372374518296512964837689723415
304, 5471038513, 123456789457189623986327145298745361564213897731968452342691578675832914819574236
305, 5471108182, 123456789457189623986327154298745361534691278671832945365978412742513896819264537
306, 5471166993, 123456789457189623986327415298745361534691278671832954365214897749568132812973546
307, 5471188218, 123456789457189623986327451269741538541638297738592146312864975695273814874915362
308, 5471245160, 123456789457189623986327514298745361534691278671832945315274896749568132862913457
309, 5471300280, 123456789457189623986327541298745136534691872671832495365978214742513968819264357
310, 5471349707, 123456789457189632689237145298714563314625978765398421536972814871543296942861357
311, 5471441576, 123456789457189632689273145298765314374891526561324978736548291815932467942617853
312, 5471531559, 123456789457189632689273154298765413564831297731942568376594821815327946942618375
313, 5471612324, 123456789457189632689273514298765143365914278741328956574632891836591427912847365
314, 5471655594, 123456789457189632689327154298715463315264897764893521576931248831542976942678315
315, 5471730188, 123456789457189632689372145298765314546231897731894526315947268874623951962518473
316, 5471799200, 123456789457189632689372154298765413376214895514938267762591348845623971931847526
317, 5471872827, 123456789457189632689723145298675413364218597571934268736591824845362971912847356
318, 5471935276, 123456789457189632689723514298675143561394278734218956312947865876532491945861327
319, 5471994399, 123456789457189632689732145298675413536841297741293568312967854865324971974518326
320, 5472051979, 123456789457189632689732154298675413561394278734218596312947865876523941945861327
321, 5472099889, 123456789457189632689732514298675143561394278734218956312947865876523491945861327
322, 5472144765, 123456789457189632689732541298675413531924867746318295362897154815243976974561328
323, 5472191617, 123456789457189632698237145289765314365914827741328596512643978874591263936872451
324, 5472237619, 123456789457189632698237154289765413531842976746913528362574891874391265915628347
325, 5472277727, 123456789457189632698237514289765143536914278741328965365872491874591326912643857
326, 5472315027, 123456789457189632698273145289764513536918427741532968365891274874625391912347856
327, 5472351996, 123456789457189632698327145289765314346918257571243968765832491812694573934571826
328, 5472383500, 123456789457189632698327154289764315364512978571938426736845291812693547945271863
329, 5472412419, 123456789457189632698327541289765413346918257571243968765832194812694375934571826
330, 5472440401, 123456789457189632698372154289765413346821975571934826712693548865247391934518267
331, 5472469603, 123456789457189632698732145289675413536841297741293568312967854865324971974518326
332, 5472494701, 123456789457189632698732514289675143374291865516348297765914328842563971931827456
333, 5472515353, 123456789457189632869273145298765314634891527715324968342917856571648293986532471
334, 5472525458, 123456789457189632869372145298763514634215897715948263346521978571894326982637451
335, 5472544929, 123456789457189632896237145289764513641593278735821496364972851572318964918645327
336, 5472563925, 123456789457189632896237415289765341364912857715348926578623194642891573931574268
337, 5472581137, 123456789457189632896327145289765314635241978741938526318594267574612893962873451
338, 5472595917, 123456789457189632896327154289765413634218597715943268348671925562894371971532846
339, 5472609577, 123456789457189632896327451289765314635241978741938526318594267574612893962873145
340, 5472621901, 123456789457189632896327541289764315645213978731895426368571294572948163914632857
341, 5472632498, 123456789457189632896372145289764513614935278735821496342597861578613924961248357
342, 5472642060, 123456789457189632896372154289764315645913278731825946312648597578291463964537821
343, 5472651072, 123456789457189632896372451289765314364291578715834926572948163641523897938617245
344, 5472659287, 123456789457189632968327145296875314735914826841632597379261458512748963684593271
345, 5472666548, 123456789457189632968327154296875413574631928831942576312794865645218397789563241
346, 5472670117, 123456789457189632968327451296745318374218596581693247639874125715932864842561973
347, 5472677253, 123456789457189632986327145298764513645831297731592864369278451512643978874915326
348, 5472677708, 123456789457289163689173452294861537365947218718325946536794821871532694942618375
349, 5472680643, 123456789457289163689713254296845317315697842874132695531978426768524931942361578
350, 5472683633, 123456789457289163698137425285974631364521978971368254516892347739645812842713596
351, 5472688469, 123456789457289163698137524286975431745813296931642857319728645572364918864591372
352, 5472690625, 123456789457289163698317254286931547534762891719845326362574918845193672971628435
353, 5472692766, 123456789457289163698317524285931647374568291916724358531892476769145832842673915
354, 5472694725, 123456789457289163698713254286395471345167928971842635512978346769534812834621597
355, 5472698896, 123456789457289163869713245298675431641832597735194628386527914512948376974361852
356, 5472702272, 123456789457289163869731245298675431634192578715843926382514697576928314941367852
357, 5472705443, 123456789457289163869731524298675431645193278731842956382514697574968312916327845
358, 5472708593, 123456789457289163896317245289764531534921678671538492345692817712843956968175324
359, 5472709240, 123456789457289163896731524261948375745312896938567412389675241512894637674123958
360, 5472710768, 123456789457289613689173245296831457315647892748592361531768924872914536964325178
361, 5472713252, 123456789457289613689713245296875134741392568835641972318527496574968321962134857
362, 5472715485, 123456789457289613689713254296875341348961572715342968531628497872594136964137825
363, 5472717415, 123456789457289613698137254286975341731864592945321867369718425512643978874592136
364, 5472718768, 123456789457289613698317245286974351735861492941532867312645978569728134874193526
365, 5472720136, 123456789457289613698317254286975341319842567574163892762594138845731926931628475
366, 5472721368, 123456789457289613698713245286974351349521867715638492562897134871345926934162578
367, 5472723035, 123456789457289613869713245298671534635894172741532896372145968584967321916328457
368, 5472723960, 123456789457289613869731245298675134614893527735142968382917456571364892946528371
369, 5472724832, 123456789457289613869731254298645371631897542745312968382574196516928437974163825
370, 5472725760, 123456789457289613896137245289745361365812497741693852538924176612578934974361528
371, 5472726568, 123456789457289613896137254289745361645813972731692548368971425512364897974528136
372, 5472727128, 123456789457289613896317245289745136345621978761893524578164392612938457934572861
373, 5472727885, 123456789457289613896317425289745136641832597735691842364528971512974368978163254
374, 5472728336, 123456789457289613896731245289643571645817392731592864364175928512968437978324156
375, 5472728581, 123456789457289613896731254289643175574812936631597428312968547765324891948175362
376, 5472728914, 123456789457289613968137245296871534571943862834562971315628497649715328782394156
377, 5472729070, 123456789457289613968137254295813476671924835834675921316748592589362147742591368
378, 5472729263, 123456789457289613968731245296817534571342896834695127312564978689173452745928361
379, 5472729424, 123456789457289613986137245298713564631524897745968321312645978569871432874392156
380, 5472729447, 123456789457289631689173245246891573871532496935647128362914857594768312718325964
381, 5472729610, 123456789457289631689713254296845317745132968831697542312574896568921473974368125
382, 5472729764, 123456789457289631698317254286945173745163892931728465364892517572631948819574326
383, 5472729875, 123456789457289631869713245298564317631978452745321968382695174574132896916847523
384, 5472729999, 123456789457289631869713254298645173631897542745132968316978425574321896982564317
385, 5472730086, 123456789457289631869731245298317456315642978674895123586174392731928564942563817
386, 5472730135, 123456789457289631869731254298317465315642897674895312586174923731928546942563178
387, 5472730201, 123456789457289631896137245289645173534871926761923458312594867645718392978362514
388, 5472730326, 123456789457289631896137254289715346531648972674392815342861597715923468968574123
389, 5472730353, 123456789457289631896137425289371546631524897745968312312645978574892163968713254
390, 5472730412, 123456789457289631896317245285741963631892574749635812312978456568124397974563128
391, 5472730431, 123456789457289631896317254285641973649735128731892546312978465568124397974563812
392, 5472730472, 123456789457289631896731245285317964641892573739645812312968457578124396964573128
393, 5472730474, 123456789457289631968137254295713468736894512841562397312975846584621973679348125
394, 5472730490, 123456789457289631968731245284615397631897524795342816346978152579123468812564973
396, 5472730501, 123456789457289631986137245248615973695743128731892456312978564579364812864521397
399, 5472730511, 123456789457389612896127354231645978649871523785293146378564291562918437914732865
401, 5472730512, 123456789457389612896172354285793146631524978749618523312945867568237491974861235
405, 5472730516, 123456789457389612896271354289564173641937528735128946312645897568792431974813265
407, 5472730535, 123456789457389612896721354239564178641978523785132946312645897568297431974813265
411, 5472730538, 123456789457389621896217354268741593745893162931625847382164975574938216619572438
416, 5472730539, 123456789457893612986217354274538196531964827698721435342685971715349268869172543
Big1952
RichardGoodrich
 
Posts: 136
Joined: 12 December 2012
Location: Josephine, TX (north of Dallas, TX)

Re: Dynamic Essentialy Different Grid Search Program

Postby champagne » Thu Aug 07, 2025 4:43 am

RichardGoodrich wrote:OK, this is ALPHA

IF you have some reasonably different test cases I can run - especially corner / edge cases please let me know!


Having my virtual catalog, i have small interest in this, I can just make one remark.
All examples of your "find solution grid for a given rank" are in the very high numbers where the catalog is nearly empty.

You should test areas with many solution grids for the given band (say in the first 50 bands)
You could test for example for each of the bands 5-15
the first the last and a rank in the middle
champagne
2017 Supporter
 
Posts: 7688
Joined: 02 August 2007
Location: France Brittany

Re: Dynamic Essentialy Different Grid Search Program

Postby RichardGoodrich » Thu Aug 07, 2025 3:44 pm

champagne wrote:
RichardGoodrich wrote:OK, this is ALPHA

IF you have some reasonably different test cases I can run - especially corner / edge cases please let me know!


Having my virtual catalog, i have small interest in this, I can just make one remark.
All examples of your "find solution grid for a given rank" are in the very high numbers where the catalog is nearly empty.

You should test areas with many solution grids for the given band (say in the first 50 bands)
You could test for example for each of the bands 5-15
the first the last and a rank in the middle


champagne Thanks for the response! I understand you got your DLL's. Unfortunately, I can't run them and they are for Windows. Your advice on those early bands is SPOT ON! So, I chose gang-006 / 006.sudz It is the largest one at 96_229_042 bytes (almost 100 MiB = 104_857_600 bytes).

So bottom line I ran this a couple ways. Using my latest code it took 4 minutes + 17 to 22 seconds for the cases I ran. Ironincally, I created an SQLite3 Python database for 006.sudz and my searches only took about 18 seconds. This was a big surprise to me! I got the same index and strings with both cases. I will give you the cases I ran. Would you run your DLLs and correlate with my results and give me your times?

Code: Select all
(100203037, '123456789456789123789132564214365897365897241897214635531648972642971358978523416')
(148203036, '123456789456789123789132564261547938374698251598213647635871492812964375947325816')
196432076, '123456789456789123789132564298675431574813692631924875367241958842597316915368247')
(196432078,, '123456789456789123789132564298675431574813692631924875367591248812347956945268317')


This makes me go Hmmmm. One SQLite3 database is ~506 GiB on my PC. If I break that database up into 51 databases (of 100 MiB size) perhaps I could get search times to < 20 seconds for all searches. Also 50 databases could be stored on a few USB flash drives. The databases don't need the 401 sudz files or the need to run the sudz unzip program Even 100 MiB database is slow to open in my Linux SQLite3 database pgm [DB Browser for SQLite), but I have a short Python Script which can evidently do finds in about 18 seconds. There [may] be a possibility of loading an SQLite data into memory with Python - perhaps that would speed things up?
Big1952
RichardGoodrich
 
Posts: 136
Joined: 12 December 2012
Location: Josephine, TX (north of Dallas, TX)

Re: Dynamic Essentialy Different Grid Search Program

Postby champagne » Thu Aug 07, 2025 4:17 pm

here the results of my run.
The DLL is designed to give a very quick answer, so don't be surprised by the total elapsed time of 155 milliseconds

C10_ find sol from rank file of ranks
100203037 rank to find sol
123456789456789123789132564214365897365897241897214635531648972642971358978523416 sol
148203036 rank to find sol
123456789456789123789132564261547938374698251598213647635871492812964375947325816 sol
196432076 rank to find sol
123456789456789123789132564298675431574813692631924875367241958842597316915368247 sol
196432078 rank to find sol
123456789456789123789132564298675431574813692631924875367591248812347956945268317 sol
end of file

total elapsed time 0s 155ms
champagne
2017 Supporter
 
Posts: 7688
Joined: 02 August 2007
Location: France Brittany

Re: Dynamic Essentialy Different Grid Search Program

Postby RichardGoodrich » Thu Aug 07, 2025 5:48 pm

champagne wrote:here the results of my run.
The DLL is designed to give a very quick answer, so don't be surprised by the total elapsed time of 155 milliseconds

C10_ find sol from rank file of ranks
100203037 rank to find sol
123456789456789123789132564214365897365897241897214635531648972642971358978523416 sol
148203036 rank to find sol
123456789456789123789132564261547938374698251598213647635871492812964375947325816 sol
196432076 rank to find sol
123456789456789123789132564298675431574813692631924875367241958842597316915368247 sol
196432078 rank to find sol
123456789456789123789132564298675431574813692631924875367591248812347956945268317 sol
end of file

total elapsed time 0s 155ms


NICE! I assume this is because your code is done in C++ [or equivalent]?

At least we agree on the strings and indexes!
Big1952
RichardGoodrich
 
Posts: 136
Joined: 12 December 2012
Location: Josephine, TX (north of Dallas, TX)

Re: Dynamic Essentialy Different Grid Search Program

Postby champagne » Thu Aug 07, 2025 8:00 pm

RichardGoodrich wrote:
NICE! I assume this is because your code is done in C++ [or equivalent]?



Here the coding language has nothing to do with the response time

If you have a look to the DLL description, You'll see that the biggest file used is a 600K records description of the valid starts with 4 rows filled.
Downstream, you have a minlex local builder using a 44 gangsters recognition but also a band recognition

All this can be done with any "classical" coding language.

If you skip the code going from any puzzle to a minlex solution grid morph, this code has nothing special.
champagne
2017 Supporter
 
Posts: 7688
Joined: 02 August 2007
Location: France Brittany


Return to Software