Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím vás, mám menší matematickoalgoritmický problém :D Představte si: Mám čísla 1 - 20 . Potřebuju je dávat postupně do dvojic, tak aby to splňovalo tyto podmínky:
Každé číslo s každým musí být jednou
Čísla by se měla nejlépe pravidelně střídat na levé a pravé pozici, tzn. nejdřív 1 a 2 a potom 3 a 1.
Lze na to udělat nějaký algoritmus, aby to šlo jednoduše udělat třeba forem? :D Už pár dní nemůžu na nic přijít. Zkoušel jsem si to psát ručně na tabuli a prostě to prohazovat, ale vždycky jsem se někde seknul. Jde to nějak, nebo to budu muset na tabuli zkoušet tak dlouho, dokud se mi to nepovede a pak to do toho kódu zapsat všechno ručně? :D
Díky
Offline
Zdravím,
píšeš každý s každým může být jednou. Dobře, to by šlo.
Ale nepíšeš jestli může být číslo samo se sebou. Pokud ne, pak by to šlo takto:
N:5;
for i:1 thru N-1 do (
for j:i+1 thru N do (
print(i,j)
)
);Za
si dosaď třeba 20.
Ale tento výpis bude seřazený vzestupně.
Pokud by si je chtěl střídat, aby třeba lichý výpis byl vzestupně a sudý sestupně, pak se tam musí vložit ještě pomocná podmínka, která bude otáčet pořadí:
N:5;
S:0;
for i:1 thru N-1 do (
for j:i+1 thru N do (
if evenp(S) then print(i,j) else print(j,i),
S: mod(S+1,2)
)
);Offline