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