Nejste přihlášen/a.
Dobrý den,
mám za úkol naprogramovat kod, který se skládá ze vstupu (listu, který obsahuje čísla - 16, 32, 64, ...) a funce, která musí umět spočítat ciferný součet každho čísla v tom listu zvlášt, nevím jak na to zkouším mnoho věcí, ale žídná se nezdá jako ta správná. Tak bych se chtěl zeptat zda je někdo, kdo by byl ochoten poradit. Děkuji moc
v ruby je to primitivní funkcionální oneliner.
a=[13,33,40] ;
a.map{ |i|i.to_s.split("").inject{|a,b| a.to_i+b.to_i } }
=> [4, 6, 4]
V podstatě největší opruz je čísla převést na string, rozdělit na číslice, ty sečíst(ale nejprve opět převést na číslo)
Druhý způsob je to udělat čistě matematicky, kdy číslice rekuzivím dělením deseti
b=814
temp=b;sum=0;
while( del>9 ) do
del, zbytek=del.divmod(10);sum+=zbytek;
end
v pythonu na funkcionální přístup se budou hodit comprehension listy něco jako [iterator^2 for iterator in pole]
Ahoj, tady máš řešení pomocí list comprehension:
seznam = [16, 32, 64, 1567]
# převést na string:
seznam2 = [str(x) for x in seznam]
print(seznam2) # [16, 32, 64, 1567]
# oddělit čísla:
seznam3 = [[x for x in cislo] for cislo in seznam2]
print(seznam3) # [[1, 6], [3, 2], [6, 4], [1, 5, 6, 7]]
# převést na integer:
seznam4 = [[int(x) for x in podseznam] for podseznam in seznam3]
print(seznam4) # [[1, 6], [3, 2], [6, 4], [1, 5, 6, 7]]
# sečíst:
seznam5 = [sum(x) for x in seznam4]
print(seznam5) # [7, 5, 10, 19]
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.