给定一个包含至少3个不同条目的正整数列表,请输出该列表的排列,该排列未按升序或降序排序。
例子
1,2,3 -> 2,1,3 or 3,1,2 or 1,3,2 or 2,3,1
1,2,3,3 -> 2,1,3,3 or 3,1,2,3 or 1,3,2,3 etc..
感谢@Arnauld和@NoOneIsHere的标题!
[2,[1,3]]
。
给定一个包含至少3个不同条目的正整数列表,请输出该列表的排列,该排列未按升序或降序排序。
1,2,3 -> 2,1,3 or 3,1,2 or 1,3,2 or 2,3,1
1,2,3,3 -> 2,1,3,3 or 3,1,2,3 or 1,3,2,3 etc..
感谢@Arnauld和@NoOneIsHere的标题!
[2,[1,3]]
。
Answers:
a=>[a.sort((x,y)=>x-y).pop(),...a]
以升序对数组进行排序,弹出最后一个元素,并将其用作新数组的第一个元素。然后解构原始阵列的其余元件到新的阵列(在JS,既sort
和pop
修改原始数组)。
o.innerText=(f=
a=>[a.sort((x,y)=>x-y).pop(),...a]
)(i.value=[1,2,3]);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>
a.sort()
?
sort
方法按字典顺序排序。
Ṣṙ-
也有效(只是想说那;您可能知道:P)
Ṣṙ1
只有三个字节?在UTF-8中,它是7个字节。
min
末尾保存一个字节。
Prompt A
SortA(LA
max(LA→B
dim(LA)-1→dim(LA
augment({B},LA
提示输入格式{1,2,3,4}
。
TI-Basic是一种令牌化语言,此处使用的所有令牌均为一字节。
说明:
Prompt A # 3 bytes, store user input in LA
SortA(LA # 4 bytes, sort LA ascending
max(LA→B # 6 bytes, save the last value in the sorted list to B
dim(LA)-1→dim(LA # 11 bytes, remove the last value from LA
augment({B},LA # 7 bytes, prepend B to LA and implicitly print the result
l->{l.sort(null);l.add(l.remove(0));}
@Nevay -31字节(忘记了Java 8的List#sort(Comparator)
方法..)
修改input- ArrayList
,而不是返回一个新的。
说明:
l->{ // Method with ArrayList parameter and no return-type
l.sort(null); // Sort the input-list (no need for a Comparator, thus null)
l.add(l.remove(0)); // Remove the first element, and add it last
} // End of method
l->{l.sort(null);java.util.Collections.rotate(l,1);}
用来保存16个字节。
l->{l.sort(null);l.add(l.remove(0));}
用来保存31个字节(要求使用大小不固定的列表)。
add
和remove
必须执行; 对于固定大小的列表,没有什么说的。。。凯文·克鲁伊森(Kevin Cruijssen),鉴于先前的评论中有更好的选择,我将在+1之前等待编辑。
import Data.List
f(a:b)=b++[a];f.sort
使用视图模式在输入列表的排序版本的开头匹配,然后将列表的第一项附加到其余列表的末尾。
视图模式不值得。对列表进行排序,取下头部,然后将其附加到末尾。在这种情况下,事实证明,紧凑键入的天真的解决方案是最好的。
-XViewPatterns
。计算这些标准方法f(a:b)=b++[a];f.sort
更短。
{first {![<=]($_)&&![>=] $_},.permutations}
*.sort[1..*,0].flat
请注意,这[1..*,0]
将导致((2,3),1)
,因此.flat
可以将其转换为(2,3,1)
RotateLeft@*Sort
.>SQ1
SQ
-排序输入列表
.>SQ1
-将输入列表循环旋转1
对于短数组语法,需要PHP 5.4或更高版本。
sort($a=&$argv);print_r([array_pop($a)]+$a);
排序参数,将第0个参数替换为删除的最后一个参数,打印。
运行-nr
或在线尝试。
"-"
如果使用调用PHP ,则第0个参数是脚本文件名-r
。"-"
作为字符串与其他参数进行比较,由于ord("-")==45
,它小于任何数字。数字本身(尽管是字符串)将与数字进行比较:"12" > "2"
。
php -nr '<code>' 3 4 2 5 1
并sort($a=&$argv)
导致$a=["-","1","2","3","4","5"]
→
[array_pop($a)]+$a
is [0=>"5"]+[0=>"-",1=>"1",2=>"2",3=>"3",4=>"4"]
,
结果为[0=>"5",1=>"1",2=>"2",3=>"3",4=>"4"]
。
+
运算符不追加,而是合并(无需重新排序索引;但这并不重要)。重要的一点是$a
指向$argv
并$argv[0]
包含脚本的文件名,参数从索引1开始。我扩展了描述。谢谢你的问题。