Function for SortBy












2












$begingroup$


Let's say I have the following list



list = {{-1, 0, 0, 1}, {-1, 0, 1, 0}, {-1, 1, 0, 0}, {0, -1, 0, 1}, 
{0, -1, 1, 0}, {0, 0, -1, 1}, {0, 0, 1, -1}, {0, 1, -1, 0},
{0, 1, 0, -1}, {1, -1, 0, 0}, {1, 0, -1, 0}, {1, 0, 0, -1}}


What sort function (sfunc) used in SortBy [list, sfunc] can give me slist?



slist = {{0, 0, 1, -1}, {0, 0, -1, 1}, {0, -1, 0, 1}, {-1, 0, 0, 1}, 
{0, 1, 0, -1}, {0, 1, -1, 0}, {0, -1, 1, 0}, {-1, 0, 1, 0},
{1, 0, 0, -1}, {1, 0, -1, 0}, {1, -1, 0, 0}, {-1, 1, 0, 0}}


Few examples of sorted data



slist1 =  {{0, 0, 1, -2}, {0, 0, -2, 1}, {0, -2, 0, 1}, {-2, 0, 0, 1}, {0, 1, 0, -2}, {0, 1, -2, 0}, {0, -2, 1, 0}, {-2, 0, 1, 0}, {1, 0, 0, -2}, {1, 0, -2, 0}, {1, -2, 0, 0}, {-2, 1, 0, 0}, {0, 1, -1, -1}, {0, -1, 1, -1}, {0, -1, -1, 1}, {-1, 0, 1, -1}, {-1, 0, -1, 1},{-1, -1, 0, 1}, {1, 0, -1, -1}, {1, -1, 0, -1}, {1, -1, -1, 0}, {-1, 1, 0, -1}, {-1, 1, -1, 0}, {-1, -1, 1, 0}}


slist2 = {{0, 0, 2, -2}, {0, 0, -2, 2}, {0, -2, 0, 2}, {-2, 0, 0, 2}, {0, 1, 1, -2}, {0, 1, -2, 1}, {0, -2, 1, 1}, {-2, 0, 1, 1}, {0, 2, 0, -2}, {0, 2, -2, 0}, {0, -2, 2, 0}, {-2, 0, 2, 0}, {1, 0, 1, -2}, {1, 0, -2, 1}, {1, -2, 0, 1}, {-2, 1, 0, 1}, {1, 1, 0, -2}, {1, 1, -2, 0}, {1, -2, 1, 0}, {-2, 1, 1, 0}, {2, 0, 0, -2}, {2, 0, -2, 0}, {2, -2, 0, 0}, {-2, 2, 0, 0}, {0, 2, -1, -1}, {0, -1, 2, -1}, {0, -1, -1, 2}, {-1, 0, 2, -1}, {-1, 0, -1, 2}, {-1, -1, 0, 2}, {1, 1, -1, -1}, {1, -1, 1, -1}, {1, -1, -1, 1}, {-1, 1, 1, -1}, {-1, 1, -1, 1}, {-1, -1, 1, 1}, {2, 0, -1, -1}, {2, -1, 0, -1}, {2, -1, -1, 0}, {-1, 2, 0, -1}, {-1, 2, -1, 0}, {-1, -1, 2, 0}}









share|improve this question











$endgroup$








  • 4




    $begingroup$
    Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
    $endgroup$
    – David G. Stork
    Jan 4 at 19:01






  • 2




    $begingroup$
    Can you give some examples with more complicated data?
    $endgroup$
    – MikeY
    Jan 4 at 19:33






  • 1




    $begingroup$
    @MikeY I have added 2 more sorted sets.
    $endgroup$
    – Hubble07
    Jan 4 at 20:10










  • $begingroup$
    So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
    $endgroup$
    – MikeY
    Jan 5 at 20:05












  • $begingroup$
    @MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
    $endgroup$
    – Hubble07
    Jan 6 at 3:13
















