前書き:
ツイスティパズルを収集します。ほとんどのツイスティパズルは、中国企業によって製造および販売されています。ほとんどの有名企業は、パズルデザイナーにデザインを作成し、市場の製品に向けて協力する許可を求めています。この場合、パズルデザイナーはもちろん、パズルの1つが市場に出回ったことを非常に喜んで誇りに思っています。
しかし、模造パズルを作成する中国企業もあります。これらの模造品は、元の作成者の許可なしに使用されたデザイン、または既存のパズルのまったく安価で低品質のコピーです。
チャレンジ:
特定の順序(左から右へ†)で「リリース」された番号の独創性を判断します。
整数のリストが与えられたら、それらをオリジナリティでグループ化して出力します。
数字の独創性はどのように決定されますか?
- 番号は以前の番号とまったく同じですか?グループ(オリジナルが最も少ない)。グループは、他のすべてのグループの後に続きます。
- 番号は、以前の番号の重複ですが、その負のではなく(つまり、元の数だったが、今、またはその逆)?グループ。
- 数値の絶対値は、1つ以上の以前の絶対数を連結することで形成できますか?また、前述のグループまたは一部ではありませんか?基、連結に使用される個別の数値の量である(そして)。
- 数は上記のグループのいずれにも適合しないので、これまでのところ完全に一意ですか?グループ(最もオリジナル)。これは他のすべてのグループの前にあります。
これはかなりあいまいに聞こえるかもしれないので、ここでステップバイステップの例:
入力リスト: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
は最初の番号で、常にオリジナルでグループます。これまでの出力:[[34]]
9
オリジナルも:[[34,9]]
4
オリジナルも:[[34,9,4]]
-34
は、以前の数値の負である34
ため、グループます。[[34,9,4],[-34]]
19
オリジナルです:[[34,9,4,19],[-34]]
-199
は、前の2つの数字19
と9
で形成できるため、グループます。[[34,9,4,19],[-199],[-34]]
34
は以前の番号の正確なコピーであるため、グループます。[[34,9,4,19],[-199],[-34],[34]]
-213
オリジナルです:[[34,9,4,19,-213],[-199],[-34],[34]]
94
は、以前の2つの数字9
と4
で形成できるため、グループます。[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
4つの以前の数値を用いて形成することができる19
、34
、4
、および2回9
、それがグループでありますので、:[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
は、以前の数値の負である-213
ため、グループます。[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
オリジナルです:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
オリジナルです:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
213
4
21
3
4
[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
4
9
[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
4
[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
したがって、入力の場合[34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
、出力は[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
です。
チャレンジルール:
- I / Oは柔軟です。整数または文字列のリスト/配列/ストリームとして入力したり、STDINなどを介して1つずつ入力したりできます。出力はグループをキーとしてマップ、ネストされたリストを例として、このチャレンジのテストケースを印刷できます改行区切りなど
- 入力リストを逆の順序で使用できます(スタックベースの言語に役立つ可能性があります)。†その場合、前述の左から右はもちろん右から左です。
- あなたは、整数のための例でもわかるように
-2134
、私たちは常にグループできるだけ少ないようで、他の数字の連結である数(によって形成された213
と4
-二つの数、およびしないことにより21
、3
および4
- 3つの数字)。 - integerの例で
1934499
わかるように、以前の数値(9
この場合)を複数回使用できます(例で44449
4つ4
のsとa を使用するのと同様9
)。ただし、グループを決定するために一度だけカウントされます。 [1,58,85,-8,5,8585,5885,518]
[[1,58,85,8,5],[518],[5885],[8585],[],[]]
[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
[34,9,4,19,-213,3,21]
[21,3,-213,19,4,9,34]
[-213,4,34,19,9,21,3]
- 整数は最大で32ビットであるため、範囲内であると想定できます
[−2147483648,2147483647]
。
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、非コードゴルフ言語で回答を投稿することを妨げないでください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 標準のルールがデフォルトのI / Oルールを使用した回答に適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
Input: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
Output: [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Input: [17,21,3,-317,317,2,3,117,14,-4,-232,-43,317]
Output: [[17,21,3,2,117,14,-4],[-317,-232,-43],[317],[3,317]]
Input: [2,4,8,10,12,-12,-102,488,10824]
Output: [[2,4,8,10,12],[10824],[-102,488],[-12]]
Input: [0,100,-100,10000,-100,1001000]
Output: [[0,100],[10000,1001000],[-100],[-100]]
Input: [1,58,85,-8,5,8585,5885,518]
Output: [[1,58,85,-8,5],[518],[5885],[8585]]
Input: [4,-4,44,5,54]
Output: [[4,5],[54],[44],[-4]]
X + 1
、正確なコピーのための特別なグループでありX
、否定などの単一の数字のコピーから形成できる他の数字のためのグループですか?