Introduction:
Je collectionne des puzzles tortueux. La plupart des puzzles tortueux sont produits et vendus par des entreprises chinoises. La plupart des entreprises bien connues demandent la permission des créateurs de puzzles pour produire leurs conceptions et travailler ensemble vers un produit sur le marché. Dans ce cas, les concepteurs de puzzles sont bien sûr très heureux et fiers qu'un de leurs puzzles arrive sur le marché.
Cependant, il existe également des entreprises chinoises qui fabriquent des puzzles de contrefaçon. Ces imitations sont soit des conceptions utilisées sans l'autorisation du créateur d'origine, soit des copies de moindre qualité de puzzles déjà existants.
Défi:
Nous allons déterminer l'originalité des numéros qui sont «publiés» dans un ordre spécifique (de gauche à droite † ).
Étant donné une liste d'entiers, regroupez-les et sortez-les par leur originalité.
Comment l'originalité des nombres est-elle déterminée?
- Un numéro est-il un double exact d'un numéro antérieur? Groupe (le moins original), où le groupe suit, après tous les autres groupes.
- Un nombre est-il un double d'un nombre antérieur, mais son négatif à la place (c'est-à-dire que le nombre d'origine était , mais maintenant ; ou vice-versa)? Groupe .
- La valeur absolue du nombre peut-elle être formée en concaténant un ou plusieurs nombres absolus antérieurs, et ne fait-elle pas partie des groupes mentionnés précédemment ou ? Groupe , où est la quantité de nombres distincts utilisés dans la concaténation (et ).
- Le nombre ne correspond-il à aucun des groupes ci-dessus, est-il donc complètement unique jusqu'à présent? Groupe (le plus original), qui mène devant tous les autres groupes.
Cela peut sembler assez vague, voici donc un exemple étape par étape :
Liste d'entrées: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
est le premier nombre, qui est toujours original et dans le groupe . Sortie jusqu'à présent:[[34]]
9
est aussi original:[[34,9]]
4
est aussi original:[[34,9,4]]
-34
est le négatif du nombre précédent34
, il est donc dans le groupe :[[34,9,4],[-34]]
19
est original:[[34,9,4,19],[-34]]
-199
peut être formé par les deux nombres précédents19
et9
, donc c'est dans le groupe :[[34,9,4,19],[-199],[-34]]
34
est une copie exacte d'un nombre antérieur, il fait donc partie du groupe :[[34,9,4,19],[-199],[-34],[34]]
-213
est original:[[34,9,4,19,-213],[-199],[-34],[34]]
94
peut être formé par les deux nombres précédents9
et4
, donc c'est dans le groupe :[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
peut être formé par les quatre numéros antérieurs19
,34
,4
, et deux fois9
, il est donc dans le groupe :[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
est le négatif du nombre précédent-213
, il est donc dans le groupe :[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
est original:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
est original:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
peut être formé par les deux numéros précédents213
et4
(ou les trois numéros précédents21
,3
et4
, mais nous utilisons toujours le moins de chiffres concaténer pour déterminer l' originalité), il est donc dans le groupe :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
peut être formé par les deux nombres précédents quatre fois4
et9
, donc c'est dans le groupe :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
peut être formé par un seul nombre antérieur4
, répété deux fois, il fait donc partie du groupe :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Donc, pour l'entrée, [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
la sortie est [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
.
Règles du défi:
- Les E / S sont flexibles. Vous pouvez saisir une liste / un tableau / un flux d'entiers ou de chaînes, les saisir un par un via STDIN, etc. La sortie peut être une carte avec les groupes comme clé, une liste imbriquée comme exemple et des cas de test dans ce défi, imprimés saut de ligne séparé, etc.
- Vous êtes autorisé à prendre la liste d'entrée dans l'ordre inverse (peut-être utile pour les langues basées sur la pile). † Dans ce cas, la mention de gauche à droite est bien sûr de droite à gauche.
- Comme vous pouvez le voir à l'exemple entier
-2134
, nous regroupons toujours un nombre qui est une concaténation d'autres numéros avec aussi peu que possible (formé par213
et4
- deux nombres, et non par21
,3
et4
- trois numéros). - Comme vous pouvez le voir dans l'exemple pour entier
1934499
, vous pouvez utiliser un nombre antérieur (le9
dans ce cas) plusieurs fois (similaire à l'44449
utilisation de quatre4
s et de a9
dans l'exemple). Ils ne sont cependant comptés qu'une seule fois pour déterminer le groupe. - Vous n'êtes pas autorisé à avoir des listes internes vides dans la sortie pour les groupes vides. Ainsi, le scénario de test
[1,58,85,-8,5,8585,5885,518]
peut ne pas aboutir à la[[1,58,85,8,5],[518],[5885],[8585],[],[]]
place, où les groupes vides sont et , et l'exemple ci-dessus peut ne pas aboutir à la place, où le groupe vide est .X - 3[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
- L'ordre des groupes est strict (sauf si vous utilisez une carte, car les groupes peuvent alors être déduits des clés), mais l'ordre des numéros au sein d'un groupe peut être dans n'importe quel ordre. Ainsi, le
[34,9,4,19,-213,3,21]
groupe dans l'exemple ci-dessus peut également être ou .[21,3,-213,19,4,9,34]
[-213,4,34,19,9,21,3]
- Vous avez la garantie qu'il n'y aura jamais de numéros pouvant être formés par plus de neuf numéros précédents. Vous n'aurez donc jamais de groupes , et le plus grand nombre possible de groupes est 12:
- Vous pouvez supposer que les entiers seront de 32 bits au maximum, donc dans la plage
[−2147483648,2147483647]
.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
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]]
[1, 1111111111]
X + 1
Est-ce donc un groupe spécial pour les copies exactes, etX
un groupe pour d'autres nombres qui peuvent être formés à partir de copies d'un seul numéro, comme sa négation?