私が取り組んでいる大規模なプロジェクトの一部として、このコードサンプルをSwift Playgroundsにコンセプトの概念として組み込みました。私がする必要があるのは、一連のオプション(optionsArrayまたはtestArrayで表される)を渡すことです。ここで、各intは利用可能なオプションの数です。これらのオプションは、最終的に3億以上の別々のPDFとHTMLファイルに組み込まれます。コードは現在動作しており、私が望む可能性の巨大なリストを出しています。再帰の方が良いでしょうか?
私の質問は次のとおりです。このような状況を処理するためのより良いアプローチはありますか?よりエレガントで効率的なものがありますか?これはではないアプリや何かにライブで実行されるものは、コマンドラインから実行し、必要な時間をすべて取るだろうが、パフォーマンスや安定性のためのより良いアプローチがあれば、私はすべての耳です。
私が知っていること:配列から0の値を処理することはできません。配列は定数なので、偶然には発生しません。コードが行を処理する方法は物事を扱いますが、0は無意味な値です。各要素は使用可能なオプションの数を表します。したがって、2は基本的にブール値です.1はfalseのみです。したがって、将来の拡張のためにプレースホルダ要素が必要だった場合、値は1になり、出力には0として表示されます。
最終製品は、出力としてコンソールにテキストをバーフルで表示するだけでなく、アレイに基づいてpermutationEnding()
機能でファイルを書き込みます。
let optionsArray: [Int] = [7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2]
let testArray: [Int] = [7,2,3,2]
var currentOptions: [Int] = []
var outputString: String = ""
func buildPermutations(array: Array<Int>) {
currentOptions.removeAll()
permutationRecursion(array: array, index: 0)
}
func permutationRecursion(array: Array<Int>, index: Int) {
for i in 1 ... array[index] {
currentOptions.append(Int(i-1))
if array.count > (index + 1) {
permutationRecursion(array: array, index: index + 1)
} else {
permutationEnding()
}
currentOptions.removeLast()
}
}
func permutationEnding() {
for i in 1 ... currentOptions.count { // Output Elements
outputString += String(currentOptions[i-1])
}
outputString += "\n" // Goes after output elements closing bracket.
}
// buildPermutations(array: optionsArray)
buildPermutations(array: testArray)
print(outputString)
考えられますか?
あなたは何をしようとしていますか?いくつかの定義済みオプションを使用して順列のリストを作成しますか? –
本質的に、はい。私は、人々がインタビュープロセスを通過できるようにするエンタープライズアプリケーションを持っており、回答の一部は、より多くの情報をトリガして、動的に生成されるPDFに入れられるようにします。私が働くビジネスの性質上、サーバー上でカスタムコード(PHPなど)を実行する監査リスクは圧迫され、JavaScriptを使用するクライアント側のPDF生成オプションは最適ではありません。私は、アプリケーションに似たWebバージョンでもどちらも使用しない解決策を見つけるように頼まれました。 –
それで、私はHTMLテンプレートを(私が既存のアプリケーションと同じように)このようなものに送り出し、プレマイドPDFとしてすべての可能性を出す必要があります。最終的には、デシジョンツリー全体をHTMLとして構築しなければならないため、アプリケーションのように機能します。 Theeの出力は50101010011 ... etc.pdfのようになります。ばかばかしいことですが、サーバーサイドの技術を使わずにあらゆるオプションを用意することができます。規制当局は人生を変なものにすることができます。 –