順列を作成するプログラムです。時間がかかるので気を付けて下さい。 (AthlonXP1700, Pentium D 3.0GHzで30分程かかります。
Permutation.hnk
「順列 を 「(リス) ;; リストが空の場合と長さが1のときの処理 「もし (リス 空?) ならば '() 「もし ((リス 長さ) 1.0 =) ならば 「リス リスト」 ;; リストのリストを返さなければならない。 ;; ここから本番 「ループ ((頭 '()) (残り リス) (完成品 '())) 「もし (残り が 空?) ならば 完成品 「((残り の カー) と 頭 を コンス) ;; 次の頭 (残り の クダー) ;; 次の残り ((((lst) ((残り の カー) lst コンス) 仕事) ((頭 に (残り の クダー) を 追加) の 順列) マップ) を 完成品 に 追加) ;; 次の完成品 ループ」」 を 行います」」」 の 仕事」 と 定義 します」 ;; とりあえず結果をpermに束縛 「perm を 「'(1 2 3 4 5 6 7 8) の 順列」 と 定義 します」 ;; リストを一つづつ表示 「「(リス) 「リス 表示」 「改行」 仕事」 perm マップ」 「改行」 「「perm の 長さ」 を 表示 します」