Fórum Root.cz

Ostatní => Odkladiště => Téma založeno: David98 17. 06. 2016, 21:30:48

Název: Střední škola - matematický příklad
Přispěvatel: David98 17. 06. 2016, 21:30:48
Kolik je mezi lety 2001 až 3000 letopočtů dělitelných třemi. Radši se ptám, ale myslím si že stačí rozdíl vydělit třemi.
Název: Re:Střední škola - matematický příklad
Přispěvatel: source 17. 06. 2016, 21:49:04
Možná ano, ale nebral bych to jako jistotu. Kolik je čísel dělitelných třemi např. mezi 3 a 9? (9-3)/3=2, ale to je špatná odpověď.
Název: Re:Střední škola - matematický příklad
Přispěvatel: martin 17. 06. 2016, 21:52:35
Není to typický příklad, jako je 5 pouličních lamp, kolik je mezi nimi mezer? Vždy si to raději maluju... :)
Název: Re:Střední škola - matematický příklad
Přispěvatel: Jenda 17. 06. 2016, 22:11:41
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Název: Re:Střední škola - matematický příklad
Přispěvatel: . 18. 06. 2016, 00:35:47
Už jenom pouhý letmý pohled na zadání by tě měl utvrdit v tom, že to nebude tak jednoduché. Protože pak by jich musel být stejný počet mezi lety 1001 a 2000 a mezi lety 2001 a 3000, což zjevně není (v případě, že se zahrnují i krajní meze, což z tvého zadání jasně nevyplývá).
Název: Re:Střední škola - matematický příklad
Přispěvatel: . 18. 06. 2016, 00:41:46
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Název: Re:Střední škola - matematický příklad
Přispěvatel: Fantomas 18. 06. 2016, 00:50:40
Možná ano, ale nebral bych to jako jistotu. Kolik je čísel dělitelných třemi např. mezi 3 a 9? (9-3)/3=2, ale to je špatná odpověď.
Mas recht, mezi 3 a 9 je pouze 6.
Název: Re:Střední škola - matematický příklad
Přispěvatel: source 18. 06. 2016, 08:10:44
Osobně bych to řešil kombinatorikou. Dělitelnost třemi je právě tehdy, je-li ciferný součet dělitelný třemi. Stačí tak najít kombinace dělitelné třemi a ty permutovat v patřičných mezích.
Název: Re:Střední škola - matematický příklad
Přispěvatel: Radovan. 18. 06. 2016, 08:33:28
Kolik je mezi lety 2001 až 3000...
Takže v letech 2002..2999? A vydělit třemi to určitě nestačí.
Název: Re:Střední škola - matematický příklad
Přispěvatel: gogo 18. 06. 2016, 08:54:59
podobny
https://projecteuler.net/problem=1 (https://projecteuler.net/problem=1)

akorat u tohodle odecist zacatek, zkontrolovat/upravit krajni meze, vydelit 3, soucet ciselne rady. trivos ;)
Název: Re:Střední škola - matematický příklad
Přispěvatel: Jakub Galgonek 18. 06. 2016, 08:57:04
A vydělit třemi to určitě nestačí.

Protože čísla 3000 a 2001 jsou dělitelná třemi, stačí jejich rozdíl vydělit třemi a odečíst jedničku: (3000 - 2001) / 3 - 1
Název: Re:Střední škola - matematický příklad
Přispěvatel: J. Ghibulo 18. 06. 2016, 08:57:18
Jde o obyčejnou aritmetickou posloupnost: a1=2004, d=3, an=2997. Snadno odvoditelný vzoreček an=a1+(n-1).d vás dostane po dosazení 2997 = 2004 + (n-1).3 do kýženého uspokojení... n=(2997-2004)/3 + 1.= 332 ;-)
Název: Re:Střední škola - matematický příklad
Přispěvatel: Jenda 18. 06. 2016, 15:37:50
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.

Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 15:53:52
Aritmetické posloupnosti se dají pěkně zapisovat v perlu 6.
Kód: [Vybrat]
perl6 -e 'say +(2004, 2007 ... 2997)'
perl6 -e 'say +(2004,  * + 3 ... 2997)'
perl6 -e 'say +(2004,  2007  ...^ 3000)'
Název: Re:Střední škola - matematický příklad
Přispěvatel: ByCzech 18. 06. 2016, 19:39:34
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.

Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.

To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje  :o
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 20:03:43
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.

Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.

To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje  :o

Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.
Název: Re:Střední škola - matematický příklad
Přispěvatel: ByCzech 18. 06. 2016, 20:18:30
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.

Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.

To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje  :o

Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.

Já nic o tom, že to je špatné naříkal. Já psal, že to je neuspokojivé. Chtělo by to číst pořádně ;)
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 20:32:53
for i in `seq 2002 2999`; do echo $(( $i % 3 )); done|grep 0 | wc -l
Řešení hrubou silou je v dnešní době často nejefektivnější, postrádá ale kouzlo a na konci jaksi chybí pocit uspokojení z toho, že jsem na to přišel.
Já mám většinou pocit uspokojení z toho, že celý program funguje, a moc neřeším, jak (ne)elegantním způsobem jsem k tomu došel.

Samozřejmě kdyby těch čísel nebylo tisíc, ale miliarda, nebo by se to počítalo opakovaně, tak se nad tím taky zamyslím a vyřeším to „správně“. Když ale jednorázově něco takového potřebuju, tak je prostě nejrychlejší napsat za necelou minutu ten oneliner.

To je jako když děcka v první třídě počítají na prstech. To mě moc neuspokojuje  :o

Tak třeba ruční počítání příkladů z lineární algebry ve škole byla otrava. S použitím počítače by ten předmět byl mnohem zajímavější. Na ověřování výsledků počítačem není nic špatného. Teorii to nenahradí, ale někdy to může přispět k lepšímu pochopení.

Já nic o tom, že to je špatné naříkal. Já psal, že to je neuspokojivé. Chtělo by to číst pořádně ;)

Ok, omlouvám se. Každého uspokojuje něco jiného.
Název: Re:Střední škola - matematický příklad
Přispěvatel: Martin Dimov 18. 06. 2016, 21:59:19
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3

MOD je modulo (zbytek po dělení).

Edit: posunuto A o jedna, aby to bylo jako interval uzavřený
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 22:25:47
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3

MOD je modulo (zbytek po dělení).

Edit: posunuto A o jedna, aby to bylo jako interval uzavřený

to není správně

(b -1) / 3 - a / 3

kde / je celočíselné dělení
mi přijde jednodušší
Název: Re:Střední škola - matematický příklad
Přispěvatel: Martin Dimov 18. 06. 2016, 22:37:39
Pravdu mas, jdu na to asi prilis slozite a chova se to navic jako (A,B>
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 22:38:48
Myslím, že by to mohlo být něco jako:
(B -(A-1) +MOD(A-1, 3) -MOD(B, 3))/3

MOD je modulo (zbytek po dělení).

Edit: posunuto A o jedna, aby to bylo jako interval uzavřený

pokud se počítají jen čísla mezi, bez těch okrajových čísel tak by to ten vzorec měl být

((B - 1) - A +MOD(A, 3) -MOD(B - 1, 3))/3
Název: Re:Střední škola - matematický příklad
Přispěvatel: gl 18. 06. 2016, 22:42:24
Pravdu mas, jdu na to asi prilis slozite a chova se to navic jako (A,B>

Jdeš na to správně. Ten tvůj vzorec funguje i bez celočíselného dělení. Okrajové body jsou z toho zadání nejasné.