Diskuse:Luhnův algoritmus
Přidat témaVzhled
Poslední komentář: před 4 lety od uživatele Mykhal v tématu „Odečítání devítky“
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 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)
- .. 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)
- 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)
- 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)
- Pripadne jeste (((2 * c) // 10) + (2 * c) % 10). --89.24.40.208 14. 11. 2020, 16:59 (CET)
- 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)
- Pripadne jeste (((2 * c) // 10) + (2 * c) % 10). --89.24.40.208 14. 11. 2020, 16:59 (CET)
- 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)
- 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)