Biorąc pod uwagę ciąg cyfr lub liczbę całkowitą jako dane wejściowe, musisz go zindeksować.
W ten sposób modyfikujesz dane wejściowe. Użyjemy 30043376111
jako przykładu:
Najpierw znajdź sumę wskaźników każdego wystąpienia odpowiednich cyfr:
0: 1 + 2 = 3
1: 8 + 9 + 10 = 27
3: 0 + 4 + 5 = 9
4: 3
6: 7
7: 6
Następnie skonstruuj nową liczbę całkowitą lub ciąg znaków w miejscu, w którym cyfry powyżej idą w kolejności sum ich indeksów. W przypadku, gdy wiele cyfr daje tę samą sumę, mniejsza cyfra pojawia się przed większą:
047631
Na koniec usuń wszystkie początkowe zera i zwróć lub wydrukuj wynik:
47631
Musisz napisać program lub funkcję, która zwraca lub drukuje zindeksowane dane wejściowe.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Na żądanie można dodać więcej przypadków testowych.
Odpowiedzi:
k, 7 bajtów
repl. online
Zestawienie funkcji jest kompozycją, więc nie jest wymagany żaden wyraźny parametr ani dane wejściowe.
źródło
Haskell, 69 bajtów
Bierze ciąg, zwraca liczbę. Przykład użycia:
f "30043376111"
->47631
. Wypróbuj online!Całkiem prosto: najpierw posortuj cyfry ciągu wejściowego według sumy ich indeksów i według samej cyfry (-> pary (suma ..., d)), usuń duplikaty i przekonwertuj na liczbę, aby usunąć wiodące
0
. Jest0+
to konieczne, aby uzyskać prawidłowe typy.źródło
Skumulowane , 59 bajtów
Wypróbuj online!
Pobiera ciąg znaków (podobny
$'1231231'
) jako dane wejściowe z góry stosu i pozostawia ciąg znaków na stosie.Wyjaśnienie
Teraz pozostały nam pary (chr, suma indeksów).
źródło
05AB1E ,
2928 bajtów-1 dzięki Riley
Wypróbuj online!
źródło
TFN
za9Ývy
JavaScript (ES6), 98 bajtów
Bierze ciąg
n
, a następnie konwertuje go na zestaw, a następnie na tablicę wyraźnych cyfr. Sortuje te cyfry w kolejności numerycznej, a następnie sortuje ponownie według sum wskaźników. Łączy posortowaną tablicę z ciągiem, a na koniec konwertuje na liczbę, aby usunąć zera wiodące.źródło
.sort()
wejścia 1332 daje 132 zamiast 123.PowerShell , 88 bajtów
Wypróbuj online!
Ustawia pustą tabelę skrótów
$a
, a następnie rzutuje dane wejściowe$args
jakochar
tablicę i zapętla każdy element|%{...}
. Ustawiamy wartość na „bieżącym elemencie”,$a
który ma być zwiększany$i++
, aby policzyć wskaźniki wejściowe. Na przykład, do wprowadzania300433766111
, pierwsza pętla$a[3]
staje+=0
; następna pętla$a[0]
dostaje+=1
; itp.Następnie musimy przejść do
Sort
naszego hashtable. Niestety z powodu dziwactwa języka wewnętrznego oznacza to, że$a.GetEnumerator()
musimy to zrobić, zanim będziemy mogli dokonać właściwego sortowania. Sortujemy wedługvalue
, a następniename
, aby spełnić wymóg mniejszych cyfr, najpierw sortujemy . Wyciągamy.Name
ich (w posortowanej kolejności),-join
razem w ciąg i rzutujemy ten ciąg jako int,+
aby usunąć wiodące zera. Pozostaje to w potoku, a dane wyjściowe są niejawne.źródło
Galareta , 10 bajtów
Wypróbuj online!
Bierze i zwraca liczbę całkowitą.
W jaki sposób?
źródło
PHP, 103 bajtów
źródło
Python 2,
10292 bajtyDzięki Ben Frankel za uratowanie 10 bajtów!
Wypróbuj online!
Pobiera dane wejściowe jako ciąg znaków i wypisuje liczbę całkowitą. Używa słownika do przechowywania sumy indeksów, a następnie sortuje je według wartości. Konwertuje na liczbę całkowitą, aby usunąć wiodące zera, ponieważ
int
jest krótsza niż.lsplit('0')
.źródło
a[j]=a.get(j,0)+i
oszczędza 10 bajtów.Python 3.5,
8685 bajtówDzięki @Ben Frankel za uratowanie bajtu:
Stary kod:
Anonimowa funkcja pobierająca ciąg cyfr i zwracająca liczbę całkowitą
źródło
sum(i*(c==d)for
oszczędza 1 bajt.Pip , 18 bajtów
Pobiera liczbę jako argument wiersza polecenia. Wypróbuj online!
Wyjaśnienie
źródło
C #, 245 bajtów
Nie jestem zadowolony z tego, jak długo to trwało i prawdopodobnie może być krótsze, ale z tym skończyłem.
źródło
Perl 6 ,
65 6152 bajtówSpróbuj
Spróbuj
Spróbuj
Rozszerzony
źródło
Scala,
123104 bajtyPrzykład (przy użyciu Scala REPL):
Całkiem proste, używając krotki jako predykatu sortowania dla sortowania wtórnego.
źródło
Pyth, 9 bajtów
Wypróbuj online
Pobiera ciąg cyfr jako dane wejściowe.
źródło