Все сочетания по 3 буквы из n
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | * Получить все сочетания (с возвращением) по 3 буквы из N букв. * Автор: Raynald Levesque, 02.06.2002. SET MXLOOPS=40. SET MPRINT=yes. DATA LIST FREE /nbers. BEGIN DATA 1 END DATA. LIST. * Этот макрос находит все сочетания (с возвращением) по 3 буквы из n (где n > 3). *////////////////////////////////. DEFINE !doit (!POS=!CMDEND) !LET !x=!NULL STRING answer1 TO answer3 answer (A8). !DO !var !IN (!1) !LET !x=!CONCAT(!x,!BLANKS(1)) STRING !CONCAT('V',!LENGTH(!x)) (A8). COMPUTE !CONCAT('V',!LENGTH(!x))=!QUOTE(!var). !DOEND VECTOR vec=v1 TO !CONCAT('V',!LENGTH(!x)). LOOP #cnt1=1 TO !LENGTH(!x). COMPUTE answer1=vec(#cnt1). LOOP #cnt2=#cnt1 TO !LENGTH(!x). COMPUTE answer2=vec(#cnt2). LOOP #cnt3=#cnt2 TO !LENGTH(!x). COMPUTE answer3=vec(#cnt3). COMPUTE answer=CONCAT(RTRIM(answer1),RTRIM(answer2),RTRIM(answer3)). XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=answer transn. END LOOP. END LOOP. END LOOP. EXECUTE. GET FILE='c:\\temp\\temp.sav'. !ENDDEFINE. *////////////////////////////////. !doit A B C G K L P S T V X Y. |