kombinování čísel, písmen v excelu - VYŘEŠENO
Moderátor: Moderátoři
-
dobrman
- Příspěvky: 1512
- Registrován: 12 srp 2012, 00:00
- Bydliště: J H
-
PotPalo
- Příspěvky: 6080
- Registrován: 13 kvě 2009, 00:00
- Bydliště: BA
-
jiri255
- Příspěvky: 168
- Registrován: 18 dub 2013, 00:00
...může být i varianta:
X, 1A, JHG, 2, PP, K2, 00 a toho třeba kombinace 6ti a tenhle vzorec řeší úplně všechno, jdu na tom provést zatěžkávací test
-
jiri255
- Příspěvky: 168
- Registrován: 18 dub 2013, 00:00
-
PotPalo
- Příspěvky: 6080
- Registrován: 13 kvě 2009, 00:00
- Bydliště: BA
-
LADER
- Příspěvky: 410
- Registrován: 01 dub 2013, 00:00
Kód: Vybrat vše
FN(P, S, K, M):= block([X, D: length(S), J:K],
if length(P)=M then ( Q: endcons(P, Q), return() ),
while J<=D do ( X: endcons(S[J], P), J: J+1, FN(X, S, J, M) )
)$
Kombinace(S,M):=block([Q:[],P:[]], FN(P, S, 1, M), Q)$Pokud by se někomu chtělo přepsat do basicu, pak:
Funkci Kombinace(S,M) je předají dvě proměnné:
S - je to vstupní pole dat (například [1,2,3,4,5])
M - je počet hodnot (například 4)
Funkce Kombinace(S,M) volá rekurzivní funkci FN(P, S, K, M) (ta pak volá sama sebe).
Funkce Kombinace(S,M) vrací výsledek v poli Q (poslední položka ve funkci)
No a důležité je vědět, že proměnné S, P, Q jsou pole.
Kód: Vybrat vše
P:[]Kód: Vybrat vše
D: length(S)Příkaz
Kód: Vybrat vše
Q: endcons(P, Q)Jinak je to stejné jako basic.
Výsledek bude vypadat takto:
Kód: Vybrat vše
Kombinace([1,2,3,4,5], 4);
matrix(
[1, 2, 3, 4],
[1, 2, 3, 5],
[1, 2, 4, 5],
[1, 3, 4, 5],
[2, 3, 4, 5]
)nebo třeba:
Kód: Vybrat vše
Kombinace([A,B,C,D,E,F,G], 5);
matrix(
[A, B, C, D, E],
[A, B, C, D, F],
[A, B, C, D, G],
[A, B, C, E, F],
[A, B, C, E, G],
[A, B, C, F, G],
[A, B, D, E, F],
[A, B, D, E, G],
[A, B, D, F, G],
[A, B, E, F, G],
[A, C, D, E, F],
[A, C, D, E, G],
[A, C, D, F, G],
[A, C, E, F, G],
[A, D, E, F, G],
[B, C, D, E, F],
[B, C, D, E, G],
[B, C, D, F, G],
[B, C, E, F, G],
[B, D, E, F, G],
[C, D, E, F, G]
)