I have a small program testing the validity of the DLL frame.
This is done using my standard start of the command line, but the code specific to the program can be seen ignoring the context.
This program has four small processes
- Code: Select all
A One shot: give the rank, get the solution grid
The same with a file with one rank per line
A reverse process with a file containing solution grids where the rank is searched (assuming a non minimal given)
A virtual file process.
The minimal output is the list of ranks found
In option, the solution grid is printed;
Here is the corresponding code file sktestvcat.cpp
The four process are he functions C0(); C1(); C10(); C11()
- Code: Select all
/*
My standard start using maingp as command line analyser
contains the entry G0() called by main
*/
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
#define INCLUDE_DEBUGGING_CODE
#include <stdlib.h>
#include <sys/timeb.h>
using namespace std;
// nothing to do here
#include "maingp_cpp.h"
#include "dllusers\u05skvcar_user.h"
void C0() { // virtual sequential mode
char ws[82]; ws[81] = 0;
cout << " C0_ virtual file bands -v0- -v1- print if -v2-" << endl;
if (SkvcatSetModeGetVCDESK(1, &pvcdesc))
cout << " set mode failed" << endl;
if (SkvOpennBands(sgo.vx[0], sgo.vx[1])) {
cout << "could not open bands range "<< sgo.vx[0] <<" "<< sgo.vx[1] << endl;
return;
}
else cout <<"open "<< sgo.vx[0] << " " << sgo.vx[1] <<" done " << endl;
while (!SkvGetNext()) {
if (sgo.vx[2]) {
char ws[82]; ws[81] = 0;
memcpy(ws, pvcdesc->g.b1, 81);
cout << ws << " sol " ;
}
cout << pvcdesc->rank << " __ " << endl;
}
}
void C1() {
char ws[82]; ws[81] = 0;
cout << " C1_ find sol from rank -v0-" << endl;
if( SkvcatSetModeGetVCDESK(1, &pvcdesc))
cout <<" set mode failed"<<endl;
if (SkvcatFinSolForRank(sgo.vx64[0]))
cout << "find failed" << endl;
else {
memcpy(ws, pvcdesc->g.b1,81);
cout <<ws<<" sol"<<endl;
}
}
void C10() {
char ws[82]; ws[81] = 0;
cout << " C10_ find sol from rank file of ranks " << endl;
char* ze = finput.ze;
if (SkvcatSetModeGetVCDESK(1, &pvcdesc)) {
cout << " set mode failed" << endl;
return;
}
while (finput.GetLigne()) {
if (strlen(ze) < 1)continue;// no empty line
cout << ze << " rank to find sol" << endl;
if (strlen(ze) >10)ze[10]=0;// no blank
int64_t v= strtoll(ze, 0, 10);
if (SkvcatFinSolForRank(v))
cout << "find failed" << endl;
else {
memcpy(ws, pvcdesc->g.b1, 81);
cout << ws << " sol" << endl;
}
}
cout << "end of file " << endl;
}
void C11() {
cout << " C11_ find rank for a file of solution grids " << endl;
char* ze = finput.ze;
int smin[81];
if (SkvcatSetModeGetVCDESK(2, &pvcdesc)) {
cout << " set mode failed" << endl;
return;
}
while (finput.GetLigne()) {
if (strlen(ze) < 81)continue;// no empty line
cout << ze << " sol to find rank" << endl;
if (!skvcatIsVali81(ze)) {
cout << "not a valid sol" << endl;
continue;
}
uint64_t r =SkvcatGetRankFromSolCharNotMin(ze, smin);
if (!r) {
cout << " failed to find rank" << endl;
continue;
}
for (int i = 0; i < 81; i++) cout << smin[i] + 1;
cout << " solmin rank" << r << endl;
}
cout << "end of file " << endl;
}
/* strtoll example */
/*
#include <stdio.h> // printf, NULL
#include <stdlib.h> // strtoll
int main()
{
char szNumbers[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
char* pEnd;
long long int lli1, lli2, lli3, lli4;
lli1 = strtoll(szNumbers, &pEnd, 10);
lli2 = strtoll(pEnd, &pEnd, 16);
lli3 = strtoll(pEnd, &pEnd, 2);
lli4 = strtoll(pEnd, NULL, 0);
printf("The decimal equivalents are: %lld, %lld, %lld and %lld.\n", lli1, lli2, lli3, lli4);
return 0;
}*/
void Go_0() {
int need_input_file[3] = { 10,11,94 }, need = 0;
for (int i = 0; i < 3; i++)
if (sgo.command == need_input_file[i]) { need = 1; break; }
// open outputs files 1.txt
if (sgo.foutput_name) {
char zn[200];
strcpy(zn, sgo.foutput_name);
int ll = (int)strlen(zn);
strcpy(&zn[ll], "_file1.txt");
fout1.open(zn);
}
if (need) {// input file expected
if (!sgo.finput_name) {
cerr << "missing input file name" << sgo.finput_name << endl; return;
}
finput.open(sgo.finput_name);
if (!finput.is_open()) {
cerr << "error open file " << sgo.finput_name << endl;
return;
}
}
cerr << "running command " << sgo.command << endl;
switch (sgo.command) {
case 0: C0(); break;// virtual file sequential mode
case 1:C1(); break;// get sol from rank
case 10: C10(); break;// get sol for a file of ranks
case 11: C11(); break;
}
cerr << "go_0 return" << endl;
}
To test the four case using sktvcat.exe (all DLL reachable at run time)
The user can use the commands
- Code: Select all
sktvcat -c0 -v0-390 -v1-415 -v2-1 >d0.txt
sktvcat -c1 -v0-1 >d1.txt
sktvcat -c10 -ifmytr.txt >d10.txt
sktvcat -c11 -ifmytsol.txt >d11.txt
sktvcat -c0 -v0-390 -v1-415 -v2-1 >d0.txtSequential file for bands 390 to 415, print the sol
Result expected, something similar to
- Code: Select all
C0_ virtual file bands -v0- -v1- print if -v2-
open 390 415 done
123456789457289631896317254231564897689173425745928163318645972572891346964732518 sol 5472730411 __
123456789457289631896317254231564897689173425745928163364792518572831946918645372 sol 5472730412 __
123456789457289631896317254231564897689173425745928163364891572518732946972645318 sol 5472730413 __
123456789457289631896317254231564897689173425745928163372645918518792346964831572 sol 5472730414 __
123456789457289631896317254231968475748523916965174328382641597574892163619735842 sol 5472730416 __
123456789457289631896317254238791546761534928945862173379128465514673892682945317 sol 5472730417 __
123456789457289631896317254241875396389642175765193428538764912612938547974521863 sol 5472730418 __
123456789457289631896317254241968375738524916965173428382641597574892163619735842 sol 5472730419 __
123456789457289631896317254248573916731968425965124378382641597574892163619735842 sol 5472730420 __
123456789457289631896317254249635817685741392731892465312978546578164923964523178 sol 5472730421 __
123456789457289631896317254261935847349872516578164923612593478785641392934728165 sol 5472730422 __
123456789457289631896317254261935847349872516578164923685741392712593468934628175 sol 5472730422 __
123456789457289631896317254264195378319872546578643912685721493742938165931564827 sol 5472730424 __
123456789457289631896317254264938175319572468785641392578164923642893517931725846 sol 5472730425 __
123456789457289631896317254264938517319572846785641923578164392642893175931725468 sol 5472730426 __
123456789457289631896317254271935846349862517568174923685741392712593468934628175 sol 5472730427 __
123456789457289631896317254274938165319562478685741392568174923742893516931625847 sol 5472730428 __
123456789457289631896317254274938516319562847685741923568174392742893165931625478 sol 5472730429 __
123456789457289631896317254285641973649735128731892546312978465568124397974563812 sol 5472730430 __
123456789457289631896731245231564897574928316689173524315642978748395162962817453 sol 5472730431 __
123456789457289631896731245231564897574928316689173524315897462748612953962345178 sol 5472730431 __
123456789457289631896731245231564897574928316689173524345612978718395462962847153 sol 5472730432 __
123456789457289631896731245231564897574928316689173524345897162718642953962315478 sol 5472730433 __
123456789457289631896731245231564897649178523785923164318697452564312978972845316 sol 5472730434 __
123456789457289631896731245231564897649178523785923164372895416564312978918647352 sol 5472730435 __
123456789457289631896731245231564897649178523785923164378695412564312978912847356 sol 5472730436 __
123456789457289631896731245231564897685973124749128563318697452564312978972845316 sol 5472730437 __
123456789457289631896731245231564897685973124749128563372895416564312978918647352 sol 5472730438 __
123456789457289631896731245231564897685973124749128563378695412564312978912847356 sol 5472730439 __
123456789457289631896731245231564897689173452745928163318692574562347918974815326 sol 5472730440 __
123456789457289631896731245231564897689173452745928163362815974574692318918347526 sol 5472730441 __
123456789457289631896731245231564897689173524745928163318697452564312978972845316 sol 5472730442 __
123456789457289631896731245231564897689173524745928163372895416564312978918647352 sol 5472730443 __
123456789457289631896731245231564897689173524745928163378695412564312978912847356 sol 5472730444 __
123456789457289631896731245231574896645928317789163524374895162518642973962317458 sol 5472730446 __
123456789457289631896731245231897564685143972749625318378512496564978123912364857 sol 5472730447 __
123456789457289631896731245231897564689145372745623918372514896564978123918362457 sol 5472730447 __
123456789457289631896731245234517968579648123681392457312874596745963812968125374 sol 5472730449 __
123456789457289631896731245235817964641392857789645312312578496564923178978164523 sol 5472730450 __
123456789457289631896731245235817964641392857789645312312578496568924173974163528 sol 5472730450 __
123456789457289631896731245235817964641392857789645312312578496574963128968124573 sol 5472730451 __
123456789457289631896731245235897164649312578781645392312964857564178923978523416 sol 5472730453 __
123456789457289631896731245235897164649312578781645392312968457568174923974523816 sol 5472730453 __
123456789457289631896731245235897164649312578781645392312974856574168923968523417 sol 5472730454 __
123456789457289631896731245239178564568924317741563928385647192612895473974312856 sol 5472730456 __
123456789457289631896731245239645817641897352785312964312578496568924173974163528 sol 5472730457 __
123456789457289631896731245241397568635812497789645312312974856564128973978563124 sol 5472730458 __
123456789457289631896731245241397568635812497789645312312974856574168923968523174 sol 5472730458 __
123456789457289631896731245241897563685312974739645812312568497564973128978124356 sol 5472730460 __
123456789457289631896731245241897563685312974739645812312578496574963128968124357 sol 5472730460 __
123456789457289631896731245241897563685312974739645812312968457578124396964573128 sol 5472730461 __
123456789457289631896731245245317896631892574789645312312968457564173928978524163 sol 5472730463 __
123456789457289631896731245245397168639812574781645392312968457568174923974523816 sol 5472730464 __
123456789457289631896731245245397168639812574781645392312974856574168923968523417 sol 5472730464 __
123456789457289631896731245245397816639812574781645392312968457564173928978524163 sol 5472730466 __
123456789457289631896731245245817396681392574739645812312968457564173928978524163 sol 5472730467 __
123456789457289631896731245249317568635892174781645392312968457568174923974523816 sol 5472730468 __
123456789457289631896731245249317568635892174781645392312974856574168923968523417 sol 5472730468 __
123456789457289631896731245249317568635892417781645392312974856574168923968523174 sol 5472730469 __
123456789457289631896731245285317964641892573739645812312968457578124396964573128 sol 5472730471 __
123456789457289631968137254245918376631574928789623415314862597576391842892745163 sol 5472730472 __
123456789457289631968137254295713468736894512841562397312975846584621973679348125 sol 5472730473 __
123456789457289631968731245231564897689317452745928163314875926596142378872693514 sol 5472730474 __
123456789457289631968731245231564897689317452745928163396142578514873926872695314 sol 5472730474 __
123456789457289631968731245231645897689317524745892316312564978574928163896173452 sol 5472730476 __
123456789457289631968731245231645897689317524745892316316978452574123968892564173 sol 5472730476 __
123456789457289631968731245231645897689317524745892316392564178574128963816973452 sol 5472730477 __
123456789457289631968731245231648597689517324745392816374125968592864173816973452 sol 5472730479 __
123456789457289631968731245231648597689517324745392816374925168512864973896173452 sol 5472730479 __
123456789457289631968731245234615897681397524795842316312564978579128463846973152 sol 5472730481 __
123456789457289631968731245234615897681397524795842316346978152579123468812564973 sol 5472730481 __
123456789457289631968731245234695817689317524715842396346178952571923468892564173 sol 5472730483 __
123456789457289631968731245239645817681397524745812396316978452574123968892564173 sol 5472730484 __
123456789457289631968731245239645817681397524745812396396178452574923168812564973 sol 5472730484 __
123456789457289631968731245239648517681597324745312896374125968592864173816973452 sol 5472730486 __
123456789457289631968731245241573896639812457785964123374625918596148372812397564 sol 5472730487 __
123456789457289631968731245281643597639517824745892316316978452592364178874125963 sol 5472730488 __
123456789457289631968731245284615397631897524795342816346978152579123468812564973 sol 5472730489 __
123456789457289631986137245231645897698713524745892316312564978574928163869371452 sol 5472730490 __
123456789457289631986137245231645897698713524745892316312574968564928173879361452 sol 5472730490 __
123456789457289631986137245231864597695371824748925316364592178512748963879613452 sol 5472730492 __
123456789457289631986137245231864597695371824748925316369718452512643978874592163 sol 5472730492 __
123456789457289631986137245231864597695371824748925316374592168512648973869713452 sol 5472730493 __
123456789457289631986137245231864597695371824748925316379618452512743968864592173 sol 5472730494 __
123456789457289631986137245231874596648925317795361824364592178512748963879613452 sol 5472730496 __
123456789457289631986137245231874596648925317795361824369718452512643978874592163 sol 5472730496 __
123456789457289631986137245231874596648925317795361824374592168512648973869713452 sol 5472730497 __
123456789457289631986137245231874596648925317795361824379618452512743968864592173 sol 5472730498 __
123456789457289631986137245248615973695743128731892456312978564579364812864521397 sol 5472730500 __
123456789457389612896127354231564978649718523785932146372645891568291437914873265 sol 5472730501 __
123456789457389612896127354231564978649718523785932146374291865562873491918645237 sol 5472730501 __
123456789457389612896127354231564978649718523785932146374891265568273491912645837 sol 5472730502 __
123456789457389612896127354231564978649718523785932146378645291562891437914273865 sol 5472730503 __
123456789457389612896127354231645978649871523785293146372564891568912437914738265 sol 5472730505 __
123456789457389612896127354231645978649871523785293146372914865564738291918562437 sol 5472730505 __
123456789457389612896127354231645978649871523785293146374568291562914837918732465 sol 5472730506 __
123456789457389612896127354231645978649871523785293146374912865562738491918564237 sol 5472730507 __
123456789457389612896127354231645978649871523785293146374918265568732491912564837 sol 5472730508 __
123456789457389612896127354231645978649871523785293146378564291562918437914732865 sol 5472730509 __
123456789457389612896172354285793146631524978749618523312945867568237491974861235 sol 5472730511 __
123456789457389612896271354281537946645928173739164528312645897568792431974813265 sol 5472730512 __
123456789457389612896271354285137946641928573739564128312645897568792431974813265 sol 5472730513 __
123456789457389612896271354285713946641892573739645128312564897568927431974138265 sol 5472730514 __
123456789457389612896271354289564173641937528735128946312645897568792431974813265 sol 5472730515 __
123456789457389612896721354231564978649178523785932146312645897568297431974813265 sol 5472730516 __
123456789457389612896721354231564978649178523785932146314297865562813497978645231 sol 5472730516 __
123456789457389612896721354231564978649178523785932146314897265568213497972645831 sol 5472730517 __
123456789457389612896721354231564978649178523785932146318645297562897431974213865 sol 5472730518 __
123456789457389612896721354231578946645932178789164523312645897568297431974813265 sol 5472730520 __
123456789457389612896721354231645978649817523785293146312564897568972431974138265 sol 5472730521 __
123456789457389612896721354231645978649817523785293146312974865564138297978562431 sol 5472730521 __
123456789457389612896721354231645978649817523785293146312978465568134297974562831 sol 5472730522 __
123456789457389612896721354231645978649817523785293146314568297562974831978132465 sol 5472730523 __
123456789457389612896721354231645978649817523785293146314972865562138497978564231 sol 5472730524 __
123456789457389612896721354231645978649817523785293146314978265568132497972564831 sol 5472730525 __
123456789457389612896721354231645978649817523785293146318564297562978431974132865 sol 5472730526 __
123456789457389612896721354231978546649532178785164923312645897568297431974813265 sol 5472730528 __
123456789457389612896721354234178965561932478789564123315297846642813597978645231 sol 5472730529 __
123456789457389612896721354234817965561293478789645123315972846642138597978564231 sol 5472730530 __
123456789457389612896721354235178946641932578789564123312645897568297431974813265 sol 5472730531 __
123456789457389612896721354235817946641293578789645123312564897568972431974138265 sol 5472730532 __
123456789457389612896721354235964178641578923789132546312645897568297431974813265 sol 5472730533 __
123456789457389612896721354239564178641978523785132946312645897568297431974813265 sol 5472730534 __
123456789457389621896217354268174593745938162931562847382641975574893216619725438 sol 5472730535 __
123456789457389621896217354268174593745938162931562847384725916579641238612893475 sol 5472730535 __
123456789457389621896217354268741593745893162931625847382164975574938216619572438 sol 5472730537 __
123456789457893612986217354274538196531964827698721435342685971715349268869172543 sol 5472730538 __
total elapsed time 0s 028ms
sktvcat -c1 -v0-1 >d1.txt- Code: Select all
C1_ find sol from rank -v0-
123456789456789123789123456214365897365897214897214365531642978642978531978531642 sol
total elapsed time 0s 002ms
sktvcat -c10 -ifmytr.txt >d10.txtneed input file fmytr.txt. I used (rank assumed in the first 10 characters of the line
- Code: Select all
5472692770; 353 353 353,
5472707654; 357 357 357,
5472730537; 410 410 410,
5472730538; 415 415 415,
1
And got
- Code: Select all
C10_ find sol from rank file of ranks
5472692770; 353 353 353, rank to find sol
123456789457289163698713254231564897569871342874392516386147925745928631912635478 sol
5472707654; 357 357 357, rank to find sol
123456789457289163896317245271643958584192376639875412318964527762531894945728631 sol
5472730537; 410 410 410, rank to find sol
123456789457389621896217354268741593745893162931625847382164975574938216619572438 sol
5472730538; 415 415 415, rank to find sol
123456789457893612986217354274538196531964827698721435342685971715349268869172543 sol
1 rank to find sol
123456789456789123789123456214365897365897214897214365531642978642978531978531642 sol
end of file
total elapsed time 0s 005ms
sktvcat -c11 -ifmytsol.txt >d11.txtneed an entry file with solution grids fmytsol.txt
I had this , already min lexical although the call is for non min given
- Code: Select all
123456789457289163698713254231564897574892631869371425312645978745928316986137542; 5472692770; 353 353 353,
123456789457289163896317245271643958685192374934875621368521497519764832742938516; 5472707654; 357 357 357,
123456789457289163896731524234568971561974238789312645318625497645897312972143856; 5472708986; 358 358 358,
123456789457289613689713245271564938836197524945328176362941857594872361718635492; 5472712474; 360 360 360,
123456789457289613698317245271964358865731924934528176349872561512643897786195432; 5472718292; 363 363 363,
123456789457289613698317254231874965785693142946125378374562891519738426862941537; 5472718928; 364 364 364,
123456789457289613698713245231978456749561832865324971374192568582637194916845327; 5472720275; 365 365 365,
123456789457289613869731254235648971671925348984317562346872195598163427712594836; 5472724163; 368 368 368,
123456789457289613896137254245618397639745128781392546378524961564971832912863475; 5472726150; 370 370 370,
123456789457289613896317245235641978761938452948572361312864597574193826689725134; 5472726657; 371 371 371,
123456789457289613968137245245613897639748521781592364316925478574861932892374156; 5472728705; 375 375 375,
123456789457289613968137254231645897689713542745892361312564978574928136896371425; 5472728927; 376 376 376,
123456789457289631689173245234567918768941352915328476372615894596834127841792563; 5472729438; 379 379 379,
123456789457289631869713245236594817578162394914378526345927168691835472782641953; 5472729812; 382 382 382,
123456789457289631869713254286971543394562178571834962638127495742395816915648327; 5472729990; 383 383 383,
123456789457289631896317245231645978689731452745892163312564897574928316968173524; 5472730357; 389 389 389,
123456789457289631968731245231645897689317524745892316312564978574928163896173452; 5472730476; 393 393 393,
123456789457289631986137245231645897698713524745892316312564978574928163869371452; 5472730490; 395 395 395,
123456789457389621896217354268741593745893162931625847382164975574938216619572438; 5472730537; 410 410 410,
123456789457893612986217354274538196531964827698721435342685971715349268869172543; 5472730538; 415 415 415,
And I got
- Code: Select all
C11_ find rank for a file of solution grids
123456789457289163698713254231564897574892631869371425312645978745928316986137542; 5472692770; 353 353 353, sol to find rank
123456789457289163698713254231564897574892631869371425312645978745928316986137542 solmin rank5472692770
123456789457289163896317245271643958685192374934875621368521497519764832742938516; 5472707654; 357 357 357, sol to find rank
123456789457289163896317245271643958685192374934875621368521497519764832742938516 solmin rank5472707654
123456789457289163896731524234568971561974238789312645318625497645897312972143856; 5472708986; 358 358 358, sol to find rank
123456789457289163896731524234568971561974238789312645318625497645897312972143856 solmin rank5472708986
123456789457289613689713245271564938836197524945328176362941857594872361718635492; 5472712474; 360 360 360, sol to find rank
123456789457289613689713245271564938836197524945328176362941857594872361718635492 solmin rank5472712474
123456789457289613698317245271964358865731924934528176349872561512643897786195432; 5472718292; 363 363 363, sol to find rank
123456789457289613698317245271964358865731924934528176349872561512643897786195432 solmin rank5472718292
123456789457289613698317254231874965785693142946125378374562891519738426862941537; 5472718928; 364 364 364, sol to find rank
123456789457289613698317254231874965785693142946125378374562891519738426862941537 solmin rank5472718928
123456789457289613698713245231978456749561832865324971374192568582637194916845327; 5472720275; 365 365 365, sol to find rank
123456789457289613698713245231978456749561832865324971374192568582637194916845327 solmin rank5472720275
123456789457289613869731254235648971671925348984317562346872195598163427712594836; 5472724163; 368 368 368, sol to find rank
123456789457289613869731254235648971671925348984317562346872195598163427712594836 solmin rank5472724163
123456789457289613896137254245618397639745128781392546378524961564971832912863475; 5472726150; 370 370 370, sol to find rank
123456789457289613896137254245618397639745128781392546378524961564971832912863475 solmin rank5472726150
123456789457289613896317245235641978761938452948572361312864597574193826689725134; 5472726657; 371 371 371, sol to find rank
123456789457289613896317245235641978761938452948572361312864597574193826689725134 solmin rank5472726657
123456789457289613968137245245613897639748521781592364316925478574861932892374156; 5472728705; 375 375 375, sol to find rank
123456789457289613968137245245613897639748521781592364316925478574861932892374156 solmin rank5472728705
123456789457289613968137254231645897689713542745892361312564978574928136896371425; 5472728927; 376 376 376, sol to find rank
123456789457289613968137254231645897689713542745892361312564978574928136896371425 solmin rank5472728927
123456789457289631689173245234567918768941352915328476372615894596834127841792563; 5472729438; 379 379 379, sol to find rank
123456789457289631689173245234567918768941352915328476372615894596834127841792563 solmin rank5472729438
123456789457289631869713245236594817578162394914378526345927168691835472782641953; 5472729812; 382 382 382, sol to find rank
123456789457289631869713245236594817578162394914378526345927168691835472782641953 solmin rank5472729812
123456789457289631869713254286971543394562178571834962638127495742395816915648327; 5472729990; 383 383 383, sol to find rank
123456789457289631869713254286971543394562178571834962638127495742395816915648327 solmin rank5472729990
123456789457289631896317245231645978689731452745892163312564897574928316968173524; 5472730357; 389 389 389, sol to find rank
123456789457289631896317245231645978689731452745892163312564897574928316968173524 solmin rank5472730357
123456789457289631968731245231645897689317524745892316312564978574928163896173452; 5472730476; 393 393 393, sol to find rank
123456789457289631968731245231645897689317524745892316312564978574928163896173452 solmin rank5472730476
123456789457289631986137245231645897698713524745892316312564978574928163869371452; 5472730490; 395 395 395, sol to find rank
123456789457289631986137245231645897698713524745892316312564978574928163869371452 solmin rank5472730490
123456789457389621896217354268741593745893162931625847382164975574938216619572438; 5472730537; 410 410 410, sol to find rank
123456789457389621896217354268741593745893162931625847382164975574938216619572438 solmin rank5472730537
123456789457893612986217354274538196531964827698721435342685971715349268869172543; 5472730538; 415 415 415, sol to find rank
123456789457893612986217354274538196531964827698721435342685971715349268869172543 solmin rank5472730538
end of file