abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 14:33 | Nová verze

The Document Foundation oznámila na svém blogu vydání nové verze 7.0 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) nebo také na Youtube a PeerTube.

Ladislav Hagara | Komentářů: 0
dnes 13:33 | Nová verze

Byla vydána nová stabilní verze 3.2 (3.2.1967.41) webového prohlížeče Vivaldi (Wikipedie). Přehled novinek v příspěvku na blogu. Zdůraznit lze vylepšený obraz v obraze. Nejnovější Vivaldi je postaven na Chromiu 84.0.4147.108.

Ladislav Hagara | Komentářů: 3
dnes 01:11 | Nová verze

Wayfire, kompozitní správce oken inspirovaný Compizem běžící nad Waylandem, byl vydán ve verzi 0.5.0. Zdrojové kódy jsou k dispozici na GitHubu. Videoukázky na YouTube.

Ladislav Hagara | Komentářů: 2
včera 12:22 | Komunita

Neziskové technologické konsorcium Linux Foundation rozšířilo seznam svých oficiálních projektů. Nejnovějším projektem je Open Source Security Foundation (OpenSSF), jehož cílem je zvýšit bezpečnost open source softwaru. Více například v příspěvcích na blozích GitHubu nebo Microsoftu.

Ladislav Hagara | Komentářů: 3
včera 11:44 | Nová verze

Byla vydána verze 3.1 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 01:11 | Nová verze

Svobodná federalizovaná sociální síť Mastodon byla aktualizována. Vydání 3.2 mj. přepracovává audio přehrávač, zlepšuje zabezpečení přihlášení aj.

Fluttershy, yay! | Komentářů: 0
3.8. 14:00 | Komunita

Byla vydána verze 1.5.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace. Na YouTube jsou ke zhlédnutí záznamy přednášek z konference JuliaCon 2020 konané online minulý týden.

Ladislav Hagara | Komentářů: 0
3.8. 13:33 | IT novinky

Sdružení CZ.NIC informuje, že pro domény s koncovkou .CZ, jejichž platnost nebyla včas prodloužena, platí opět ochranná lhůta 60 dnů (30 dnů je doména plně funkční, 30 dnů je vyřazena z DNS – není dostupná). Po více než čtyřech měsících tak končí zvláštní režim, kdy byla funkčnost nezaplacených domén dočasně prodloužena ze 30 na 60 dnů z důvodu mimořádné situace související s onemocněním COVID-19.

Ladislav Hagara | Komentářů: 23
3.8. 09:00 | Nová verze

Byla vydána nová verze linuxové distribuce BunsenLabs Linux s předkonfigurovaným správcem oken Openbox. Její název je Lithium a založena je na Debianu 10 Buster. Přehled novinek v poznámkách k vydání. BunsenLabs Linux je nástupcem dnes již nevyvíjené linuxové distribuce CrunchBang (zkráceně #!).

Ladislav Hagara | Komentářů: 0
3.8. 08:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.7 oznámil Linus Torvalds vydání Linuxu 5.8 (LKML). Přehled nových vlastností a vylepšení na stránce Linux Kernel Newbies.

Ladislav Hagara | Komentářů: 1
Dokážete si představit, že by váš hlavní počítač (desktop, notebook) byl v současné době založen na architektuře jiné než x86 (x86_64)? Například ARM, POWER, RISC-V,…
 (9%)
 (12%)
 (57%)
 (16%)
 (7%)
Celkem 138 hlasů
 Komentářů: 11, poslední dnes 08:59
Rozcestník

Číslo účtu na prianie

31.7. 23:23 | Přečteno: 605× | Linux | poslední úprava: 31.7. 23:27

Niektoré banky umožňujú voľbu vlastného čísla účtu, lenže nie každé číslo bude fungovať, tak som spravil malý skript, ktorý takéto čísla vyhľadá.

Číslo účtu má 10 cifier a splňovať formát "modulo 11", čiže počíta sa tak, že každá cifra sa vynásobí jej váhou: 2^n mod 11, tie sčítame a vysledok musí byť deliteľný 11. Tieto pravidlá fungujú minimálne v CZ a SK

Chcel som nejaké jednoducho zapamatateľné čísla účtov a tak som spravil v hadovi skript, ktorý vyhľadá všetky čísla podľa zadaných pravidiel:

import sys
import string


WEIGHT = (6, 3, 7, 9, 10, 5, 8, 4, 2, 1)


def get_digits(number):
    return [int(digit) for digit in number]


def validate_number(number):
    chk = sum([w * i for w, i in zip(WEIGHT, get_digits(number))])
    return chk % 11 == 0


def search_numbers(number):
    if len(number) != 10:
        return None
    letters = set()
    for letter in string.ascii_lowercase:
        if letter in number:
            letters.add(letter)
    numbers = []
    for i in range(10 ** len(letters)):
        tested = number
        for letter, num in zip(letters, get_digits(f'{i:0{len(letters)}d}')):
            tested = tested.replace(letter, str(num))
        if validate_number(tested):
            numbers.append(tested)
    return sorted(numbers)


def _main(number):
    numbers = search_numbers(number)
    if numbers is None:
        print("account number must have 10 characters")
    for num in numbers:
        print(num)


if __name__ == '__main__':
    _main(sys.argv[1])
vstup môže byť napríklad 1234abcdaa a to bude za pismenka doplňovať rôzne kombinácie a vypíše ktoré sú vyhovujú, napr:
$ python3 search.py 1234aaabbb
1234000999
1234111111
1234222444
1234333777
1234555222
1234666555
1234777888
1234888000
1234999333

$ python3 search.py 00aaaabbbb
0000000000
0011116666
0022221111
0033337777
0044442222
0055558888
0066663333
0077779999
0088884444

$ python3 number_search.py 00abababab
0000000000
0019191919
0027272727
0035353535
0043434343
0051515151
0078787878
0086868686
0094949494

takto sa dajú nájsť rôzne kombinácie ľahko zapamatateľných čísel.        

Hodnocení: 86 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

1.8. 15:40 Bhezret | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
Škoda toho Pythonu, v Javě by to bylo rychlejší a bezpečnější, jinak pěkná práce.
1.8. 16:01 rajcze | skóre: 6 | blog: rajcze | kus od Brna
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
Asi nemel pul tera RAM na to aby to v Jave spustil :)
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
1.8. 16:48 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
+1 (případně v Rustu)
1.8. 17:06 hm
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
+1 Javascript je budoucnost.
vlk avatar 2.8. 10:00 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
napis si to v com chces, program som mal hotovy ani ne za 10 minut (preto aj tak vyzera), predpokladam ze v Jave to das za 3 minuty.
You don't exist, Go away !
1.8. 16:49 bugme | skóre: 16 | blog: bugme
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
Taky si můžeš vygenerovat bitcoinovou nebo třeba torovou adresu...
3.8. 10:55 pavell
Rozbalit Rozbalit vše Re: Číslo účtu na prianie
Proč to nedáš na gist?
Gréta avatar 3.8. 18:09 Gréta | skóre: 25 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: Číslo účtu na prianie

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')
Everyone dies but not everyone lives - William Wallace ✊ ⓔⓐⓣ ⓣⓗⓔ ⓡⓘⓒⓗNo lives matter!!!!

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.