2












$begingroup$


Let's say I have the following list



list = {{-1, 0, 0, 1}, {-1, 0, 1, 0}, {-1, 1, 0, 0}, {0, -1, 0, 1}, 
{0, -1, 1, 0}, {0, 0, -1, 1}, {0, 0, 1, -1}, {0, 1, -1, 0},
{0, 1, 0, -1}, {1, -1, 0, 0}, {1, 0, -1, 0}, {1, 0, 0, -1}}


What sort function (sfunc) used in SortBy [list, sfunc] can give me slist?



slist = {{0, 0, 1, -1}, {0, 0, -1, 1}, {0, -1, 0, 1}, {-1, 0, 0, 1}, 
{0, 1, 0, -1}, {0, 1, -1, 0}, {0, -1, 1, 0}, {-1, 0, 1, 0},
{1, 0, 0, -1}, {1, 0, -1, 0}, {1, -1, 0, 0}, {-1, 1, 0, 0}}


Few examples of sorted data



slist1 =  {{0, 0, 1, -2}, {0, 0, -2, 1}, {0, -2, 0, 1}, {-2, 0, 0, 1}, {0, 1, 0, -2}, {0, 1, -2, 0}, {0, -2, 1, 0}, {-2, 0, 1, 0}, {1, 0, 0, -2}, {1, 0, -2, 0}, {1, -2, 0, 0}, {-2, 1, 0, 0}, {0, 1, -1, -1}, {0, -1, 1, -1}, {0, -1, -1, 1}, {-1, 0, 1, -1}, {-1, 0, -1, 1},{-1, -1, 0, 1}, {1, 0, -1, -1}, {1, -1, 0, -1}, {1, -1, -1, 0}, {-1, 1, 0, -1}, {-1, 1, -1, 0}, {-1, -1, 1, 0}}


slist2 = {{0, 0, 2, -2}, {0, 0, -2, 2}, {0, -2, 0, 2}, {-2, 0, 0, 2}, {0, 1, 1, -2}, {0, 1, -2, 1}, {0, -2, 1, 1}, {-2, 0, 1, 1}, {0, 2, 0, -2}, {0, 2, -2, 0}, {0, -2, 2, 0}, {-2, 0, 2, 0}, {1, 0, 1, -2}, {1, 0, -2, 1}, {1, -2, 0, 1}, {-2, 1, 0, 1}, {1, 1, 0, -2}, {1, 1, -2, 0}, {1, -2, 1, 0}, {-2, 1, 1, 0}, {2, 0, 0, -2}, {2, 0, -2, 0}, {2, -2, 0, 0}, {-2, 2, 0, 0}, {0, 2, -1, -1}, {0, -1, 2, -1}, {0, -1, -1, 2}, {-1, 0, 2, -1}, {-1, 0, -1, 2}, {-1, -1, 0, 2}, {1, 1, -1, -1}, {1, -1, 1, -1}, {1, -1, -1, 1}, {-1, 1, 1, -1}, {-1, 1, -1, 1}, {-1, -1, 1, 1}, {2, 0, -1, -1}, {2, -1, 0, -1}, {2, -1, -1, 0}, {-1, 2, 0, -1}, {-1, 2, -1, 0}, {-1, -1, 2, 0}}









share|improve this question











$endgroup$








  • 4




    $begingroup$
    Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
    $endgroup$
    – David G. Stork
    Jan 4 at 19:01






  • 2




    $begingroup$
    Can you give some examples with more complicated data?
    $endgroup$
    – MikeY
    Jan 4 at 19:33






  • 1




    $begingroup$
    @MikeY I have added 2 more sorted sets.
    $endgroup$
    – Hubble07
    Jan 4 at 20:10










  • $begingroup$
    So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
    $endgroup$
    – MikeY
    Jan 5 at 20:05












  • $begingroup$
    @MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
    $endgroup$
    – Hubble07
    Jan 6 at 3:13














