R , 84 77 bajtów

2

R , 84 77 bajtów

-7 bajtów dzięki mb7744

unique(lapply(x<-sort(table(scan()),T),function(y)as.double(names(x[x==y]))))

Czyta ze standardowego; zwraca listę z wektorami liczb całkowitych w porządku rosnącym. Jeśli moglibyśmy zwrócić ciągi zamiast ints, to mógłbym upuścić 11 bajtów (usuwając wywołanie do as.double), ale to wszystko. tableFunkcja R wykonuje tutaj podnoszenie ciężarów, licząc wystąpienia każdego elementu swojego wkładu; następnie agreguje je według count ( names). Oczywiście jest to ciąg, więc musimy zmusić go do liczby całkowitej / podwójnej.

Wypróbuj online!

Giuseppe
źródło
Możesz stracić 7 bajtów, eliminując „które” i używając logicznego indeksowania
mb7744,
@ mb7744 oh duh.
Giuseppe
1
Zrobiłem kolejne dźgnięcie w to z R. To niefortunne, jak długo trwa składnia lambda, więc postanowiłem tego uniknąć. W zamian musiałem użyć zagnieżdżonych lapply, ale przynajmniej w takim przypadku mogę przypisać krótką zmienną lapply. Nie mogę przypisać zmiennej do funkcji function...
mb7744,

Odpowiedzi:

2

JavaScript (ES6), 100 98 96 93 bajtów

Zaoszczędzono 2 bajty dzięki @Neil (plus naprawił błąd w krawędzi w moim kodzie). Zaoszczędź jeszcze 3 bajty dzięki @TomasLangkaas.

a=>a.sort().map((_,n)=>a.filter((v,i)=>i-a.indexOf(v)==n&v!=a[i+1])).filter(a=>a+a).reverse()

Przypadki testowe

f=
a=>a.sort().map((_,n)=>a.filter((v,i)=>i-a.indexOf(v)==n&v!=a[i+1])).filter(a=>a+a).reverse()

console.log(JSON.stringify(f([1,2,3])))
console.log(JSON.stringify(f([1,1,1,2,2,3,3,4,5,6])))
console.log(JSON.stringify(f([1,1,1,4,5,6,6,6,7,7,8,8,8,8,8,8,8,9,5,6,5,6,5,6,5,6,-56])))
console.log(JSON.stringify(f([])))

Rick Hitchcock
źródło
Twój test jest błędny (nie działa na zero), ale myślę, że można jeszcze uratować bajtów poprzez filtrowanie i cofania zamiast unshifting: a=>a.sort().map((_,n)=>a.filter((v,i)=>i-a.indexOf(v)==n&v!=a[i+1])).filter(a=>1/a[0]).reverse().
Neil
Ahh, powinienem był wiedzieć, żeby przetestować na 0! Twój kod to naprawia, a ponadto jest krótszy, więc dziękuję za to
:)
Zaoszczędź 3 bajty więcej, zmieniając .filter(a=>1/a[0])na .filter(a=>''+a).
Tomas Langkaas,
Niezły, @TomasLangkaas, dzięki. (Zapisuje 2 bajty.)
Rick Hitchcock,
Mój zły (mam problem z liczeniem), ale .filter(a=>a+a)zapewniłby dodatkowy bajt.
Tomas Langkaas,
1

V , 60 , 54 bajtów

