Matematické Fórum

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

#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