Problem 24
コンテンツ
A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
012 021 102 120 201 210
What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
とりあえず書いた。が、すごい汚い。
import Data.List digit="0123456789" lexPerm =[[a,b,c,d,e,f,g,h,i,j]|a<-digit,b<-digit[a],c<-digit[a,b], d<-digit [a,b,c],e<-digit[a,b,c,d],f<-digit[a,b,c,d,e], g<-digit[a,b,c,d,e,f],h<-digit[a,b,c,d,e,f,g], i<-digit[a,b,c,d,e,f,g,h],j<-digit[a,b,c,d,e,f,g,h,i]] main = print$lexPerm!!999999
同じことを再帰を用いて
import Data.List perm [] = [[]] perm l = [a:b|a<-l,b<-perm$delete a l] main =print $ perm "0123456789"!! 999999
こっちのほうが断然いいな。
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)