2












2








2





$begingroup$


Let's say I have the following list



list = {{-1, 0, 0, 1}, {-1, 0, 1, 0}, {-1, 1, 0, 0}, {0, -1, 0, 1}, 
{0, -1, 1, 0}, {0, 0, -1, 1}, {0, 0, 1, -1}, {0, 1, -1, 0},
{0, 1, 0, -1}, {1, -1, 0, 0}, {1, 0, -1, 0}, {1, 0, 0, -1}}


What sort function (sfunc) used in SortBy [list, sfunc] can give me slist?



slist = {{0, 0, 1, -1}, {0, 0, -1, 1}, {0, -1, 0, 1}, {-1, 0, 0, 1}, 
{0, 1, 0, -1}, {0, 1, -1, 0}, {0, -1, 1, 0}, {-1, 0, 1, 0},
{1, 0, 0, -1}, {1, 0, -1, 0}, {1, -1, 0, 0}, {-1, 1, 0, 0}}


Few examples of sorted data



slist1 =  {{0, 0, 1, -2}, {0, 0, -2, 1}, {0, -2, 0, 1}, {-2, 0, 0, 1}, {0, 1, 0, -2}, {0, 1, -2, 0}, {0, -2, 1, 0}, {-2, 0, 1, 0}, {1, 0, 0, -2}, {1, 0, -2, 0}, {1, -2, 0, 0}, {-2, 1, 0, 0}, {0, 1, -1, -1}, {0, -1, 1, -1}, {0, -1, -1, 1}, {-1, 0, 1, -1}, {-1, 0, -1, 1},{-1, -1, 0, 1}, {1, 0, -1, -1}, {1, -1, 0, -1}, {1, -1, -1, 0}, {-1, 1, 0, -1}, {-1, 1, -1, 0}, {-1, -1, 1, 0}}


slist2 = {{0, 0, 2, -2}, {0, 0, -2, 2}, {0, -2, 0, 2}, {-2, 0, 0, 2}, {0, 1, 1, -2}, {0, 1, -2, 1}, {0, -2, 1, 1}, {-2, 0, 1, 1}, {0, 2, 0, -2}, {0, 2, -2, 0}, {0, -2, 2, 0}, {-2, 0, 2, 0}, {1, 0, 1, -2}, {1, 0, -2, 1}, {1, -2, 0, 1}, {-2, 1, 0, 1}, {1, 1, 0, -2}, {1, 1, -2, 0}, {1, -2, 1, 0}, {-2, 1, 1, 0}, {2, 0, 0, -2}, {2, 0, -2, 0}, {2, -2, 0, 0}, {-2, 2, 0, 0}, {0, 2, -1, -1}, {0, -1, 2, -1}, {0, -1, -1, 2}, {-1, 0, 2, -1}, {-1, 0, -1, 2}, {-1, -1, 0, 2}, {1, 1, -1, -1}, {1, -1, 1, -1}, {1, -1, -1, 1}, {-1, 1, 1, -1}, {-1, 1, -1, 1}, {-1, -1, 1, 1}, {2, 0, -1, -1}, {2, -1, 0, -1}, {2, -1, -1, 0}, {-1, 2, 0, -1}, {-1, 2, -1, 0}, {-1, -1, 2, 0}}









share|improve this question











$endgroup$




Let's say I have the following list



list = {{-1, 0, 0, 1}, {-1, 0, 1, 0}, {-1, 1, 0, 0}, {0, -1, 0, 1}, 
{0, -1, 1, 0}, {0, 0, -1, 1}, {0, 0, 1, -1}, {0, 1, -1, 0},
{0, 1, 0, -1}, {1, -1, 0, 0}, {1, 0, -1, 0}, {1, 0, 0, -1}}


What sort function (sfunc) used in SortBy [list, sfunc] can give me slist?