Úòͨ¼¾©î±/± ±òHòø 
pkJjòú!
Ǩ^ƒ ©î±/o
Îf ld|;D
òV{Jk

Wypróbuj online!

Hexdump:

00000000: daf2 cda8 bc81 bea9 eeb1 2fb1 20b1 f248  ........../. ..H
00000010: f2f8 200a 706b 4a6a f2fa 210a c7a8 5e83  .. .pkJj..!...^.
00000020: 20a9 81ee b12f 6f0a ce66 206c 647c 3b44   ..../o..f ld|;D
00000030: 0af2 567b 4a6b                           ..V{Jk

Mimo że uwielbiam V, jestem prawie pewien, że jest to najgorszy możliwy język dla tego zadania. Zwłaszcza biorąc pod uwagę, że nie obsługuje list i zasadniczo nie obsługuje liczb. Po prostu manipulacja ciągiem.

DJMcMayhem
źródło
1

C #, 119 bajtów

Wystarczy szybkie dźgnięcie w to:

using System.Linq;
a=>a.GroupBy(x=>x)
    .GroupBy(x=>x.Count(),x=>x.Key)
    .OrderBy(x=>-x.Key)
    .Select(x=>x.ToArray())
    .ToArray()
Hand-E-Food
źródło
2
+1 Możesz jednak usunąć System.Func<int[],int[][]>F=i końcowe ;. To nie jest część liczby bajtów dla tego rodzaju lambd.
Kevin Cruijssen
@KevinCruijssen, nie miałem pojęcia. Dzięki!
Hand-E-Food
1

R , 66 bajtów

(l=lapply)(l(split(x<-table(scan()),factor(-x)),names),as.integer)

Wypróbuj online!

Jeśli na wyjściu liczby całkowite mogą mieć format ciągów, mogą spaść do 48 bajtów (jak wspomniano w odpowiedzi @ Giuseppe).


Nie golfowany:

input <- scan(); # read input
x <- table(input); # count how many times each integer appears, in a named vector
y <- split(x, factor(-x)) # split the count into lists in increasing order
z <- lapply(y, names) # access the the original values which are still
                      # attached via the names
lapply(z, as.integer) # convert the names back to integers
mb7744
źródło
as.doublejest krótszy o jeden bajt i powinien działać tak samo jakas.integer
Giuseppe
Zależy to od tego, czy chcesz zwrócić liczbę całkowitą czy podwójną. Jeśli podwójne jest w porządku, być może postać też, i obaj moglibyśmy zaoszczędzić trochę bajtów.
mb7744
1

PowerShell, 77, 70 bajtów

($a=$args)|group{($a-eq$_).count}|sort n* -Des|%{,($_.group|sort -u)}

Uwaga: Aby zobaczyć, że wyniki te są poprawnie pogrupowane (ponieważ wizualnie nie ma żadnych podziałów między zawartością każdej tablicy), możesz chcieć dołączyć | write-hostna końcu powyższej linii.

Podziękowanie

Dzięki:

  • TessellatingHeckler do oszczędzania 7 bajtów poprzez masowe refaktoryzację / przepisywanie do bardziej golfowego podejścia.

Poprzedni

77 bajtów

param($x)$x|group|sort count -desc|group count|%{,($_.group|%{$_.group[0]})}
JohnLBevan
źródło
Fajnie dzięki. Musiałem uwzględnić opcję ,()for grouping (ponieważ dane wyjściowe były wyświetlane jako jedna ciągła tablica). To jest znacznie bardziej golfowy niż moja pierwotna próba; świetna robota!
JohnLBevan,
0

Groovy, 71 bajtów

{a->a.groupBy{a.count(it)}.sort{-it.key}.values().collect{it.unique()}}

Właśnie dowiedziałem się o groupBy po utworzeniu tego. Nie wiedziałem, że zbieranie nie jest moim jedynym wyborem.


{
    a->                 // [1,2,1,2,3,3,3,6,5,4]
    a.groupBy{      
        a.count(it)     // [2:[1,2,1,2],3:[3,3,3],1:[6,5,4]]
    }.sort{             
        -it.key         // [3:[3,3,3],2:[1,2,1,2],1:[6,5,4]]
    }.values().collect{ // [[3,3,3],[1,2,1,2],[6,5,4]]
        it.unique()
    }                   // [[3],[1,2],[6,5,4]]
}
Urna Magicznej Ośmiornicy
źródło
0

Rubin , 62 bajty

->a{a.group_by{|e|a.count(e)}.sort_by{|x,_|-x}.map{|_,i|i|[]}}

Wypróbuj online!

Musi istnieć krótszy sposób, aby to zrobić.

canhascodez
źródło