3
Dobble / SpotItカードジェネレーター
前書き Dobble / SpotItは、最短時間でペアのカードに同じシンボルを見つけ、それを示し、次のペアに移動するカードゲームです。各カードには複数のシンボル(通常バージョンでは8)がありますが、各ペアのカード間で正確に1つのシンボルが共通しています。 ゲームの物理コピーの例: チャレンジ 単一のカードに一連の記号(単一のASCII文字)と記号の数を指定して、各カードの記号を含む出力リストカードを作成するプログラムを作成します。明らかに多くの同等の組み合わせがあります。プログラムは、指定された入力に対して最大量のカードを生成する組み合わせのいずれかを記述する必要があります。 それはコードゴルフですので、コードが短いほど良いです。 最も複雑なケースで、宇宙の熱死の前に計算が終了することも素晴らしいことです。 入力 function / stdinへの2つの引数(選択) それらの最初は、 'ABCDE'や['A'、 'B'、 'C'、 'D'、 'E']のようなシンボルのコレクションです-あなたが選択したフォーマット、文字列、セット、リスト、ストリーム、または選択した言語の慣用的なもの。文字は[A-Za-z0-9]のセットから与えられ、重複はありません(したがって、入力シンボルセットの最大サイズは62です)。これらは必ずしも順序付けられません( 6シンボルの場合にも「yX4i9A」を取得できます)。 2番目の引数は整数で、単一のカードのシンボルの量を示します。シンボルセットのサイズよりも<=になります。 出力 改行で区切られた複数の行を印刷します。各行には単一のカードのシンボルが含まれます。 例 ABC 2 >>>> AB BC AC または ABCDEFG 3 >>>> ABC BDE CEF BFG AEG CDG ADF または ABCDE 4 >>>> ABCD ヒント 作成されるカードの数は、個別のシンボルの量より多くすることはできません。多くの組み合わせでは、かなり小さくなります 問題の数学の側面で助けが必要な場合は、いくつかの数学の背景を読みたいかもしれません これは私の最初のコードゴルフチャレンジですので、フォーマット/スタイルに関する問題の可能性をご容赦ください-コメントで指摘した場合は、エラーを修正しようとします。