Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 26. 11. 2013 21:52

3kolik
Zelenáč
Příspěvky: 1
Škola: SPŠ Teplice, IT a Eko
Pozice: Student
Reputace:   
 

Algoritmus na prohazování čísel ve dvojicích

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

 

#2 26. 11. 2013 22:19

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 920
Reputace:   63 
 

Re: Algoritmus na prohazování čísel ve dvojicích

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:

Code:

N:5;
for i:1 thru N-1 do (
    for j:i+1 thru N do (
        print(i,j) 
    )
);

Za $N$ 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í:

Code:

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) 
    )
);

LibreOffice Verze: 25.8.4.2, Maxima 5.49.0 (SBCL)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson