前書き:
ツイスティパズルを収集します。ほとんどのツイスティパズルは、中国企業によって製造および販売されています。ほとんどの有名企業は、パズルデザイナーにデザインを作成し、市場の製品に向けて協力する許可を求めています。この場合、パズルデザイナーはもちろん、パズルの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]]19344994つの以前の数値を用いて形成することができる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]]-213421342134[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]4444949[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]444[[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この場合)を複数回使用できます(例で444494つ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、否定などの単一の数字のコピーから形成できる他の数字のためのグループですか?