slist = {{0, 0, 1, -1}, {0, 0, -1, 1}, {0, -1, 0, 1}, {-1, 0, 0, 1}, 
{0, 1, 0, -1}, {0, 1, -1, 0}, {0, -1, 1, 0}, {-1, 0, 1, 0},
{1, 0, 0, -1}, {1, 0, -1, 0}, {1, -1, 0, 0}, {-1, 1, 0, 0}}


Few examples of sorted data



slist1 =  {{0, 0, 1, -2}, {0, 0, -2, 1}, {0, -2, 0, 1}, {-2, 0, 0, 1}, {0, 1, 0, -2}, {0, 1, -2, 0}, {0, -2, 1, 0}, {-2, 0, 1, 0}, {1, 0, 0, -2}, {1, 0, -2, 0}, {1, -2, 0, 0}, {-2, 1, 0, 0}, {0, 1, -1, -1}, {0, -1, 1, -1}, {0, -1, -1, 1}, {-1, 0, 1, -1}, {-1, 0, -1, 1},{-1, -1, 0, 1}, {1, 0, -1, -1}, {1, -1, 0, -1}, {1, -1, -1, 0}, {-1, 1, 0, -1}, {-1, 1, -1, 0}, {-1, -1, 1, 0}}


slist2 = {{0, 0, 2, -2}, {0, 0, -2, 2}, {0, -2, 0, 2}, {-2, 0, 0, 2}, {0, 1, 1, -2}, {0, 1, -2, 1}, {0, -2, 1, 1}, {-2, 0, 1, 1}, {0, 2, 0, -2}, {0, 2, -2, 0}, {0, -2, 2, 0}, {-2, 0, 2, 0}, {1, 0, 1, -2}, {1, 0, -2, 1}, {1, -2, 0, 1}, {-2, 1, 0, 1}, {1, 1, 0, -2}, {1, 1, -2, 0}, {1, -2, 1, 0}, {-2, 1, 1, 0}, {2, 0, 0, -2}, {2, 0, -2, 0}, {2, -2, 0, 0}, {-2, 2, 0, 0}, {0, 2, -1, -1}, {0, -1, 2, -1}, {0, -1, -1, 2}, {-1, 0, 2, -1}, {-1, 0, -1, 2}, {-1, -1, 0, 2}, {1, 1, -1, -1}, {1, -1, 1, -1}, {1, -1, -1, 1}, {-1, 1, 1, -1}, {-1, 1, -1, 1}, {-1, -1, 1, 1}, {2, 0, -1, -1}, {2, -1, 0, -1}, {2, -1, -1, 0}, {-1, 2, 0, -1}, {-1, 2, -1, 0}, {-1, -1, 2, 0}}






list-manipulation sorting






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 4 at 20:06







Hubble07

















asked Jan 4 at 18:59









Hubble07Hubble07

2,990721




2,990721








  • 4




    $begingroup$
    Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
    $endgroup$
    – David G. Stork
    Jan 4 at 19:01






  • 2




    $begingroup$
    Can you give some examples with more complicated data?
    $endgroup$
    – MikeY
    Jan 4 at 19:33






  • 1




    $begingroup$
    @MikeY I have added 2 more sorted sets.
    $endgroup$
    – Hubble07
    Jan 4 at 20:10










  • $begingroup$
    So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
    $endgroup$
    – MikeY
    Jan 5 at 20:05












  • $begingroup$
    @MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
    $endgroup$
    – Hubble07
    Jan 6 at 3:13














  • 4




    $begingroup$
    Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
    $endgroup$
    – David G. Stork
    Jan 4 at 19:01






  • 2




    $begingroup$
    Can you give some examples with more complicated data?
    $endgroup$
    – MikeY
    Jan 4 at 19:33






  • 1




    $begingroup$
    @MikeY I have added 2 more sorted sets.
    $endgroup$
    – Hubble07
    Jan 4 at 20:10










  • $begingroup$
    So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
    $endgroup$
    – MikeY
    Jan 5 at 20:05












  • $begingroup$
    @MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
    $endgroup$
    – Hubble07
    Jan 6 at 3:13








