Diskuse:Luhnův algoritmus

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání

Odečítání devítky[editovat zdroj]

V některých implementacích se vyskytuje odečítání devítky, jak tu (přímo v článku) kolega @89.24.40.208:zmínil. Po bližším zkoumání je zřejmé, že jde o trik, jak provést ciferný součet dvojnásobku cifry, pokud vyšel dvouciferný. Na první pohled je to zřejmé asi jen géniům, tuhle fintu v našem příkladu nepoužíváme. (Viz také 2. věta Python zenu). —Mykhal (diskuse) 13. 11. 2020, 19:11 (CET)[odpovědět]

.. nebude od věci trik v případném dalším příkladu použít (ciferný součet přes konverzi na řetězec a zpátky na číslice není optimální, že), ale určitě s vysvětlujícím komentářem. —Mykhal (diskuse) 13. 11. 2020, 19:49 (CET)[odpovědět]
Pro své potřeby přítele železnice (ne úplného šotouše) mám implementaci v Excelu, kde používám odečtení devítky. Jistěže je to jednodušší (přišel jsem na to sám, asi jsem geniální :-) ). Myslím, že jsem zkoušel i další možnost, prosté tabulkové přiřazení: "devítku, nulu až čtyřku ponechej, z pětky udělej jedničku, ze šestky trojku, ...". --Uacs451 (diskuse) 14. 11. 2020, 08:25 (CET)[odpovědět]
Diky, uz jsem to pochopil, jen bych se chtel zeptat jestli by to neslo zapsat srozumitelneji?
Me navrhy jsou dva:
sum([x for x in divmod(2 * c, 10)])
nebo
[((2 * c) // 10), (2 * c) % 10]
V kazdem pripade je ta vase verze rozhodne peknejsi nez ta pythonovska verze v anglickem jazyce, se divim ze tam nedali neco podobneho tomu co je v javascriptu.
Hlavne jsem se ptal na tu devitku, protoze jsem chtel videt jak vypada to celkove cislo, pred konecnym krokem v returnu, protoze jsem to do teto doby v nekterych pripadech asi spatne zpracovaval a tak jsem hledal cim to je. --89.24.40.208 14. 11. 2020, 16:58 (CET)[odpovědět]
Pripadne jeste (((2 * c) // 10) + (2 * c) % 10). --89.24.40.208 14. 11. 2020, 16:59 (CET)[odpovědět]
Tak určitě, ale nepřipadá mi to nutně srozumitelnější. Jak to máme teď je relativně krátce zapsaný generický ciferný součet, ale není to myšleno pro obšlehnutí ^C^V. —Mykhal (diskuse) 18. 11. 2020, 14:24 (CET)[odpovědět]
Oprava, psal jsem to moc lehkým perem, jedničce až čtyřce se samozřejmě přiřadí jejich dvojnásobky. --Uacs451 (diskuse) 16. 11. 2020, 17:31 (CET)[odpovědět]