Sort by Largest Digit(s)











up vote
19
down vote

favorite
2












Challenge:



Given a list of integer, sort descending by their single largest digit(s). The order for numbers with the same largest digit are then sorted by second largest digit, etc.

We ignore duplicated digits in numbers. And if all digits in a number are the same, the order of those numbers in the list can be in any way you'd like.



Example:



Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]


Why? Here are the relevant digits the numbers were sorted on:



Output:
[8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]

Relevant digits they were sorted on:
[[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]


Challenge rules:




  • We ignore duplicated digits, so 478 and -7738 will be ordered as 478, -7738, because the largest digits are [8,7,4] and [8,7,3], and not [8,7,4] and [8,7,7,3].

  • If multiple numbers have the same digits, the order of those can be either way. So 373 and -73 can be sorted as both 373, -73 or -73, 373 (digits are [7,3] for both of these numbers).

  • If a number contains no more digits to check, it will be placed at the back of the relevant numbers. So 123 and 3120 will be sorted as 3120, 123, because the largest digits [3,2,1] are the same, but 0 comes before none.

  • You can assume all numbers in the input are in the range [-999999,999999].

  • Just one of the possible outputs is enough as result, but you are allowed to output all possible outputs where sublists can be in any permutation if you want (although I doubt it would save bytes in any language).


General rules:




  • This is code-golf, so shortest answer in bytes wins.

    Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


  • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


  • Default Loopholes are forbidden.

  • If possible, please add a link with a test for your code (i.e. TIO).

  • Also, adding an explanation for your answer is highly recommended.


Test cases:



Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]

Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
[902, -382, 34202, -34, 2132, -312, 321, 23, 11]
etc. The sublist [-312, 321, 2132] can be in any permutation

Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
[29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
etc. The sublists [4, 44] and [2212, 21] can be in any permutation

Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]