4




4




$begingroup$
Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
$endgroup$
– David G. Stork
Jan 4 at 19:01




$begingroup$
Explain the core idea behind your sorted list. It certainly isn't clear what you're seeking.
$endgroup$
– David G. Stork
Jan 4 at 19:01




2




2




$begingroup$
Can you give some examples with more complicated data?
$endgroup$
– MikeY
Jan 4 at 19:33




$begingroup$
Can you give some examples with more complicated data?
$endgroup$
– MikeY
Jan 4 at 19:33




1




1




$begingroup$
@MikeY I have added 2 more sorted sets.
$endgroup$
– Hubble07
Jan 4 at 20:10




$begingroup$
@MikeY I have added 2 more sorted sets.
$endgroup$
– Hubble07
Jan 4 at 20:10












$begingroup$
So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
$endgroup$
– MikeY
Jan 5 at 20:05






$begingroup$
So if you sort your data like this, it can probably be counted and therefore indexed in closed form.
$endgroup$
– MikeY
Jan 5 at 20:05














$begingroup$
@MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
$endgroup$
– Hubble07
Jan 6 at 3:13




$begingroup$
@MikeY Yes I have decided to use this sorting. I have edited by bounty question. If you have time then you could answer that, then I can gladly give you the bounty.
$endgroup$
– Hubble07
Jan 6 at 3:13










1 Answer
1






active

oldest

votes


















8












$begingroup$

EDITED TO ADD A SORT CRITERION

