Portál AbcLinuxu, 3. května 2025 03:02
todleto bytě jako mohlo zajímat pane vlk hele :O :O ;D ;D
ten zoreček jak ho tam maj popsanej asi jako nefunguje ale se zahrnutím tý váhy druhý číslice zprava snad jakoby jo. je tam jediná vyjímka ato když je zbytek po dělení dvojka. řešim to hejbáním uplně nejposlednější cifričkou napravo v čísle. pokud bysme vybrali jako tamtu modulo pozici poslední cifričku s váhou 1 tak zase nenajdem řešení pro zbytek 1 protože desítku na pozici jedný cifry nenacpem stejně jako u tý předposlední u zbytku 2 :O :O :D ;D
si teda jako myslim že nám stačí mit závislý jenom nějaký dvě zvolený cifry v tom čísle abysme z uplně jakýhokoliv zbytku mohli jakoby udělat něco dělitelnýho bezezbytku jedenáctma noa s vostatníma ciframa čísla si mužem moct dělat uplně co chcem a nebudem muset dělat řešení hrubou silou :D :D ;D ;D
#!/usr/bin/python3 WEIGHT = (6, 3, 7, 9, 10, 5, 8, 4, 2, 1) def validate_number(number): chk = sum([w * i for w, i in zip(WEIGHT, number)]) return chk % 11 == 0 # kontrolni pozice je předposlední číslice v čísle účtu def dopocitej_kontrolni_pozici(number): chk = sum([w * i for w, i in zip(WEIGHT, number)]) zbytek = chk % 11 # zbytek plus co je dělitelný bezezbytku jedenácti?? :O ;D # předposlední pozice má váhu 2 takže budem skákat po dvojkách od nuly po 18 # mužem najít pro všecky hodnoty zbytku kromě dvojky protože desítku (abysme měli 22) do jedný # jediný cifričky prostě nenacpem ikdbyby sme jakoby děsně moc chtěli :/ :/ # asi to maj v tom popisu blbě ale nevim if zbytek != 2: for x in range(0,10): if (zbytek + x*2) % 11 == 0: number[-2] = x return True # když máme zbytek 2 uděláme úpravu nejposlednější čísličky napravo co má váhu jedna # takže hejbnem celým zbytkem o jedna # lepší řešení mě nenapadlo :/ :/ else: if number[-1] < 9: number[-1] += 1 number[-2] = 4 return True else: number[-1] = 8 number[-2] = 5 return True # funguje to jakoby ždycky???? :O :O :O :O # nóóó mělo by že :O :O ale projistotu :D :D ;D ;D return False # na kontrolní pozici nechávám nuličku by nám to tuhletu hodnotu jakoby přeskočilo # při dělání sumy cisla = [] cisla.append([1,2,3,4,5,6,7,8,0,9]) cisla.append([7,7,7,7,7,7,7,7,0,7]) cisla.append([1,2,4,8,6,2,4,8,0,2]) cisla.append([3,1,4,1,5,9,2,6,0,3]) cisla.append([1,1,2,3,5,8,3,1,0,1]) cisla.append([4,1,8,3,5,8,3,4,0,4]) for num in cisla: dopocitej_kontrolni_pozici(num) print(num) if validate_number(num): print('cislo je validni') else: print('cislo neni validni')
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.