설명
세트의 모든 순열을 갖는 것이 편리할 수 있습니다. Julius Davies가 작곡한 귀여운 애플리케이션이 하나 있습니다: " 내 고객 중 한 명은 음악 작곡가(앙드레 코미에)인데, 그는 음표를 선택하는 데 도움이 되도록 순열 계산기를 작성해달라고 나에게 요청했습니다. 멜로디 라인과 코드용. " 이 모델에서는 명시적인 슬롯 구문을 사용하여 순열을 생성합니다. 숫자를 입력하고 유사한 출력을 생성합니다. 참고로 우리는 제거하지 않습니다 중복 순열. 키워드: 슬롯 언어 특징, 순열 생성, 음악 작곡
소형 모델 유형 :슬롯
카테고리 : 슬롯 모델 라이브러리
메인 파일 : pmelody.gms
$title 순열이 있는 멜로디 라인 및 코드에 대한 음표 선택 (PMELODY,SEQ=375)
$onText
세트의 모든 순열을 갖는 것이 편리할 수 있습니다.
Julius Davies가 작곡한 귀여운 애플리케이션이 하나 있습니다:
"
내 고객 중 한 명은 음악 작곡가(앙드레 코미에)인데, 그는
음표를 선택하는 데 도움이 되도록 순열 계산기를 작성해달라고 나에게 요청했습니다.
멜로디 라인과 코드용.
"
이 모델에서는 명시적인 슬롯 구문을 사용하여 순열을 생성합니다.
숫자를 입력하고 유사한 출력을 생성합니다. 참고로 우리는 제거하지 않습니다
중복 순열.
키워드: 슬롯 언어 특징, 순열 생성, 음악 작곡
$offText
세트
n '피치 클래스' / C, 'C#', D, 'D#', E, F, 'F#', G, 'G#', A, 'A#', B /
ni(n) '초기 음표' / C /
i '반음 점프' / i1*i4 /;
$eval pmax 사실(카드(i))
p '순열 지수' 설정 / p1*p%pmax% /;
매개변수
$onEps
j(i) '실제 반음표 점프' / i1 1, i2 1, i3 0, i4 5 /
$offEps
m(p,i) '점프 순열'
mm(p,i) '누적 점프';
옵션 m > j;
mm(p,i) = 0;
loop(i, mm(p,i) = mm(p,i-1) + m(p,i));
np(p,i,n) 'i번째 점프에 대한 메모'를 설정합니다.
loop(ni(n), np(p,i,n + mm(p,i)) = yes);
옵션 np:1:1:1;
디스플레이 np;
파일 f / perm.txt /;
put f '* 반음 점프의 순열';
루프(p,
넣어 / 'C';
loop(np(p,i,n), put n.tl:3:0;);
loop(i, m(p,i):2:0);
);