For the data sets, you are sorting on




  1. the number of negative numbers first, then

  2. the subset of just the nonnegative elements (using canonical ordering for lists), then

  3. the set gained when you replace negative terms with a '1' and nonnegative with '0'


  4. The subset of just the negative elements (using canonical ordering)



     funkySort[list_]:= SortBy[list,{
    Count[#, _?Negative] &,
    Select[#, NonNegative] &,
    Negative,
    Select[#, Negative] &
    }]


    slist == funkySort[slist[[RandomPermutation[Length[slist]]]]]
    slist1 == funkySort[slist1[[RandomPermutation[Length[slist1]]]]]
    slist2 == funkySort[slist2[[RandomPermutation[Length[slist2]]]]]




True



True



True







share|improve this answer











$endgroup$













  • $begingroup$
    But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
    $endgroup$
    – Hubble07
    Jan 5 at 14:25










  • $begingroup$
    Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
    $endgroup$
    – MikeY
    Jan 5 at 17:00












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.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
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',
autoActivateHeartbeat: false,
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%2fmathematica.stackexchange.com%2fquestions%2f188839%2ffunction-for-sortby%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









8












$begingroup$

EDITED TO ADD A SORT CRITERION

For the data sets, you are sorting on




  1. the number of negative numbers first, then

  2. the subset of just the nonnegative elements (using canonical ordering for lists), then

  3. the set gained when you replace negative terms with a '1' and nonnegative with '0'


  4. The subset of just the negative elements (using canonical ordering)



     funkySort[list_]:= SortBy[list,{
    Count[#, _?Negative] &,
    Select[#, NonNegative] &,
    Negative,
    Select[#, Negative] &
    }]


    slist == funkySort[slist[[RandomPermutation[Length[slist]]]]]
    slist1 == funkySort[slist1[[RandomPermutation[Length[slist1]]]]]
    slist2 == funkySort[slist2[[RandomPermutation[Length[slist2]]]]]




True



True



True







share|improve this answer











$endgroup$













  • $begingroup$
    But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
    $endgroup$
    – Hubble07
    Jan 5 at 14:25










  • $begingroup$
    Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
    $endgroup$
    – MikeY
    Jan 5 at 17:00
















8












$begingroup$

EDITED TO ADD A SORT CRITERION

For the data sets, you are sorting on




  1. the number of negative numbers first, then

  2. the subset of just the nonnegative elements (using canonical ordering for lists), then

  3. the set gained when you replace negative terms with a '1' and nonnegative with '0'


  4. The subset of just the negative elements (using canonical ordering)



     funkySort[list_]:= SortBy[list,{
    Count[#, _?Negative] &,
    Select[#, NonNegative] &,
    Negative,
    Select[#, Negative] &
    }]


    slist == funkySort[slist[[RandomPermutation[Length[slist]]]]]
    slist1 == funkySort[slist1[[RandomPermutation[Length[slist1]]]]]
    slist2 == funkySort[slist2[[RandomPermutation[Length[slist2]]]]]




True



True



True







share|improve this answer











$endgroup$













  • $begingroup$
    But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
    $endgroup$
    – Hubble07
    Jan 5 at 14:25










  • $begingroup$
    Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
    $endgroup$
    – MikeY
    Jan 5 at 17:00














8












8








8





$begingroup$

EDITED TO ADD A SORT CRITERION

For the data sets, you are sorting on




  1. the number of negative numbers first, then

  2. the subset of just the nonnegative elements (using canonical ordering for lists), then

  3. the set gained when you replace negative terms with a '1' and nonnegative with '0'


  4. The subset of just the negative elements (using canonical ordering)



     funkySort[list_]:= SortBy[list,{
    Count[#, _?Negative] &,
    Select[#, NonNegative] &,
    Negative,
    Select[#, Negative] &
    }]


    slist == funkySort[slist[[RandomPermutation[Length[slist]]]]]
    slist1 == funkySort[slist1[[RandomPermutation[Length[slist1]]]]]
    slist2 == funkySort[slist2[[RandomPermutation[Length[slist2]]]]]




True



True



True







share|improve this answer











$endgroup$



EDITED TO ADD A SORT CRITERION

For the data sets, you are sorting on




  1. the number of negative numbers first, then

  2. the subset of just the nonnegative elements (using canonical ordering for lists), then

  3. the set gained when you replace negative terms with a '1' and nonnegative with '0'


  4. The subset of just the negative elements (using canonical ordering)



     funkySort[list_]:= SortBy[list,{
    Count[#, _?Negative] &,
    Select[#, NonNegative] &,
    Negative,
    Select[#, Negative] &
    }]


    slist == funkySort[slist[[RandomPermutation[Length[slist]]]]]
    slist1 == funkySort[slist1[[RandomPermutation[Length[slist1]]]]]
    slist2 == funkySort[slist2[[RandomPermutation[Length[slist2]]]]]




True



True



True








share|improve this answer














share|improve this answer



share|improve this answer








edited Jan 6 at 18:48









J. M. is away

98.9k10311467




98.9k10311467










answered Jan 4 at 19:52









MikeYMikeY

3,768916




3,768916












  • $begingroup$
    But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
    $endgroup$
    – Hubble07
    Jan 5 at 14:25










  • $begingroup$
    Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
    $endgroup$
    – MikeY
    Jan 5 at 17:00


















  • $begingroup$
    But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
    $endgroup$
    – Hubble07
    Jan 5 at 14:25










  • $begingroup$
    Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
    $endgroup$
    – MikeY
    Jan 5 at 17:00
















$begingroup$
But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
$endgroup$
– Hubble07
Jan 5 at 14:25




$begingroup$
But slist != funkySort[list] . Are you sure this works. It doesn't seem to work on my system. Do you get really get slist1 and slist2 when your function is applied to any random ordering of those lists.
$endgroup$
– Hubble07
Jan 5 at 14:25












$begingroup$
Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
$endgroup$
– MikeY
Jan 5 at 17:00




$begingroup$
Oops, copied over the wrong funkySort[ ] from my notebook. Fixed it...
$endgroup$
– MikeY
Jan 5 at 17:00


















draft saved

draft discarded




















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f188839%2ffunction-for-sortby%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

Wiesbaden

Marschland

Dieringhausen