share|improve this question


























    up vote
    19
    down vote

    favorite
    2












    Challenge:



    Given a list of integer, sort descending by their single largest digit(s). The order for numbers with the same largest digit are then sorted by second largest digit, etc.

    We ignore duplicated digits in numbers. And if all digits in a number are the same, the order of those numbers in the list can be in any way you'd like.



    Example:



    Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
    Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
    [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]


    Why? Here are the relevant digits the numbers were sorted on:



    Output:
    [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]

    Relevant digits they were sorted on:
    [[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]


    Challenge rules:




    • We ignore duplicated digits, so 478 and -7738 will be ordered as 478, -7738, because the largest digits are [8,7,4] and [8,7,3], and not [8,7,4] and [8,7,7,3].

    • If multiple numbers have the same digits, the order of those can be either way. So 373 and -73 can be sorted as both 373, -73 or -73, 373 (digits are [7,3] for both of these numbers).

    • If a number contains no more digits to check, it will be placed at the back of the relevant numbers. So 123 and 3120 will be sorted as 3120, 123, because the largest digits [3,2,1] are the same, but 0 comes before none.

    • You can assume all numbers in the input are in the range [-999999,999999].

    • Just one of the possible outputs is enough as result, but you are allowed to output all possible outputs where sublists can be in any permutation if you want (although I doubt it would save bytes in any language).


    General rules:




    • This is code-golf, so shortest answer in bytes wins.

      Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


    • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


    • Default Loopholes are forbidden.

    • If possible, please add a link with a test for your code (i.e. TIO).

    • Also, adding an explanation for your answer is highly recommended.


    Test cases:



    Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
    Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
    [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]

    Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
    Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
    [902, -382, 34202, -34, 2132, -312, 321, 23, 11]
    etc. The sublist [-312, 321, 2132] can be in any permutation

    Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
    Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
    [29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
    etc. The sublists [4, 44] and [2212, 21] can be in any permutation

    Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
    Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]









    share|improve this question
























      up vote
      19
      down vote

      favorite
      2









      up vote
      19
      down vote

      favorite
      2






      2





      Challenge:



      Given a list of integer, sort descending by their single largest digit(s). The order for numbers with the same largest digit are then sorted by second largest digit, etc.

      We ignore duplicated digits in numbers. And if all digits in a number are the same, the order of those numbers in the list can be in any way you'd like.



      Example:



      Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
      Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
      [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]


      Why? Here are the relevant digits the numbers were sorted on:



      Output:
      [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]

      Relevant digits they were sorted on:
      [[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]


      Challenge rules:




      • We ignore duplicated digits, so 478 and -7738 will be ordered as 478, -7738, because the largest digits are [8,7,4] and [8,7,3], and not [8,7,4] and [8,7,7,3].

      • If multiple numbers have the same digits, the order of those can be either way. So 373 and -73 can be sorted as both 373, -73 or -73, 373 (digits are [7,3] for both of these numbers).

      • If a number contains no more digits to check, it will be placed at the back of the relevant numbers. So 123 and 3120 will be sorted as 3120, 123, because the largest digits [3,2,1] are the same, but 0 comes before none.

      • You can assume all numbers in the input are in the range [-999999,999999].

      • Just one of the possible outputs is enough as result, but you are allowed to output all possible outputs where sublists can be in any permutation if you want (although I doubt it would save bytes in any language).


      General rules:




      • This is code-golf, so shortest answer in bytes wins.

        Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


      • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


      • Default Loopholes are forbidden.

      • If possible, please add a link with a test for your code (i.e. TIO).

      • Also, adding an explanation for your answer is highly recommended.


      Test cases:



      Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
      Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
      [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]

      Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
      Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
      [902, -382, 34202, -34, 2132, -312, 321, 23, 11]
      etc. The sublist [-312, 321, 2132] can be in any permutation

      Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
      Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
      [29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
      etc. The sublists [4, 44] and [2212, 21] can be in any permutation

      Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
      Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]









      share|improve this question













      Challenge:



      Given a list of integer, sort descending by their single largest digit(s). The order for numbers with the same largest digit are then sorted by second largest digit, etc.

      We ignore duplicated digits in numbers. And if all digits in a number are the same, the order of those numbers in the list can be in any way you'd like.



      Example:



      Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
      Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
      [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]


      Why? Here are the relevant digits the numbers were sorted on:



      Output:
      [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]

      Relevant digits they were sorted on:
      [[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]


      Challenge rules:




      • We ignore duplicated digits, so 478 and -7738 will be ordered as 478, -7738, because the largest digits are [8,7,4] and [8,7,3], and not [8,7,4] and [8,7,7,3].

      • If multiple numbers have the same digits, the order of those can be either way. So 373 and -73 can be sorted as both 373, -73 or -73, 373 (digits are [7,3] for both of these numbers).

      • If a number contains no more digits to check, it will be placed at the back of the relevant numbers. So 123 and 3120 will be sorted as 3120, 123, because the largest digits [3,2,1] are the same, but 0 comes before none.

      • You can assume all numbers in the input are in the range [-999999,999999].

      • Just one of the possible outputs is enough as result, but you are allowed to output all possible outputs where sublists can be in any permutation if you want (although I doubt it would save bytes in any language).


      General rules:




      • This is code-golf, so shortest answer in bytes wins.

        Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


      • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


      • Default Loopholes are forbidden.

      • If possible, please add a link with a test for your code (i.e. TIO).

      • Also, adding an explanation for your answer is highly recommended.


      Test cases:



      Input:            [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
      Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
      [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]

      Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
      Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
      [902, -382, 34202, -34, 2132, -312, 321, 23, 11]
      etc. The sublist [-312, 321, 2132] can be in any permutation

      Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
      Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
      [29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
      etc. The sublists [4, 44] and [2212, 21] can be in any permutation

      Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
      Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]






      code-golf number integer sorting






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked yesterday









      Kevin Cruijssen

      34k554181




      34k554181






















          21 Answers
          21






          active

          oldest

          votes

















          up vote
          6
          down vote














          05AB1E, 5 bytes



          ΣêR}R


          Try it online!
          or as a Test suite



          Explanation



          Σ  }    # sort input by
          ê # its sorted unique characters
          R # reversed (to sort descending)
          R # reverse the result (to sort descending)





          share|improve this answer






























            up vote
            6
            down vote














            Python 2, 60 55 bytes





            def f(l):l.sort(None,lambda n:sorted(set(`n`))[::-1],1)


            Try it online!





            Ungolfed





            def f(l):
            l.sort( # Sort the list in place
            cmp = None, # ... with no custom comparison function
            key = k, # ... on the function
            reverse = 1 # ... in reverse
            ) # As the arguments are used in the right order, no names are necessary.

            k = lambda n:sorted( # sort
            set(`n`) # ... the set of digits
            )[::-1] # reverse the result
            # As '-' is smaller than the digits,
            # it will be sorted to the back and ignored for sorting


            Try it online!






            share|improve this answer



















            • 5




              None can be replaced with cmp in sort function
              – Jonas Ausevicius
              yesterday










            • The [::-1] can be exchanged for a double negation, I think.
              – DonQuiKong
              15 hours ago


















            up vote
            6
            down vote














            Perl 6, 36 34 33 31 bytes



            -1 byte thanks to Jo King
            -2 bytes thanks to Phil H





            *.sort:{sort 1,|set -<<m:g/d/}


            Try it online!



            Explanation



                   {                      }  # Map each number, e.g. -373
            m:g/d/ # Extract digits: (3, 7, 3)
            -<< # Negate each digit: (-3, -7, -3)
            set # Convert to set to remove duplicates
            | # Pass as list of pairs: (-3 => True, -7 => True)
            1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
            sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
            *.sort: # Sort lexicographically





            share|improve this answer























            • Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
              – Phil H
              10 hours ago


















            up vote
            5
            down vote














            Python 2, 58 60 bytes



            lambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]



            Try it online!






            share|improve this answer




























              up vote
              5
              down vote













              Pyth, 7 6 bytes



              -1 byte by @Sok



              _o_{S`


              Pyth, which uses only printable ASCII, is at a bit of a disadvantage here. Optimally encoded this would be 6*log(95)/log(256) = 4.927 bytes, beating 05AB1E.



              Explained:



               o              Sort the implicit input by lambda N:
              _ reversed
              { uniquified
              S sorted
              ' string representation [of N]
              _ then reverse the result.


              Try it here.






              share|improve this answer



















              • 2




                The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                – Sok
                yesterday




















              up vote
              5
              down vote














              R, 97 95 bytes





              function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]


              Try it online!



              This challenge seems to have been pessimized for R. Explanation of the original version (start at 1. and work up):



              f <- function(x) {
              x[ # 8. Input vector in
              rev( # 7. Reversed
              order( # 6. Lexicographical order
              sapply( # 5. Paste....
              Map(sort, # 4. Sort each using...
              Map(unique, # 3. Deduplicate each
              strsplit( # 2. Split each string into characters
              paste(x), # 1. Coerce each number to string
              "")),
              T), # 4. ...descending sort.
              paste,collapse="") # 5. ...back into strings
              )
              )
              ]
              }





              share|improve this answer






























                up vote
                4
                down vote














                Jelly, 8 bytes



                ADṢUQµÞU


                Try it online!



                How it works



                ADṢUQµÞU  Main link (monad). Input: integer list
                µÞU Sort by (reversed):
                AD Absolute value converted to decimal digits
                ṢUQ Sort, reverse, take unique values





                share|improve this answer

















                • 1




                  I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                  – Jonathan Allan
                  yesterday


















                up vote
                4
                down vote














                Brachylog, 9 bytes



                {ȧdṫo₁}ᵒ¹


                Note: due to how ordering works in brachylog, it does not work on number correctly. This is fixed by casting the number to a string () at the cost of 1 byte.



                Try it online!






                share|improve this answer



















                • 2




                  What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                  – Kevin Cruijssen
                  yesterday










                • @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                  – Kroppeb
                  yesterday






                • 2




                  Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                  – Kevin Cruijssen
                  yesterday










                • Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                  – Kroppeb
                  yesterday


















                up vote
                2
                down vote














                MathGolf, 7 6 bytes



                áÉ░▀zx


                Try it online! or as a test suite.



                Explanation



                After looking at Emigna's 05AB1E solution, I found that I didn't need the absolute operator (and my previous answer was actually incorrect because of that operator). Now the main difference is that I convert to string and get unique characters instead of using the 1-byte operator in 05AB1E.



                áÉ      Sort by the value generated from mapping each element using the next 3 instructions
                ░ Convert to string
                ▀ Get unique characters
                z Sort reversed (last instruction of block)
                x Reverse list (needed because I don't have a sort-reversed by mapping)





                share|improve this answer






























                  up vote
                  2
                  down vote














                  J, 17 bytes



                  {~[::~.@:~@":@|


                  Try it online!



                  Explanation:



                                  @|    - find the absolute value and
                  @": - convert to string and
                  @:~ - sort down and
                  ~. - keep only the unique symbols
                  : - grade down the entire list of strings
                  [: - function composition
                  {~ - use the graded-down list to index into the input





                  share|improve this answer






























                    up vote
                    2
                    down vote














                    JavaScript (SpiderMonkey), 68 bytes



                    Thanks for @Arnauld for reminding me again that SpiderMonkey uses stable sort, so -4 bytes for removing ||-1.





                    A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y))


                    Try it online!




                    JavaScript (Node.js), 72 bytes





                    A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y)||-1)


                    Try it online!






                    share|improve this answer























                    • Or 68 bytes with SpiderMonkey.
                      – Arnauld
                      yesterday






                    • 1




                      @Arnauld oh stable sort again ;P
                      – Shieru Asakoto
                      yesterday










                    • Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                      – Arnauld
                      yesterday






                    • 1




                      @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                      – tsh
                      16 hours ago


















                    up vote
                    2
                    down vote














                    Java (JDK), 98 bytes





                    l->l.sort((a,b)->{int r=0,i=58;for(;r==0&i-->48;)r=(b.indexOf(i)>>9)-(a.indexOf(i)>>9);return r;})


                    Try it online!



                    Explanation



                    l->                           // Consumer<List<String>>
                    l.sort( // Use the incorporated sort method which uses a...
                    (a,b)->{ // Comparator of Strings
                    int r=0, // define r as the result, initiated to 0
                    i=58; // i as the codepoint to test for.
                    for(;r==0&i-->48;) // for each digit codepoint from '9' to '0',
                    // and while no difference was found.
                    r= // set r as the difference between
                    (b.indexOf(i)>>9)- // was the digit found in b? then 0 else -1 using the bit-shift operator
                    (a.indexOf(i)>>9); // and was the digit found in a? then 0 else -1.
                    return r; // return the comparison result.
                    }
                    )


                    Note:



                    I needed a way to map numbers to either 0/1 or 0/-1.



                    indexOf has the nice property that it's consistently returning -1 for characters not found. -1 right-shifted by any number is always -1. Any positive number right-shifted by a big enough number will always produce 0.



                    So here we are:



                    input        input.indexOf('9')      input.indexOf('9')>>9
                    "999" 0 0
                    "111119" 5 0
                    "123456" -1 -1





                    share|improve this answer



















                    • 1




                      Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                      – Kevin Cruijssen
                      yesterday


















                    up vote
                    2
                    down vote














                    Japt, 12 bytes



                    ñ_a ì â ñnÃw


                    All test cases



                    Explanation:



                    ñ_        Ãw    :Sort Descending by:
                    a : Get the absolute value
                    ì : Get the digits
                    â : Remove duplicates
                    ñn : Sort the digits in descending order





                    share|improve this answer






























                      up vote
                      2
                      down vote














                      Haskell, 54 52 bytes





                      import Data.List
                      f=r.sortOn(r.sort.nub.show);r=reverse


                      Try it online!






                      share|improve this answer























                      • Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                        – Laikoni
                        yesterday










                      • I moved the import and f= to the TIO header. Is that OK?
                        – Martin Lütke
                        yesterday










                      • Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                        – Laikoni
                        yesterday






                      • 1




                        The import actually needs to be counted.
                        – Laikoni
                        yesterday






                      • 2




                        You may want to have a look at our Guide to golfing rules in Haskell.
                        – Laikoni
                        yesterday


















                      up vote
                      2
                      down vote














                      Stax, 6 7 bytes



                      èó≥ü≤♥¥


                      Run and debug it






                      share|improve this answer























                      • This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                        – Kevin Cruijssen
                        17 hours ago












                      • @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                        – recursive
                        7 hours ago










                      • Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                        – Kevin Cruijssen
                        7 hours ago


















                      up vote
                      1
                      down vote














                      C (gcc), 114 111 bytes





                      a;v(n){n=n<0?-n:n;for(a=0;n;n/=10)a|=1<<n%10;n=a;}c(int*a,int*b){a=v(*a)<v(*b);}f(a,n)int*a,n;{qsort(a,n,4,c);}


                      Try it online!



                      Explanation:



                      f() uses qsort() to sort provided array in place. Using comparison function c() to compare numbers which evaluates numbers using v().
                      v() calculates a higher number if bigger digits are present in parameter.



                      [Edit 1]
                      Improved by 3 bytes. 2 byte credits to Kevin. Thanks






                      share|improve this answer























                      • You can golf n>0 to n I think in your loop of your method v.
                        – Kevin Cruijssen
                        yesterday










                      • Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                        – ceilingcat
                        4 hours ago




















                      up vote
                      1
                      down vote














                      Ruby, 55 bytes





                      ->a{a.sort_by{|x|x.abs.digits.sort.reverse|}.reverse}


                      Try it online!






                      share|improve this answer




























                        up vote
                        1
                        down vote














                        Perl 5 -nl, 68 bytes





                        $a{eval"9876543210=~y/$_//dcr"}=$_}{say$a{$_}for reverse sort keys%a


                        Try it online!






                        share|improve this answer




























                          up vote
                          1
                          down vote














                          C# (Visual C# Interactive Compiler), 84 bytes





                          x=>x.OrderByDescending(y=>String.Concat((y+"-").Distinct().OrderByDescending(z=>z)))


                          Try it online!



                          In C#, strings are considered "enumerables" of characters. I use this to my advantage by first converting each number to a string. LINQ is then leveraged to get the unique characters (digits) sorted in reverse order. I convert each sorted character array back into a string and use that as the sort key to order the whole list.



                          I was scratching my head with how to handle the hyphen for negative numbers. But as it turns out, adding the hyphen character to all of my numbers takes care of the tie breaker when one number has a superset of digits compared to the other.






                          share|improve this answer






























                            up vote
                            1
                            down vote














                            Julia 1.0, 50 bytes





                            x->sort(x,by=y->sort(unique([digits(-abs(y));1])))


                            Try it online!






                            share|improve this answer




























                              up vote
                              1
                              down vote














                              APL (Dyalog Extended), 19 bytes





                              {⍵[⍒∪¨(∨'¯'~⍨⍕)¨⍵]}


                              Try it online!



                              Fixed at a cost of +2 bytes thanks to OP.






                              share|improve this answer























                              • I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                – Kevin Cruijssen
                                7 hours ago










                              • Thanks, @KevinCruijssen
                                – Zacharý
                                3 hours ago











                              Your Answer





                              StackExchange.ifUsing("editor", function () {
                              return StackExchange.using("mathjaxEditing", function () {
                              StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                              StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
                              });
                              });
                              }, "mathjax-editing");

                              StackExchange.ifUsing("editor", function () {
                              StackExchange.using("externalEditor", function () {
                              StackExchange.using("snippets", function () {
                              StackExchange.snippets.init();
                              });
                              });
                              }, "code-snippets");

                              StackExchange.ready(function() {
                              var channelOptions = {
                              tags: "".split(" "),
                              id: "200"
                              };
                              initTagRenderer("".split(" "), "".split(" "), channelOptions);

                              StackExchange.using("externalEditor", function() {
                              // Have to fire editor after snippets, if snippets enabled
                              if (StackExchange.settings.snippets.snippetsEnabled) {
                              StackExchange.using("snippets", function() {
                              createEditor();
                              });
                              }
                              else {
                              createEditor();
                              }
                              });

                              function createEditor() {
                              StackExchange.prepareEditor({
                              heartbeatType: 'answer',
                              convertImagesToLinks: false,
                              noModals: true,
                              showLowRepImageUploadWarning: true,
                              reputationToPostImages: null,
                              bindNavPrevention: true,
                              postfix: "",
                              imageUploader: {
                              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                              allowUrls: true
                              },
                              onDemand: true,
                              discardSelector: ".discard-answer"
                              ,immediatelyShowMarkdownHelp:true
                              });


                              }
                              });














                               

                              draft saved


                              draft discarded


















                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f175978%2fsort-by-largest-digits%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown

























                              21 Answers
                              21






                              active

                              oldest

                              votes








                              21 Answers
                              21






                              active

                              oldest

                              votes









                              active

                              oldest

                              votes






                              active

                              oldest

                              votes








                              up vote
                              6
                              down vote














                              05AB1E, 5 bytes



                              ΣêR}R


                              Try it online!
                              or as a Test suite



                              Explanation



                              Σ  }    # sort input by
                              ê # its sorted unique characters
                              R # reversed (to sort descending)
                              R # reverse the result (to sort descending)





                              share|improve this answer



























                                up vote
                                6
                                down vote














                                05AB1E, 5 bytes



                                ΣêR}R


                                Try it online!
                                or as a Test suite



                                Explanation



                                Σ  }    # sort input by
                                ê # its sorted unique characters
                                R # reversed (to sort descending)
                                R # reverse the result (to sort descending)





                                share|improve this answer

























                                  up vote
                                  6
                                  down vote










                                  up vote
                                  6
                                  down vote










                                  05AB1E, 5 bytes



                                  ΣêR}R


                                  Try it online!
                                  or as a Test suite



                                  Explanation



                                  Σ  }    # sort input by
                                  ê # its sorted unique characters
                                  R # reversed (to sort descending)
                                  R # reverse the result (to sort descending)





                                  share|improve this answer















                                  05AB1E, 5 bytes



                                  ΣêR}R


                                  Try it online!
                                  or as a Test suite



                                  Explanation



                                  Σ  }    # sort input by
                                  ê # its sorted unique characters
                                  R # reversed (to sort descending)
                                  R # reverse the result (to sort descending)






                                  share|improve this answer














                                  share|improve this answer



                                  share|improve this answer








                                  edited yesterday

























                                  answered yesterday









                                  Emigna

                                  44.8k432136




                                  44.8k432136






















                                      up vote
                                      6
                                      down vote














                                      Python 2, 60 55 bytes





                                      def f(l):l.sort(None,lambda n:sorted(set(`n`))[::-1],1)


                                      Try it online!





                                      Ungolfed





                                      def f(l):
                                      l.sort( # Sort the list in place
                                      cmp = None, # ... with no custom comparison function
                                      key = k, # ... on the function
                                      reverse = 1 # ... in reverse
                                      ) # As the arguments are used in the right order, no names are necessary.

                                      k = lambda n:sorted( # sort
                                      set(`n`) # ... the set of digits
                                      )[::-1] # reverse the result
                                      # As '-' is smaller than the digits,
                                      # it will be sorted to the back and ignored for sorting


                                      Try it online!






                                      share|improve this answer



















                                      • 5




                                        None can be replaced with cmp in sort function
                                        – Jonas Ausevicius
                                        yesterday










                                      • The [::-1] can be exchanged for a double negation, I think.
                                        – DonQuiKong
                                        15 hours ago















                                      up vote
                                      6
                                      down vote














                                      Python 2, 60 55 bytes





                                      def f(l):l.sort(None,lambda n:sorted(set(`n`))[::-1],1)


                                      Try it online!





                                      Ungolfed





                                      def f(l):
                                      l.sort( # Sort the list in place
                                      cmp = None, # ... with no custom comparison function
                                      key = k, # ... on the function
                                      reverse = 1 # ... in reverse
                                      ) # As the arguments are used in the right order, no names are necessary.

                                      k = lambda n:sorted( # sort
                                      set(`n`) # ... the set of digits
                                      )[::-1] # reverse the result
                                      # As '-' is smaller than the digits,
                                      # it will be sorted to the back and ignored for sorting


                                      Try it online!






                                      share|improve this answer



















                                      • 5




                                        None can be replaced with cmp in sort function
                                        – Jonas Ausevicius
                                        yesterday










                                      • The [::-1] can be exchanged for a double negation, I think.
                                        – DonQuiKong
                                        15 hours ago













                                      up vote
                                      6
                                      down vote










                                      up vote
                                      6
                                      down vote










                                      Python 2, 60 55 bytes





                                      def f(l):l.sort(None,lambda n:sorted(set(`n`))[::-1],1)


                                      Try it online!





                                      Ungolfed





                                      def f(l):
                                      l.sort( # Sort the list in place
                                      cmp = None, # ... with no custom comparison function
                                      key = k, # ... on the function
                                      reverse = 1 # ... in reverse
                                      ) # As the arguments are used in the right order, no names are necessary.

                                      k = lambda n:sorted( # sort
                                      set(`n`) # ... the set of digits
                                      )[::-1] # reverse the result
                                      # As '-' is smaller than the digits,
                                      # it will be sorted to the back and ignored for sorting


                                      Try it online!






                                      share|improve this answer















                                      Python 2, 60 55 bytes





                                      def f(l):l.sort(None,lambda n:sorted(set(`n`))[::-1],1)


                                      Try it online!





                                      Ungolfed





                                      def f(l):
                                      l.sort( # Sort the list in place
                                      cmp = None, # ... with no custom comparison function
                                      key = k, # ... on the function
                                      reverse = 1 # ... in reverse
                                      ) # As the arguments are used in the right order, no names are necessary.

                                      k = lambda n:sorted( # sort
                                      set(`n`) # ... the set of digits
                                      )[::-1] # reverse the result
                                      # As '-' is smaller than the digits,
                                      # it will be sorted to the back and ignored for sorting


                                      Try it online!







                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited yesterday

























                                      answered yesterday









                                      ovs

                                      18.3k21059




                                      18.3k21059








                                      • 5




                                        None can be replaced with cmp in sort function
                                        – Jonas Ausevicius
                                        yesterday










                                      • The [::-1] can be exchanged for a double negation, I think.
                                        – DonQuiKong
                                        15 hours ago














                                      • 5




                                        None can be replaced with cmp in sort function
                                        – Jonas Ausevicius
                                        yesterday










                                      • The [::-1] can be exchanged for a double negation, I think.
                                        – DonQuiKong
                                        15 hours ago








                                      5




                                      5




                                      None can be replaced with cmp in sort function
                                      – Jonas Ausevicius
                                      yesterday




                                      None can be replaced with cmp in sort function
                                      – Jonas Ausevicius
                                      yesterday












                                      The [::-1] can be exchanged for a double negation, I think.
                                      – DonQuiKong
                                      15 hours ago




                                      The [::-1] can be exchanged for a double negation, I think.
                                      – DonQuiKong
                                      15 hours ago










                                      up vote
                                      6
                                      down vote














                                      Perl 6, 36 34 33 31 bytes



                                      -1 byte thanks to Jo King
                                      -2 bytes thanks to Phil H





                                      *.sort:{sort 1,|set -<<m:g/d/}


                                      Try it online!



                                      Explanation



                                             {                      }  # Map each number, e.g. -373
                                      m:g/d/ # Extract digits: (3, 7, 3)
                                      -<< # Negate each digit: (-3, -7, -3)
                                      set # Convert to set to remove duplicates
                                      | # Pass as list of pairs: (-3 => True, -7 => True)
                                      1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
                                      sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
                                      *.sort: # Sort lexicographically





                                      share|improve this answer























                                      • Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                        – Phil H
                                        10 hours ago















                                      up vote
                                      6
                                      down vote














                                      Perl 6, 36 34 33 31 bytes



                                      -1 byte thanks to Jo King
                                      -2 bytes thanks to Phil H





                                      *.sort:{sort 1,|set -<<m:g/d/}


                                      Try it online!



                                      Explanation



                                             {                      }  # Map each number, e.g. -373
                                      m:g/d/ # Extract digits: (3, 7, 3)
                                      -<< # Negate each digit: (-3, -7, -3)
                                      set # Convert to set to remove duplicates
                                      | # Pass as list of pairs: (-3 => True, -7 => True)
                                      1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
                                      sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
                                      *.sort: # Sort lexicographically





                                      share|improve this answer























                                      • Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                        – Phil H
                                        10 hours ago













                                      up vote
                                      6
                                      down vote










                                      up vote
                                      6
                                      down vote










                                      Perl 6, 36 34 33 31 bytes



                                      -1 byte thanks to Jo King
                                      -2 bytes thanks to Phil H





                                      *.sort:{sort 1,|set -<<m:g/d/}


                                      Try it online!



                                      Explanation



                                             {                      }  # Map each number, e.g. -373
                                      m:g/d/ # Extract digits: (3, 7, 3)
                                      -<< # Negate each digit: (-3, -7, -3)
                                      set # Convert to set to remove duplicates
                                      | # Pass as list of pairs: (-3 => True, -7 => True)
                                      1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
                                      sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
                                      *.sort: # Sort lexicographically





                                      share|improve this answer















                                      Perl 6, 36 34 33 31 bytes



                                      -1 byte thanks to Jo King
                                      -2 bytes thanks to Phil H





                                      *.sort:{sort 1,|set -<<m:g/d/}


                                      Try it online!



                                      Explanation



                                             {                      }  # Map each number, e.g. -373
                                      m:g/d/ # Extract digits: (3, 7, 3)
                                      -<< # Negate each digit: (-3, -7, -3)
                                      set # Convert to set to remove duplicates
                                      | # Pass as list of pairs: (-3 => True, -7 => True)
                                      1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
                                      sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
                                      *.sort: # Sort lexicographically






                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited 10 hours ago

























                                      answered yesterday









                                      nwellnhof

                                      5,8081121




                                      5,8081121












                                      • Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                        – Phil H
                                        10 hours ago


















                                      • Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                        – Phil H
                                        10 hours ago
















                                      Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                      – Phil H
                                      10 hours ago




                                      Nice! -2 bytes for swapping m:g/d./ for .abs.comb: tio.run/…
                                      – Phil H
                                      10 hours ago










                                      up vote
                                      5
                                      down vote














                                      Python 2, 58 60 bytes



                                      lambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]



                                      Try it online!






                                      share|improve this answer

























                                        up vote
                                        5
                                        down vote














                                        Python 2, 58 60 bytes



                                        lambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]



                                        Try it online!






                                        share|improve this answer























                                          up vote
                                          5
                                          down vote










                                          up vote
                                          5
                                          down vote










                                          Python 2, 58 60 bytes



                                          lambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]



                                          Try it online!






                                          share|improve this answer













                                          Python 2, 58 60 bytes



                                          lambda a:sorted(a,key=lambda x:sorted(set(`x`))[::-1])[::-1]



                                          Try it online!







                                          share|improve this answer












                                          share|improve this answer



                                          share|improve this answer










                                          answered yesterday









                                          Jonas Ausevicius

                                          1113




                                          1113






















                                              up vote
                                              5
                                              down vote













                                              Pyth, 7 6 bytes



                                              -1 byte by @Sok



                                              _o_{S`


                                              Pyth, which uses only printable ASCII, is at a bit of a disadvantage here. Optimally encoded this would be 6*log(95)/log(256) = 4.927 bytes, beating 05AB1E.



                                              Explained:



                                               o              Sort the implicit input by lambda N:
                                              _ reversed
                                              { uniquified
                                              S sorted
                                              ' string representation [of N]
                                              _ then reverse the result.


                                              Try it here.






                                              share|improve this answer



















                                              • 2




                                                The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                                – Sok
                                                yesterday

















                                              up vote
                                              5
                                              down vote













                                              Pyth, 7 6 bytes



                                              -1 byte by @Sok



                                              _o_{S`


                                              Pyth, which uses only printable ASCII, is at a bit of a disadvantage here. Optimally encoded this would be 6*log(95)/log(256) = 4.927 bytes, beating 05AB1E.



                                              Explained:



                                               o              Sort the implicit input by lambda N:
                                              _ reversed
                                              { uniquified
                                              S sorted
                                              ' string representation [of N]
                                              _ then reverse the result.


                                              Try it here.






                                              share|improve this answer



















                                              • 2




                                                The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                                – Sok
                                                yesterday















                                              up vote
                                              5
                                              down vote










                                              up vote
                                              5
                                              down vote









                                              Pyth, 7 6 bytes



                                              -1 byte by @Sok



                                              _o_{S`


                                              Pyth, which uses only printable ASCII, is at a bit of a disadvantage here. Optimally encoded this would be 6*log(95)/log(256) = 4.927 bytes, beating 05AB1E.



                                              Explained:



                                               o              Sort the implicit input by lambda N:
                                              _ reversed
                                              { uniquified
                                              S sorted
                                              ' string representation [of N]
                                              _ then reverse the result.


                                              Try it here.






                                              share|improve this answer














                                              Pyth, 7 6 bytes



                                              -1 byte by @Sok



                                              _o_{S`


                                              Pyth, which uses only printable ASCII, is at a bit of a disadvantage here. Optimally encoded this would be 6*log(95)/log(256) = 4.927 bytes, beating 05AB1E.



                                              Explained:



                                               o              Sort the implicit input by lambda N:
                                              _ reversed
                                              { uniquified
                                              S sorted
                                              ' string representation [of N]
                                              _ then reverse the result.


                                              Try it here.







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited yesterday

























                                              answered yesterday









                                              lirtosiast

                                              15.1k436102




                                              15.1k436102








                                              • 2




                                                The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                                – Sok
                                                yesterday
















                                              • 2




                                                The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                                – Sok
                                                yesterday










                                              2




                                              2




                                              The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                              – Sok
                                              yesterday






                                              The trailing N can be left out to save 1 byte - all lambda-type functions infer the presence of the principle lambda variable if any arguments are missing from the end. Examples include m inferring d, f inferring T, u inferring G...
                                              – Sok
                                              yesterday












                                              up vote
                                              5
                                              down vote














                                              R, 97 95 bytes





                                              function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]


                                              Try it online!



                                              This challenge seems to have been pessimized for R. Explanation of the original version (start at 1. and work up):



                                              f <- function(x) {
                                              x[ # 8. Input vector in
                                              rev( # 7. Reversed
                                              order( # 6. Lexicographical order
                                              sapply( # 5. Paste....
                                              Map(sort, # 4. Sort each using...
                                              Map(unique, # 3. Deduplicate each
                                              strsplit( # 2. Split each string into characters
                                              paste(x), # 1. Coerce each number to string
                                              "")),
                                              T), # 4. ...descending sort.
                                              paste,collapse="") # 5. ...back into strings
                                              )
                                              )
                                              ]
                                              }





                                              share|improve this answer



























                                                up vote
                                                5
                                                down vote














                                                R, 97 95 bytes





                                                function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]


                                                Try it online!



                                                This challenge seems to have been pessimized for R. Explanation of the original version (start at 1. and work up):



                                                f <- function(x) {
                                                x[ # 8. Input vector in
                                                rev( # 7. Reversed
                                                order( # 6. Lexicographical order
                                                sapply( # 5. Paste....
                                                Map(sort, # 4. Sort each using...
                                                Map(unique, # 3. Deduplicate each
                                                strsplit( # 2. Split each string into characters
                                                paste(x), # 1. Coerce each number to string
                                                "")),
                                                T), # 4. ...descending sort.
                                                paste,collapse="") # 5. ...back into strings
                                                )
                                                )
                                                ]
                                                }





                                                share|improve this answer

























                                                  up vote
                                                  5
                                                  down vote










                                                  up vote
                                                  5
                                                  down vote










                                                  R, 97 95 bytes





                                                  function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]


                                                  Try it online!



                                                  This challenge seems to have been pessimized for R. Explanation of the original version (start at 1. and work up):



                                                  f <- function(x) {
                                                  x[ # 8. Input vector in
                                                  rev( # 7. Reversed
                                                  order( # 6. Lexicographical order
                                                  sapply( # 5. Paste....
                                                  Map(sort, # 4. Sort each using...
                                                  Map(unique, # 3. Deduplicate each
                                                  strsplit( # 2. Split each string into characters
                                                  paste(x), # 1. Coerce each number to string
                                                  "")),
                                                  T), # 4. ...descending sort.
                                                  paste,collapse="") # 5. ...back into strings
                                                  )
                                                  )
                                                  ]
                                                  }





                                                  share|improve this answer















                                                  R, 97 95 bytes





                                                  function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]


                                                  Try it online!



                                                  This challenge seems to have been pessimized for R. Explanation of the original version (start at 1. and work up):



                                                  f <- function(x) {
                                                  x[ # 8. Input vector in
                                                  rev( # 7. Reversed
                                                  order( # 6. Lexicographical order
                                                  sapply( # 5. Paste....
                                                  Map(sort, # 4. Sort each using...
                                                  Map(unique, # 3. Deduplicate each
                                                  strsplit( # 2. Split each string into characters
                                                  paste(x), # 1. Coerce each number to string
                                                  "")),
                                                  T), # 4. ...descending sort.
                                                  paste,collapse="") # 5. ...back into strings
                                                  )
                                                  )
                                                  ]
                                                  }






                                                  share|improve this answer














                                                  share|improve this answer



                                                  share|improve this answer








                                                  edited yesterday

























                                                  answered yesterday









                                                  ngm

                                                  2,97923




                                                  2,97923






















                                                      up vote
                                                      4
                                                      down vote














                                                      Jelly, 8 bytes



                                                      ADṢUQµÞU


                                                      Try it online!



                                                      How it works



                                                      ADṢUQµÞU  Main link (monad). Input: integer list
                                                      µÞU Sort by (reversed):
                                                      AD Absolute value converted to decimal digits
                                                      ṢUQ Sort, reverse, take unique values





                                                      share|improve this answer

















                                                      • 1




                                                        I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                        – Jonathan Allan
                                                        yesterday















                                                      up vote
                                                      4
                                                      down vote














                                                      Jelly, 8 bytes



                                                      ADṢUQµÞU


                                                      Try it online!



                                                      How it works



                                                      ADṢUQµÞU  Main link (monad). Input: integer list
                                                      µÞU Sort by (reversed):
                                                      AD Absolute value converted to decimal digits
                                                      ṢUQ Sort, reverse, take unique values





                                                      share|improve this answer

















                                                      • 1




                                                        I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                        – Jonathan Allan
                                                        yesterday













                                                      up vote
                                                      4
                                                      down vote










                                                      up vote
                                                      4
                                                      down vote










                                                      Jelly, 8 bytes



                                                      ADṢUQµÞU


                                                      Try it online!



                                                      How it works



                                                      ADṢUQµÞU  Main link (monad). Input: integer list
                                                      µÞU Sort by (reversed):
                                                      AD Absolute value converted to decimal digits
                                                      ṢUQ Sort, reverse, take unique values





                                                      share|improve this answer













                                                      Jelly, 8 bytes



                                                      ADṢUQµÞU


                                                      Try it online!



                                                      How it works



                                                      ADṢUQµÞU  Main link (monad). Input: integer list
                                                      µÞU Sort by (reversed):
                                                      AD Absolute value converted to decimal digits
                                                      ṢUQ Sort, reverse, take unique values






                                                      share|improve this answer












                                                      share|improve this answer



                                                      share|improve this answer










                                                      answered yesterday









                                                      Bubbler

                                                      5,494754




                                                      5,494754








                                                      • 1




                                                        I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                        – Jonathan Allan
                                                        yesterday














                                                      • 1




                                                        I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                        – Jonathan Allan
                                                        yesterday








                                                      1




                                                      1




                                                      I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                      – Jonathan Allan
                                                      yesterday




                                                      I just implemented this then found your post. I went with normal reverses, , rather than the upends, U. Note, however, that you do not need the D since sort, , is implemented with an iterable(z, make_digits=True) call inside. So that was AṢQṚµÞṚ for 7.
                                                      – Jonathan Allan
                                                      yesterday










                                                      up vote
                                                      4
                                                      down vote














                                                      Brachylog, 9 bytes



                                                      {ȧdṫo₁}ᵒ¹


                                                      Note: due to how ordering works in brachylog, it does not work on number correctly. This is fixed by casting the number to a string () at the cost of 1 byte.



                                                      Try it online!






                                                      share|improve this answer



















                                                      • 2




                                                        What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                        – Kroppeb
                                                        yesterday






                                                      • 2




                                                        Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                        – Kroppeb
                                                        yesterday















                                                      up vote
                                                      4
                                                      down vote














                                                      Brachylog, 9 bytes



                                                      {ȧdṫo₁}ᵒ¹


                                                      Note: due to how ordering works in brachylog, it does not work on number correctly. This is fixed by casting the number to a string () at the cost of 1 byte.



                                                      Try it online!






                                                      share|improve this answer



















                                                      • 2




                                                        What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                        – Kroppeb
                                                        yesterday






                                                      • 2




                                                        Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                        – Kroppeb
                                                        yesterday













                                                      up vote
                                                      4
                                                      down vote










                                                      up vote
                                                      4
                                                      down vote










                                                      Brachylog, 9 bytes



                                                      {ȧdṫo₁}ᵒ¹


                                                      Note: due to how ordering works in brachylog, it does not work on number correctly. This is fixed by casting the number to a string () at the cost of 1 byte.



                                                      Try it online!






                                                      share|improve this answer















                                                      Brachylog, 9 bytes



                                                      {ȧdṫo₁}ᵒ¹


                                                      Note: due to how ordering works in brachylog, it does not work on number correctly. This is fixed by casting the number to a string () at the cost of 1 byte.



                                                      Try it online!







                                                      share|improve this answer














                                                      share|improve this answer



                                                      share|improve this answer








                                                      edited yesterday

























                                                      answered yesterday









                                                      Kroppeb

                                                      99628




                                                      99628








                                                      • 2




                                                        What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                        – Kroppeb
                                                        yesterday






                                                      • 2




                                                        Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                        – Kroppeb
                                                        yesterday














                                                      • 2




                                                        What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                        – Kroppeb
                                                        yesterday






                                                      • 2




                                                        Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                        – Kevin Cruijssen
                                                        yesterday










                                                      • Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                        – Kroppeb
                                                        yesterday








                                                      2




                                                      2




                                                      What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                      – Kevin Cruijssen
                                                      yesterday




                                                      What do you mean by "Due to how ordering works in brachylog, it does not work as intended."? I've tried all four test cases, and its giving the correct results (unless I accidentally looked past something).
                                                      – Kevin Cruijssen
                                                      yesterday












                                                      @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                      – Kroppeb
                                                      yesterday




                                                      @KevinCruijssen The (to string) fixes the issue. Ordering digits in a number descending works as follows. Order from smallest to largest then reverse. The problem is that the number 3120 ordered from smallest to largest is 0123 which is equal to 123which reversed is 321and not 3210
                                                      – Kroppeb
                                                      yesterday




                                                      2




                                                      2




                                                      Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                      – Kevin Cruijssen
                                                      yesterday




                                                      Ah ok, so your current code is working due to the added toString (). As mentioned by @Arnauld, I thought your comment meant your current code doesn't work. It might be better to mention it like: "This could have been 8 bytes by removing the (toString), but unfortunately it does not work as intended due to how ordering works in Brachylog."
                                                      – Kevin Cruijssen
                                                      yesterday












                                                      Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                      – Kroppeb
                                                      yesterday




                                                      Looking at what I wrote it seems that my brain got distracted midsentence. Fixed it.
                                                      – Kroppeb
                                                      yesterday










                                                      up vote
                                                      2
                                                      down vote














                                                      MathGolf, 7 6 bytes



                                                      áÉ░▀zx


                                                      Try it online! or as a test suite.



                                                      Explanation



                                                      After looking at Emigna's 05AB1E solution, I found that I didn't need the absolute operator (and my previous answer was actually incorrect because of that operator). Now the main difference is that I convert to string and get unique characters instead of using the 1-byte operator in 05AB1E.



                                                      áÉ      Sort by the value generated from mapping each element using the next 3 instructions
                                                      ░ Convert to string
                                                      ▀ Get unique characters
                                                      z Sort reversed (last instruction of block)
                                                      x Reverse list (needed because I don't have a sort-reversed by mapping)





                                                      share|improve this answer



























                                                        up vote
                                                        2
                                                        down vote














                                                        MathGolf, 7 6 bytes



                                                        áÉ░▀zx


                                                        Try it online! or as a test suite.



                                                        Explanation



                                                        After looking at Emigna's 05AB1E solution, I found that I didn't need the absolute operator (and my previous answer was actually incorrect because of that operator). Now the main difference is that I convert to string and get unique characters instead of using the 1-byte operator in 05AB1E.



                                                        áÉ      Sort by the value generated from mapping each element using the next 3 instructions
                                                        ░ Convert to string
                                                        ▀ Get unique characters
                                                        z Sort reversed (last instruction of block)
                                                        x Reverse list (needed because I don't have a sort-reversed by mapping)





                                                        share|improve this answer

























                                                          up vote
                                                          2
                                                          down vote










                                                          up vote
                                                          2
                                                          down vote










                                                          MathGolf, 7 6 bytes



                                                          áÉ░▀zx


                                                          Try it online! or as a test suite.



                                                          Explanation



                                                          After looking at Emigna's 05AB1E solution, I found that I didn't need the absolute operator (and my previous answer was actually incorrect because of that operator). Now the main difference is that I convert to string and get unique characters instead of using the 1-byte operator in 05AB1E.



                                                          áÉ      Sort by the value generated from mapping each element using the next 3 instructions
                                                          ░ Convert to string
                                                          ▀ Get unique characters
                                                          z Sort reversed (last instruction of block)
                                                          x Reverse list (needed because I don't have a sort-reversed by mapping)





                                                          share|improve this answer















                                                          MathGolf, 7 6 bytes



                                                          áÉ░▀zx


                                                          Try it online! or as a test suite.



                                                          Explanation



                                                          After looking at Emigna's 05AB1E solution, I found that I didn't need the absolute operator (and my previous answer was actually incorrect because of that operator). Now the main difference is that I convert to string and get unique characters instead of using the 1-byte operator in 05AB1E.



                                                          áÉ      Sort by the value generated from mapping each element using the next 3 instructions
                                                          ░ Convert to string
                                                          ▀ Get unique characters
                                                          z Sort reversed (last instruction of block)
                                                          x Reverse list (needed because I don't have a sort-reversed by mapping)






                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited yesterday

























                                                          answered yesterday









                                                          maxb

                                                          2,0081923




                                                          2,0081923






















                                                              up vote
                                                              2
                                                              down vote














                                                              J, 17 bytes



                                                              {~[::~.@:~@":@|


                                                              Try it online!



                                                              Explanation:



                                                                              @|    - find the absolute value and
                                                              @": - convert to string and
                                                              @:~ - sort down and
                                                              ~. - keep only the unique symbols
                                                              : - grade down the entire list of strings
                                                              [: - function composition
                                                              {~ - use the graded-down list to index into the input





                                                              share|improve this answer



























                                                                up vote
                                                                2
                                                                down vote














                                                                J, 17 bytes



                                                                {~[::~.@:~@":@|


                                                                Try it online!



                                                                Explanation:



                                                                                @|    - find the absolute value and
                                                                @": - convert to string and
                                                                @:~ - sort down and
                                                                ~. - keep only the unique symbols
                                                                : - grade down the entire list of strings
                                                                [: - function composition
                                                                {~ - use the graded-down list to index into the input





                                                                share|improve this answer

























                                                                  up vote
                                                                  2
                                                                  down vote










                                                                  up vote
                                                                  2
                                                                  down vote










                                                                  J, 17 bytes



                                                                  {~[::~.@:~@":@|


                                                                  Try it online!



                                                                  Explanation:



                                                                                  @|    - find the absolute value and
                                                                  @": - convert to string and
                                                                  @:~ - sort down and
                                                                  ~. - keep only the unique symbols
                                                                  : - grade down the entire list of strings
                                                                  [: - function composition
                                                                  {~ - use the graded-down list to index into the input





                                                                  share|improve this answer















                                                                  J, 17 bytes



                                                                  {~[::~.@:~@":@|


                                                                  Try it online!



                                                                  Explanation:



                                                                                  @|    - find the absolute value and
                                                                  @": - convert to string and
                                                                  @:~ - sort down and
                                                                  ~. - keep only the unique symbols
                                                                  : - grade down the entire list of strings
                                                                  [: - function composition
                                                                  {~ - use the graded-down list to index into the input






                                                                  share|improve this answer














                                                                  share|improve this answer



                                                                  share|improve this answer








                                                                  edited yesterday

























                                                                  answered yesterday









                                                                  Galen Ivanov

                                                                  5,88711032




                                                                  5,88711032






















                                                                      up vote
                                                                      2
                                                                      down vote














                                                                      JavaScript (SpiderMonkey), 68 bytes



                                                                      Thanks for @Arnauld for reminding me again that SpiderMonkey uses stable sort, so -4 bytes for removing ||-1.





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y))


                                                                      Try it online!




                                                                      JavaScript (Node.js), 72 bytes





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y)||-1)


                                                                      Try it online!






                                                                      share|improve this answer























                                                                      • Or 68 bytes with SpiderMonkey.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld oh stable sort again ;P
                                                                        – Shieru Asakoto
                                                                        yesterday










                                                                      • Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                        – tsh
                                                                        16 hours ago















                                                                      up vote
                                                                      2
                                                                      down vote














                                                                      JavaScript (SpiderMonkey), 68 bytes



                                                                      Thanks for @Arnauld for reminding me again that SpiderMonkey uses stable sort, so -4 bytes for removing ||-1.





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y))


                                                                      Try it online!




                                                                      JavaScript (Node.js), 72 bytes





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y)||-1)


                                                                      Try it online!






                                                                      share|improve this answer























                                                                      • Or 68 bytes with SpiderMonkey.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld oh stable sort again ;P
                                                                        – Shieru Asakoto
                                                                        yesterday










                                                                      • Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                        – tsh
                                                                        16 hours ago













                                                                      up vote
                                                                      2
                                                                      down vote










                                                                      up vote
                                                                      2
                                                                      down vote










                                                                      JavaScript (SpiderMonkey), 68 bytes



                                                                      Thanks for @Arnauld for reminding me again that SpiderMonkey uses stable sort, so -4 bytes for removing ||-1.





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y))


                                                                      Try it online!




                                                                      JavaScript (Node.js), 72 bytes





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y)||-1)


                                                                      Try it online!






                                                                      share|improve this answer















                                                                      JavaScript (SpiderMonkey), 68 bytes



                                                                      Thanks for @Arnauld for reminding me again that SpiderMonkey uses stable sort, so -4 bytes for removing ||-1.





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y))


                                                                      Try it online!




                                                                      JavaScript (Node.js), 72 bytes





                                                                      A=>A.sort((x,y,F=n=>[...new Set(""+n)].sort().reverse())=>F(x)<F(y)||-1)


                                                                      Try it online!







                                                                      share|improve this answer














                                                                      share|improve this answer



                                                                      share|improve this answer








                                                                      edited yesterday

























                                                                      answered yesterday









                                                                      Shieru Asakoto

                                                                      2,220314




                                                                      2,220314












                                                                      • Or 68 bytes with SpiderMonkey.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld oh stable sort again ;P
                                                                        – Shieru Asakoto
                                                                        yesterday










                                                                      • Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                        – tsh
                                                                        16 hours ago


















                                                                      • Or 68 bytes with SpiderMonkey.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld oh stable sort again ;P
                                                                        – Shieru Asakoto
                                                                        yesterday










                                                                      • Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                        – Arnauld
                                                                        yesterday






                                                                      • 1




                                                                        @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                        – tsh
                                                                        16 hours ago
















                                                                      Or 68 bytes with SpiderMonkey.
                                                                      – Arnauld
                                                                      yesterday




                                                                      Or 68 bytes with SpiderMonkey.
                                                                      – Arnauld
                                                                      yesterday




                                                                      1




                                                                      1




                                                                      @Arnauld oh stable sort again ;P
                                                                      – Shieru Asakoto
                                                                      yesterday




                                                                      @Arnauld oh stable sort again ;P
                                                                      – Shieru Asakoto
                                                                      yesterday












                                                                      Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                      – Arnauld
                                                                      yesterday




                                                                      Actually, I think V8 is using at least 2 different sort algorithms. It seems like it's stable if the size of the array is less than or equal to $10$.
                                                                      – Arnauld
                                                                      yesterday




                                                                      1




                                                                      1




                                                                      @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                      – tsh
                                                                      16 hours ago




                                                                      @Arnauld V8 use quick sort before Chrome 70. The quick sort algorithm perform an insertion sort when array size is small enough. And latest Chrome had changed to stable sort for matching other browsers' (IE/Firefox/Safari) behavior.
                                                                      – tsh
                                                                      16 hours ago










                                                                      up vote
                                                                      2
                                                                      down vote














                                                                      Java (JDK), 98 bytes





                                                                      l->l.sort((a,b)->{int r=0,i=58;for(;r==0&i-->48;)r=(b.indexOf(i)>>9)-(a.indexOf(i)>>9);return r;})


                                                                      Try it online!



                                                                      Explanation



                                                                      l->                           // Consumer<List<String>>
                                                                      l.sort( // Use the incorporated sort method which uses a...
                                                                      (a,b)->{ // Comparator of Strings
                                                                      int r=0, // define r as the result, initiated to 0
                                                                      i=58; // i as the codepoint to test for.
                                                                      for(;r==0&i-->48;) // for each digit codepoint from '9' to '0',
                                                                      // and while no difference was found.
                                                                      r= // set r as the difference between
                                                                      (b.indexOf(i)>>9)- // was the digit found in b? then 0 else -1 using the bit-shift operator
                                                                      (a.indexOf(i)>>9); // and was the digit found in a? then 0 else -1.
                                                                      return r; // return the comparison result.
                                                                      }
                                                                      )


                                                                      Note:



                                                                      I needed a way to map numbers to either 0/1 or 0/-1.



                                                                      indexOf has the nice property that it's consistently returning -1 for characters not found. -1 right-shifted by any number is always -1. Any positive number right-shifted by a big enough number will always produce 0.



                                                                      So here we are:



                                                                      input        input.indexOf('9')      input.indexOf('9')>>9
                                                                      "999" 0 0
                                                                      "111119" 5 0
                                                                      "123456" -1 -1





                                                                      share|improve this answer



















                                                                      • 1




                                                                        Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                        – Kevin Cruijssen
                                                                        yesterday















                                                                      up vote
                                                                      2
                                                                      down vote














                                                                      Java (JDK), 98 bytes





                                                                      l->l.sort((a,b)->{int r=0,i=58;for(;r==0&i-->48;)r=(b.indexOf(i)>>9)-(a.indexOf(i)>>9);return r;})


                                                                      Try it online!



                                                                      Explanation



                                                                      l->                           // Consumer<List<String>>
                                                                      l.sort( // Use the incorporated sort method which uses a...
                                                                      (a,b)->{ // Comparator of Strings
                                                                      int r=0, // define r as the result, initiated to 0
                                                                      i=58; // i as the codepoint to test for.
                                                                      for(;r==0&i-->48;) // for each digit codepoint from '9' to '0',
                                                                      // and while no difference was found.
                                                                      r= // set r as the difference between
                                                                      (b.indexOf(i)>>9)- // was the digit found in b? then 0 else -1 using the bit-shift operator
                                                                      (a.indexOf(i)>>9); // and was the digit found in a? then 0 else -1.
                                                                      return r; // return the comparison result.
                                                                      }
                                                                      )


                                                                      Note:



                                                                      I needed a way to map numbers to either 0/1 or 0/-1.



                                                                      indexOf has the nice property that it's consistently returning -1 for characters not found. -1 right-shifted by any number is always -1. Any positive number right-shifted by a big enough number will always produce 0.



                                                                      So here we are:



                                                                      input        input.indexOf('9')      input.indexOf('9')>>9
                                                                      "999" 0 0
                                                                      "111119" 5 0
                                                                      "123456" -1 -1





                                                                      share|improve this answer



















                                                                      • 1




                                                                        Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                        – Kevin Cruijssen
                                                                        yesterday













                                                                      up vote
                                                                      2
                                                                      down vote










                                                                      up vote
                                                                      2
                                                                      down vote










                                                                      Java (JDK), 98 bytes





                                                                      l->l.sort((a,b)->{int r=0,i=58;for(;r==0&i-->48;)r=(b.indexOf(i)>>9)-(a.indexOf(i)>>9);return r;})


                                                                      Try it online!



                                                                      Explanation



                                                                      l->                           // Consumer<List<String>>
                                                                      l.sort( // Use the incorporated sort method which uses a...
                                                                      (a,b)->{ // Comparator of Strings
                                                                      int r=0, // define r as the result, initiated to 0
                                                                      i=58; // i as the codepoint to test for.
                                                                      for(;r==0&i-->48;) // for each digit codepoint from '9' to '0',
                                                                      // and while no difference was found.
                                                                      r= // set r as the difference between
                                                                      (b.indexOf(i)>>9)- // was the digit found in b? then 0 else -1 using the bit-shift operator
                                                                      (a.indexOf(i)>>9); // and was the digit found in a? then 0 else -1.
                                                                      return r; // return the comparison result.
                                                                      }
                                                                      )


                                                                      Note:



                                                                      I needed a way to map numbers to either 0/1 or 0/-1.



                                                                      indexOf has the nice property that it's consistently returning -1 for characters not found. -1 right-shifted by any number is always -1. Any positive number right-shifted by a big enough number will always produce 0.



                                                                      So here we are:



                                                                      input        input.indexOf('9')      input.indexOf('9')>>9
                                                                      "999" 0 0
                                                                      "111119" 5 0
                                                                      "123456" -1 -1





                                                                      share|improve this answer















                                                                      Java (JDK), 98 bytes





                                                                      l->l.sort((a,b)->{int r=0,i=58;for(;r==0&i-->48;)r=(b.indexOf(i)>>9)-(a.indexOf(i)>>9);return r;})


                                                                      Try it online!



                                                                      Explanation



                                                                      l->                           // Consumer<List<String>>
                                                                      l.sort( // Use the incorporated sort method which uses a...
                                                                      (a,b)->{ // Comparator of Strings
                                                                      int r=0, // define r as the result, initiated to 0
                                                                      i=58; // i as the codepoint to test for.
                                                                      for(;r==0&i-->48;) // for each digit codepoint from '9' to '0',
                                                                      // and while no difference was found.
                                                                      r= // set r as the difference between
                                                                      (b.indexOf(i)>>9)- // was the digit found in b? then 0 else -1 using the bit-shift operator
                                                                      (a.indexOf(i)>>9); // and was the digit found in a? then 0 else -1.
                                                                      return r; // return the comparison result.
                                                                      }
                                                                      )


                                                                      Note:



                                                                      I needed a way to map numbers to either 0/1 or 0/-1.



                                                                      indexOf has the nice property that it's consistently returning -1 for characters not found. -1 right-shifted by any number is always -1. Any positive number right-shifted by a big enough number will always produce 0.



                                                                      So here we are:



                                                                      input        input.indexOf('9')      input.indexOf('9')>>9
                                                                      "999" 0 0
                                                                      "111119" 5 0
                                                                      "123456" -1 -1






                                                                      share|improve this answer














                                                                      share|improve this answer



                                                                      share|improve this answer








                                                                      edited yesterday

























                                                                      answered yesterday









                                                                      Olivier Grégoire

                                                                      8,25711842




                                                                      8,25711842








                                                                      • 1




                                                                        Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                        – Kevin Cruijssen
                                                                        yesterday














                                                                      • 1




                                                                        Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                        – Kevin Cruijssen
                                                                        yesterday








                                                                      1




                                                                      1




                                                                      Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                      – Kevin Cruijssen
                                                                      yesterday




                                                                      Ah, yeah, that's what I mean. ;p Nice golf of using >>9 instead of >>32 due to the limited range of the numbers.
                                                                      – Kevin Cruijssen
                                                                      yesterday










                                                                      up vote
                                                                      2
                                                                      down vote














                                                                      Japt, 12 bytes



                                                                      ñ_a ì â ñnÃw


                                                                      All test cases



                                                                      Explanation:



                                                                      ñ_        Ãw    :Sort Descending by:
                                                                      a : Get the absolute value
                                                                      ì : Get the digits
                                                                      â : Remove duplicates
                                                                      ñn : Sort the digits in descending order





                                                                      share|improve this answer



























                                                                        up vote
                                                                        2
                                                                        down vote














                                                                        Japt, 12 bytes



                                                                        ñ_a ì â ñnÃw


                                                                        All test cases



                                                                        Explanation:



                                                                        ñ_        Ãw    :Sort Descending by:
                                                                        a : Get the absolute value
                                                                        ì : Get the digits
                                                                        â : Remove duplicates
                                                                        ñn : Sort the digits in descending order





                                                                        share|improve this answer

























                                                                          up vote
                                                                          2
                                                                          down vote










                                                                          up vote
                                                                          2
                                                                          down vote










                                                                          Japt, 12 bytes



                                                                          ñ_a ì â ñnÃw


                                                                          All test cases



                                                                          Explanation:



                                                                          ñ_        Ãw    :Sort Descending by:
                                                                          a : Get the absolute value
                                                                          ì : Get the digits
                                                                          â : Remove duplicates
                                                                          ñn : Sort the digits in descending order





                                                                          share|improve this answer















                                                                          Japt, 12 bytes



                                                                          ñ_a ì â ñnÃw


                                                                          All test cases



                                                                          Explanation:



                                                                          ñ_        Ãw    :Sort Descending by:
                                                                          a : Get the absolute value
                                                                          ì : Get the digits
                                                                          â : Remove duplicates
                                                                          ñn : Sort the digits in descending order






                                                                          share|improve this answer














                                                                          share|improve this answer



                                                                          share|improve this answer








                                                                          edited yesterday

























                                                                          answered yesterday









                                                                          Kamil Drakari

                                                                          2,541416




                                                                          2,541416






















                                                                              up vote
                                                                              2
                                                                              down vote














                                                                              Haskell, 54 52 bytes





                                                                              import Data.List
                                                                              f=r.sortOn(r.sort.nub.show);r=reverse


                                                                              Try it online!






                                                                              share|improve this answer























                                                                              • Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                                – Laikoni
                                                                                yesterday










                                                                              • I moved the import and f= to the TIO header. Is that OK?
                                                                                – Martin Lütke
                                                                                yesterday










                                                                              • Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 1




                                                                                The import actually needs to be counted.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 2




                                                                                You may want to have a look at our Guide to golfing rules in Haskell.
                                                                                – Laikoni
                                                                                yesterday















                                                                              up vote
                                                                              2
                                                                              down vote














                                                                              Haskell, 54 52 bytes





                                                                              import Data.List
                                                                              f=r.sortOn(r.sort.nub.show);r=reverse


                                                                              Try it online!






                                                                              share|improve this answer























                                                                              • Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                                – Laikoni
                                                                                yesterday










                                                                              • I moved the import and f= to the TIO header. Is that OK?
                                                                                – Martin Lütke
                                                                                yesterday










                                                                              • Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 1




                                                                                The import actually needs to be counted.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 2




                                                                                You may want to have a look at our Guide to golfing rules in Haskell.
                                                                                – Laikoni
                                                                                yesterday













                                                                              up vote
                                                                              2
                                                                              down vote










                                                                              up vote
                                                                              2
                                                                              down vote










                                                                              Haskell, 54 52 bytes





                                                                              import Data.List
                                                                              f=r.sortOn(r.sort.nub.show);r=reverse


                                                                              Try it online!






                                                                              share|improve this answer















                                                                              Haskell, 54 52 bytes





                                                                              import Data.List
                                                                              f=r.sortOn(r.sort.nub.show);r=reverse


                                                                              Try it online!







                                                                              share|improve this answer














                                                                              share|improve this answer



                                                                              share|improve this answer








                                                                              edited yesterday

























                                                                              answered yesterday









                                                                              Martin Lütke

                                                                              37125




                                                                              37125












                                                                              • Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                                – Laikoni
                                                                                yesterday










                                                                              • I moved the import and f= to the TIO header. Is that OK?
                                                                                – Martin Lütke
                                                                                yesterday










                                                                              • Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 1




                                                                                The import actually needs to be counted.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 2




                                                                                You may want to have a look at our Guide to golfing rules in Haskell.
                                                                                – Laikoni
                                                                                yesterday


















                                                                              • Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                                – Laikoni
                                                                                yesterday










                                                                              • I moved the import and f= to the TIO header. Is that OK?
                                                                                – Martin Lütke
                                                                                yesterday










                                                                              • Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 1




                                                                                The import actually needs to be counted.
                                                                                – Laikoni
                                                                                yesterday






                                                                              • 2




                                                                                You may want to have a look at our Guide to golfing rules in Haskell.
                                                                                – Laikoni
                                                                                yesterday
















                                                                              Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                              – Laikoni
                                                                              yesterday




                                                                              Defining r=reverse saves two bytes. We also allow anonymous functions, so the f= does not need to ve counted.
                                                                              – Laikoni
                                                                              yesterday












                                                                              I moved the import and f= to the TIO header. Is that OK?
                                                                              – Martin Lütke
                                                                              yesterday




                                                                              I moved the import and f= to the TIO header. Is that OK?
                                                                              – Martin Lütke
                                                                              yesterday












                                                                              Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                              – Laikoni
                                                                              yesterday




                                                                              Same byte count, but maybe of some interest: f=r$r id.nub.show;r=(reverse.).sortOn.
                                                                              – Laikoni
                                                                              yesterday




                                                                              1




                                                                              1




                                                                              The import actually needs to be counted.
                                                                              – Laikoni
                                                                              yesterday




                                                                              The import actually needs to be counted.
                                                                              – Laikoni
                                                                              yesterday




                                                                              2




                                                                              2




                                                                              You may want to have a look at our Guide to golfing rules in Haskell.
                                                                              – Laikoni
                                                                              yesterday




                                                                              You may want to have a look at our Guide to golfing rules in Haskell.
                                                                              – Laikoni
                                                                              yesterday










                                                                              up vote
                                                                              2
                                                                              down vote














                                                                              Stax, 6 7 bytes



                                                                              èó≥ü≤♥¥


                                                                              Run and debug it






                                                                              share|improve this answer























                                                                              • This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                                – Kevin Cruijssen
                                                                                17 hours ago












                                                                              • @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                                – recursive
                                                                                7 hours ago










                                                                              • Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                                – Kevin Cruijssen
                                                                                7 hours ago















                                                                              up vote
                                                                              2
                                                                              down vote














                                                                              Stax, 6 7 bytes



                                                                              èó≥ü≤♥¥


                                                                              Run and debug it






                                                                              share|improve this answer























                                                                              • This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                                – Kevin Cruijssen
                                                                                17 hours ago












                                                                              • @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                                – recursive
                                                                                7 hours ago










                                                                              • Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                                – Kevin Cruijssen
                                                                                7 hours ago













                                                                              up vote
                                                                              2
                                                                              down vote










                                                                              up vote
                                                                              2
                                                                              down vote










                                                                              Stax, 6 7 bytes



                                                                              èó≥ü≤♥¥


                                                                              Run and debug it






                                                                              share|improve this answer















                                                                              Stax, 6 7 bytes



                                                                              èó≥ü≤♥¥


                                                                              Run and debug it







                                                                              share|improve this answer














                                                                              share|improve this answer



                                                                              share|improve this answer








                                                                              edited 7 hours ago

























                                                                              answered yesterday









                                                                              recursive

                                                                              4,9441221




                                                                              4,9441221












                                                                              • This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                                – Kevin Cruijssen
                                                                                17 hours ago












                                                                              • @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                                – recursive
                                                                                7 hours ago










                                                                              • Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                                – Kevin Cruijssen
                                                                                7 hours ago


















                                                                              • This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                                – Kevin Cruijssen
                                                                                17 hours ago












                                                                              • @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                                – recursive
                                                                                7 hours ago










                                                                              • Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                                – Kevin Cruijssen
                                                                                7 hours ago
















                                                                              This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                              – Kevin Cruijssen
                                                                              17 hours ago






                                                                              This seems to give incorrect results. For example, in the test case of your TIO it outputs -904 8491 478 62778 6458 -7738 -73 373 123 3120 0 instead of the intended 8491 -904 62778 478 -7738 6458 373 -73 3120 123 0 or 8491 -904 62778 478 -7738 6458 -73 373 3120 123 0. This test case is also used in the example, and to explain the rules, so I would take a look at that to understand it better. It seems you are only sorting by the single largest digit once, without any of the other rules?
                                                                              – Kevin Cruijssen
                                                                              17 hours ago














                                                                              @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                              – recursive
                                                                              7 hours ago




                                                                              @KevinCruijssen: Yes, my apologies. I mis-read the problem statement. I've adjusted the program to handle the stated requirements. This program is accepting the input integers as quoted strings. That's usually acceptable, but if not I might need to add another byte.
                                                                              – recursive
                                                                              7 hours ago












                                                                              Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                              – Kevin Cruijssen
                                                                              7 hours ago




                                                                              Looks good now, +1 from me. And yes, inputting as strings is completely fine.
                                                                              – Kevin Cruijssen
                                                                              7 hours ago










                                                                              up vote
                                                                              1
                                                                              down vote














                                                                              C (gcc), 114 111 bytes





                                                                              a;v(n){n=n<0?-n:n;for(a=0;n;n/=10)a|=1<<n%10;n=a;}c(int*a,int*b){a=v(*a)<v(*b);}f(a,n)int*a,n;{qsort(a,n,4,c);}


                                                                              Try it online!



                                                                              Explanation:



                                                                              f() uses qsort() to sort provided array in place. Using comparison function c() to compare numbers which evaluates numbers using v().
                                                                              v() calculates a higher number if bigger digits are present in parameter.



                                                                              [Edit 1]
                                                                              Improved by 3 bytes. 2 byte credits to Kevin. Thanks






                                                                              share|improve this answer























                                                                              • You can golf n>0 to n I think in your loop of your method v.
                                                                                – Kevin Cruijssen
                                                                                yesterday










                                                                              • Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                                – ceilingcat
                                                                                4 hours ago

















                                                                              up vote
                                                                              1
                                                                              down vote














                                                                              C (gcc), 114 111 bytes





                                                                              a;v(n){n=n<0?-n:n;for(a=0;n;n/=10)a|=1<<n%10;n=a;}c(int*a,int*b){a=v(*a)<v(*b);}f(a,n)int*a,n;{qsort(a,n,4,c);}


                                                                              Try it online!



                                                                              Explanation:



                                                                              f() uses qsort() to sort provided array in place. Using comparison function c() to compare numbers which evaluates numbers using v().
                                                                              v() calculates a higher number if bigger digits are present in parameter.



                                                                              [Edit 1]
                                                                              Improved by 3 bytes. 2 byte credits to Kevin. Thanks






                                                                              share|improve this answer























                                                                              • You can golf n>0 to n I think in your loop of your method v.
                                                                                – Kevin Cruijssen
                                                                                yesterday










                                                                              • Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                                – ceilingcat
                                                                                4 hours ago















                                                                              up vote
                                                                              1
                                                                              down vote










                                                                              up vote
                                                                              1
                                                                              down vote










                                                                              C (gcc), 114 111 bytes





                                                                              a;v(n){n=n<0?-n:n;for(a=0;n;n/=10)a|=1<<n%10;n=a;}c(int*a,int*b){a=v(*a)<v(*b);}f(a,n)int*a,n;{qsort(a,n,4,c);}


                                                                              Try it online!



                                                                              Explanation:



                                                                              f() uses qsort() to sort provided array in place. Using comparison function c() to compare numbers which evaluates numbers using v().
                                                                              v() calculates a higher number if bigger digits are present in parameter.



                                                                              [Edit 1]
                                                                              Improved by 3 bytes. 2 byte credits to Kevin. Thanks






                                                                              share|improve this answer















                                                                              C (gcc), 114 111 bytes





                                                                              a;v(n){n=n<0?-n:n;for(a=0;n;n/=10)a|=1<<n%10;n=a;}c(int*a,int*b){a=v(*a)<v(*b);}f(a,n)int*a,n;{qsort(a,n,4,c);}


                                                                              Try it online!



                                                                              Explanation:



                                                                              f() uses qsort() to sort provided array in place. Using comparison function c() to compare numbers which evaluates numbers using v().
                                                                              v() calculates a higher number if bigger digits are present in parameter.



                                                                              [Edit 1]
                                                                              Improved by 3 bytes. 2 byte credits to Kevin. Thanks







                                                                              share|improve this answer














                                                                              share|improve this answer



                                                                              share|improve this answer








                                                                              edited yesterday

























                                                                              answered yesterday









                                                                              GPS

                                                                              31115




                                                                              31115












                                                                              • You can golf n>0 to n I think in your loop of your method v.
                                                                                – Kevin Cruijssen
                                                                                yesterday










                                                                              • Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                                – ceilingcat
                                                                                4 hours ago




















                                                                              • You can golf n>0 to n I think in your loop of your method v.
                                                                                – Kevin Cruijssen
                                                                                yesterday










                                                                              • Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                                – ceilingcat
                                                                                4 hours ago


















                                                                              You can golf n>0 to n I think in your loop of your method v.
                                                                              – Kevin Cruijssen
                                                                              yesterday




                                                                              You can golf n>0 to n I think in your loop of your method v.
                                                                              – Kevin Cruijssen
                                                                              yesterday












                                                                              Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                              – ceilingcat
                                                                              4 hours ago






                                                                              Suggest for(a=0;n=abs(n); instead of n=n<?-n:n;for(a=0;n;
                                                                              – ceilingcat
                                                                              4 hours ago












                                                                              up vote
                                                                              1
                                                                              down vote














                                                                              Ruby, 55 bytes





                                                                              ->a{a.sort_by{|x|x.abs.digits.sort.reverse|}.reverse}


                                                                              Try it online!






                                                                              share|improve this answer

























                                                                                up vote
                                                                                1
                                                                                down vote














                                                                                Ruby, 55 bytes





                                                                                ->a{a.sort_by{|x|x.abs.digits.sort.reverse|}.reverse}


                                                                                Try it online!






                                                                                share|improve this answer























                                                                                  up vote
                                                                                  1
                                                                                  down vote










                                                                                  up vote
                                                                                  1
                                                                                  down vote










                                                                                  Ruby, 55 bytes





                                                                                  ->a{a.sort_by{|x|x.abs.digits.sort.reverse|}.reverse}


                                                                                  Try it online!






                                                                                  share|improve this answer













                                                                                  Ruby, 55 bytes





                                                                                  ->a{a.sort_by{|x|x.abs.digits.sort.reverse|}.reverse}


                                                                                  Try it online!







                                                                                  share|improve this answer












                                                                                  share|improve this answer



                                                                                  share|improve this answer










                                                                                  answered yesterday









                                                                                  Kirill L.

                                                                                  3,2161118




                                                                                  3,2161118






















                                                                                      up vote
                                                                                      1
                                                                                      down vote














                                                                                      Perl 5 -nl, 68 bytes





                                                                                      $a{eval"9876543210=~y/$_//dcr"}=$_}{say$a{$_}for reverse sort keys%a


                                                                                      Try it online!






                                                                                      share|improve this answer

























                                                                                        up vote
                                                                                        1
                                                                                        down vote














                                                                                        Perl 5 -nl, 68 bytes





                                                                                        $a{eval"9876543210=~y/$_//dcr"}=$_}{say$a{$_}for reverse sort keys%a


                                                                                        Try it online!






                                                                                        share|improve this answer























                                                                                          up vote
                                                                                          1
                                                                                          down vote










                                                                                          up vote
                                                                                          1
                                                                                          down vote










                                                                                          Perl 5 -nl, 68 bytes





                                                                                          $a{eval"9876543210=~y/$_//dcr"}=$_}{say$a{$_}for reverse sort keys%a


                                                                                          Try it online!






                                                                                          share|improve this answer













                                                                                          Perl 5 -nl, 68 bytes





                                                                                          $a{eval"9876543210=~y/$_//dcr"}=$_}{say$a{$_}for reverse sort keys%a


                                                                                          Try it online!







                                                                                          share|improve this answer












                                                                                          share|improve this answer



                                                                                          share|improve this answer










                                                                                          answered yesterday









                                                                                          Xcali

                                                                                          4,980520




                                                                                          4,980520






















                                                                                              up vote
                                                                                              1
                                                                                              down vote














                                                                                              C# (Visual C# Interactive Compiler), 84 bytes





                                                                                              x=>x.OrderByDescending(y=>String.Concat((y+"-").Distinct().OrderByDescending(z=>z)))


                                                                                              Try it online!



                                                                                              In C#, strings are considered "enumerables" of characters. I use this to my advantage by first converting each number to a string. LINQ is then leveraged to get the unique characters (digits) sorted in reverse order. I convert each sorted character array back into a string and use that as the sort key to order the whole list.



                                                                                              I was scratching my head with how to handle the hyphen for negative numbers. But as it turns out, adding the hyphen character to all of my numbers takes care of the tie breaker when one number has a superset of digits compared to the other.






                                                                                              share|improve this answer



























                                                                                                up vote
                                                                                                1
                                                                                                down vote














                                                                                                C# (Visual C# Interactive Compiler), 84 bytes





                                                                                                x=>x.OrderByDescending(y=>String.Concat((y+"-").Distinct().OrderByDescending(z=>z)))


                                                                                                Try it online!



                                                                                                In C#, strings are considered "enumerables" of characters. I use this to my advantage by first converting each number to a string. LINQ is then leveraged to get the unique characters (digits) sorted in reverse order. I convert each sorted character array back into a string and use that as the sort key to order the whole list.



                                                                                                I was scratching my head with how to handle the hyphen for negative numbers. But as it turns out, adding the hyphen character to all of my numbers takes care of the tie breaker when one number has a superset of digits compared to the other.






                                                                                                share|improve this answer

























                                                                                                  up vote
                                                                                                  1
                                                                                                  down vote










                                                                                                  up vote
                                                                                                  1
                                                                                                  down vote










                                                                                                  C# (Visual C# Interactive Compiler), 84 bytes





                                                                                                  x=>x.OrderByDescending(y=>String.Concat((y+"-").Distinct().OrderByDescending(z=>z)))


                                                                                                  Try it online!



                                                                                                  In C#, strings are considered "enumerables" of characters. I use this to my advantage by first converting each number to a string. LINQ is then leveraged to get the unique characters (digits) sorted in reverse order. I convert each sorted character array back into a string and use that as the sort key to order the whole list.



                                                                                                  I was scratching my head with how to handle the hyphen for negative numbers. But as it turns out, adding the hyphen character to all of my numbers takes care of the tie breaker when one number has a superset of digits compared to the other.






                                                                                                  share|improve this answer















                                                                                                  C# (Visual C# Interactive Compiler), 84 bytes





                                                                                                  x=>x.OrderByDescending(y=>String.Concat((y+"-").Distinct().OrderByDescending(z=>z)))


                                                                                                  Try it online!



                                                                                                  In C#, strings are considered "enumerables" of characters. I use this to my advantage by first converting each number to a string. LINQ is then leveraged to get the unique characters (digits) sorted in reverse order. I convert each sorted character array back into a string and use that as the sort key to order the whole list.



                                                                                                  I was scratching my head with how to handle the hyphen for negative numbers. But as it turns out, adding the hyphen character to all of my numbers takes care of the tie breaker when one number has a superset of digits compared to the other.







                                                                                                  share|improve this answer














                                                                                                  share|improve this answer



                                                                                                  share|improve this answer








                                                                                                  edited 19 hours ago

























                                                                                                  answered 20 hours ago









                                                                                                  dana

                                                                                                  1614




                                                                                                  1614






















                                                                                                      up vote
                                                                                                      1
                                                                                                      down vote














                                                                                                      Julia 1.0, 50 bytes





                                                                                                      x->sort(x,by=y->sort(unique([digits(-abs(y));1])))


                                                                                                      Try it online!






                                                                                                      share|improve this answer

























                                                                                                        up vote
                                                                                                        1
                                                                                                        down vote














                                                                                                        Julia 1.0, 50 bytes





                                                                                                        x->sort(x,by=y->sort(unique([digits(-abs(y));1])))


                                                                                                        Try it online!






                                                                                                        share|improve this answer























                                                                                                          up vote
                                                                                                          1
                                                                                                          down vote










                                                                                                          up vote
                                                                                                          1
                                                                                                          down vote










                                                                                                          Julia 1.0, 50 bytes





                                                                                                          x->sort(x,by=y->sort(unique([digits(-abs(y));1])))


                                                                                                          Try it online!






                                                                                                          share|improve this answer













                                                                                                          Julia 1.0, 50 bytes





                                                                                                          x->sort(x,by=y->sort(unique([digits(-abs(y));1])))


                                                                                                          Try it online!







                                                                                                          share|improve this answer












                                                                                                          share|improve this answer



                                                                                                          share|improve this answer










                                                                                                          answered 10 hours ago









                                                                                                          Kirill L.

                                                                                                          3,2161118




                                                                                                          3,2161118






















                                                                                                              up vote
                                                                                                              1
                                                                                                              down vote














                                                                                                              APL (Dyalog Extended), 19 bytes





                                                                                                              {⍵[⍒∪¨(∨'¯'~⍨⍕)¨⍵]}


                                                                                                              Try it online!



                                                                                                              Fixed at a cost of +2 bytes thanks to OP.






                                                                                                              share|improve this answer























                                                                                                              • I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                                – Kevin Cruijssen
                                                                                                                7 hours ago










                                                                                                              • Thanks, @KevinCruijssen
                                                                                                                – Zacharý
                                                                                                                3 hours ago















                                                                                                              up vote
                                                                                                              1
                                                                                                              down vote














                                                                                                              APL (Dyalog Extended), 19 bytes





                                                                                                              {⍵[⍒∪¨(∨'¯'~⍨⍕)¨⍵]}


                                                                                                              Try it online!



                                                                                                              Fixed at a cost of +2 bytes thanks to OP.






                                                                                                              share|improve this answer























                                                                                                              • I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                                – Kevin Cruijssen
                                                                                                                7 hours ago










                                                                                                              • Thanks, @KevinCruijssen
                                                                                                                – Zacharý
                                                                                                                3 hours ago













                                                                                                              up vote
                                                                                                              1
                                                                                                              down vote










                                                                                                              up vote
                                                                                                              1
                                                                                                              down vote










                                                                                                              APL (Dyalog Extended), 19 bytes





                                                                                                              {⍵[⍒∪¨(∨'¯'~⍨⍕)¨⍵]}


                                                                                                              Try it online!



                                                                                                              Fixed at a cost of +2 bytes thanks to OP.






                                                                                                              share|improve this answer















                                                                                                              APL (Dyalog Extended), 19 bytes





                                                                                                              {⍵[⍒∪¨(∨'¯'~⍨⍕)¨⍵]}


                                                                                                              Try it online!



                                                                                                              Fixed at a cost of +2 bytes thanks to OP.







                                                                                                              share|improve this answer














                                                                                                              share|improve this answer



                                                                                                              share|improve this answer








                                                                                                              edited 3 hours ago

























                                                                                                              answered 7 hours ago









                                                                                                              Zacharý

                                                                                                              5,09511035




                                                                                                              5,09511035












                                                                                                              • I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                                – Kevin Cruijssen
                                                                                                                7 hours ago










                                                                                                              • Thanks, @KevinCruijssen
                                                                                                                – Zacharý
                                                                                                                3 hours ago


















                                                                                                              • I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                                – Kevin Cruijssen
                                                                                                                7 hours ago










                                                                                                              • Thanks, @KevinCruijssen
                                                                                                                – Zacharý
                                                                                                                3 hours ago
















                                                                                                              I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                              – Kevin Cruijssen
                                                                                                              7 hours ago




                                                                                                              I think you are missing an 'uniquify' somewhere? If I try the example test case in your TIO for example, ¯7738 is placed before 478, but it should be after it: digits [8,7,4] come before digits [8,7,3].
                                                                                                              – Kevin Cruijssen
                                                                                                              7 hours ago












                                                                                                              Thanks, @KevinCruijssen
                                                                                                              – Zacharý
                                                                                                              3 hours ago




                                                                                                              Thanks, @KevinCruijssen
                                                                                                              – Zacharý
                                                                                                              3 hours ago


















                                                                                                               

                                                                                                              draft saved


                                                                                                              draft discarded



















































                                                                                                               


                                                                                                              draft saved


                                                                                                              draft discarded














                                                                                                              StackExchange.ready(
                                                                                                              function () {
                                                                                                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f175978%2fsort-by-largest-digits%23new-answer', 'question_page');
                                                                                                              }
                                                                                                              );

                                                                                                              Post as a guest















                                                                                                              Required, but never shown





















































                                                                                                              Required, but never shown














                                                                                                              Required, but never shown












                                                                                                              Required, but never shown







                                                                                                              Required, but never shown

































                                                                                                              Required, but never shown














                                                                                                              Required, but never shown












                                                                                                              Required, but never shown







                                                                                                              Required, but never shown







                                                                                                              Popular posts from this blog

                                                                                                              サソリ

                                                                                                              広島県道265号伴広島線

                                                                                                              Setup Asymptote in Texstudio