Wprowadzenie:
Zbieram kręte puzzle. Większość krętych łamigłówek jest produkowanych i sprzedawanych przez chińskie firmy. Większość znanych firm prosi projektantów puzzli o pozwolenie na opracowanie ich projektów i współpracę nad produktem na rynku. W tym przypadku projektanci puzzli są oczywiście bardzo szczęśliwi i dumni, że jedna z ich łamigłówek trafiła na rynek.
Są jednak także chińskie firmy, które układają puzzle. Te podróbki są albo projektami używanymi bez zgody oryginalnego twórcy, albo są po prostu tańszymi kopiami niższej jakości już istniejących łamigłówek.
Wyzwanie:
Zamierzamy ustalić oryginalność liczb, które są „wypuszczane” w określonej kolejności (od lewej do prawej † ).
Biorąc pod uwagę listę liczb całkowitych, pogrupuj i wyślij je według ich oryginalności.
Jak określa się oryginalność liczb?
- Czy liczba jest dokładnym duplikatem wcześniejszej liczby? Grupa (najmniej oryginalna), po której następuje grupa , po wszystkich pozostałych grupach.
- Czy liczba jest duplikatem wcześniejszej liczby, ale zamiast tego jest ujemna (tzn. Pierwotna liczba to , ale teraz ; lub odwrotnie)? Grupa .
- Czy wartość bezwzględna liczby może być utworzona przez połączenie jednej lub więcej wcześniejszych liczb bezwzględnych i czy nie jest ona częścią wcześniej wymienionych grup lub ? Grupa , gdzie jest liczbą wyraźnych liczb użytych w konkatenacji (i ).
- Czy liczba nie mieści się w żadnej z powyższych grup, więc jest jak dotąd całkowicie unikalna? Grupa (najbardziej oryginalna), która prowadzi przed wszystkimi innymi grupami.
Może to zabrzmieć dość ogólnikowo, więc oto przykład krok po kroku :
Lista wejściowa: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
to pierwszy numer, który jest zawsze oryginalny i należy do grupy . Dotychczasowe wyniki:[[34]]
9
jest również oryginalny:[[34,9]]
4
jest również oryginalny:[[34,9,4]]
-34
jest ujemną liczbą wcześniejszą34
, więc należy do grupy :[[34,9,4],[-34]]
19
jest oryginalny:[[34,9,4,19],[-34]]
-199
mogą być utworzone przez dwie wcześniejsze liczby,19
a9
więc należy do grupy :[[34,9,4,19],[-199],[-34]]
34
jest dokładną kopią wcześniejszego numeru, więc należy do grupy :[[34,9,4,19],[-199],[-34],[34]]
-213
jest oryginalny:[[34,9,4,19,-213],[-199],[-34],[34]]
94
mogą być utworzone przez dwie wcześniejsze liczby,9
a4
więc należy do grupy :[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
może być utworzone przez cztery wcześniej liczby19
,34
,4
i dwa razy9
, to jest w grupie :[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
jest ujemną liczbą wcześniejszą-213
, więc należy do grupy :[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
jest oryginalny:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
jest oryginalny:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
mogą być utworzone przez dwie wcześniejsze liczby213
i4
(lub trzy wcześniejsze liczby21
,3
i4
, ale zawsze używamy najmniejszej liczby liczb łączących w celu ustalenia oryginalności), więc znajduje się w grupie :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
mogą być czterokrotnie utworzone przez dwie wcześniejsze liczby,4
a9
więc należy do grupy :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
może być utworzony przez jedną wcześniejszą liczbę4
, powtórzoną dwa razy, więc jest w grupie :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Tak więc dla danych [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
wyjściowych jest to [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
.
Zasady konkursu:
- I / O jest elastyczny. Możesz wprowadzić jako listę / tablicę / strumień liczb całkowitych lub ciągów, wprowadzić je jeden po drugim poprzez STDIN itp. Wyjściem może być mapa z grupami jako kluczem, zagnieżdżona lista jako przykład i przypadki testowe w tym wyzwaniu, wydrukowane znak nowej linii oddzielony itp.
- Możesz wziąć listę wprowadzania w odwrotnej kolejności (być może przydatne w przypadku języków opartych na stosie). † W takim przypadku wspomniany od lewej do prawej jest oczywiście od prawej do lewej.
- Jak widać na przykład na liczbę całkowitą
-2134
, zawsze grupa numer, który jest połączeniem inne numery z tak mało, jak to możliwe (tworzone przez213
i4
- dwa numery, a nie21
,3
oraz4
- trzy numery). - Jak widać na przykładzie liczby całkowitej
1934499
, możesz użyć wcześniejszej liczby (9
w tym przypadku) wiele razy (podobnie w przypadku44449
użycia czterech4
si9
w tym przykładzie). Są one jednak liczone tylko raz w celu ustalenia grupy. - Nie możesz mieć pustych wewnętrznych list w wynikach dla pustych grup. Zatem przypadek testowy
[1,58,85,-8,5,8585,5885,518]
może nie dać wyniku[[1,58,85,8,5],[518],[5885],[8585],[],[]]
, gdzie puste grupy to i , a powyższy przykład może nie dać wyniku[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
, gdy pusta grupa to . - Kolejność grup jest ścisła (chyba że korzystasz z mapy, ponieważ grupy można następnie odjąć od kluczy), ale kolejność liczb w grupie może być w dowolnej kolejności. Tak więc
[34,9,4,19,-213,3,21]
dla grupy w powyższym przykładzie może być również[21,3,-213,19,4,9,34]
lub[-213,4,34,19,9,21,3]
. - Masz gwarancję, że nigdy nie będzie żadnych liczb, które mogłyby być utworzone z więcej niż dziewięciu poprzednich liczb. Więc nigdy nie będzie miał żadnego grup, a największą ilość grup możliwe jest 12:
- Możesz założyć, że liczby całkowite będą miały maksymalnie 32 bity, więc w tym zakresie
[−2147483648,2147483647]
.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
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
jest więc specjalna grupa dla dokładnych kopii iX
czy grupa dla innych liczb, które mogą być utworzone z kopii pojedynczej liczby, na przykład jej negacja?