您可以编写的最少量的代码来创建,排序(升序)和打印100个随机正整数的列表?至少代码量我的意思是整个源文件中包含的字符,所以要缩小.
我有兴趣使用任何和所有编程语言来查看答案.让我们尝试为每种语言保留一个答案,编辑前一个以纠正或简化.如果你不能编辑,评论?
J中有10个字符:
/:~100?9e9
说明:
/:~
对数组进行排序(从技术上讲,将列表排序的排列向量应用于自身)
x ? limit
返回小于限制的x个随机数
9e9
(9000000000)是一个合理的上限,可用3个字符表示.!9(9阶乘)较小,但需要少一个字符.
PHP中的xkcd样式:
for($i=0;$i<100;$i++) echo "4\n";
Linux,命令行:
% od -dAn -N40 /dev/random | tr ' ' '\n' | sort -nu 4959 6754 8133 10985 11121 14413 17335 20754 21317 30008 30381 33494 34935 41210 41417 43054 48254 51279 54055 55306
我的条目:
echo enter a bunch of ints, hit control-D when done cat - | sort -n
或者,在评论中每个亚当:
echo enter a bunch of ints, hit control-D when done sort -n
using System; using System.Linq; class A { static void Main() { var r=new Random(); new A[100].Select(i=>r.Next()).OrderBy(i=>i).ToList().ForEach(Console.WriteLine); } }
编辑:完成程序.假设可以删除换行符和空格,但为了清楚起见,请保留:)
编辑:做得更短......我敢于有人改进这个......我已经试了一个小时.
编辑:我认为这有点短.
编辑:我认为这更短.呃,让我停下来.
编辑:再多一行,少一个字符.值得商榷...
A[100]
- 任何旧东西的数组 - 在这种情况下是A(它是一个很好的短名称).内容完全被忽略,它是数组的大小.
.Select(i=>r.Next())
- 生成可枚举的100个r.Next()值.
.OrderBy(i=>i)
- 按顺序对前一个进行排序.
.ToList()
- 将已排序的int枚举转换为List,因此我们可以使用ForEach.
ForEach(Console.WriteLine)
- 调用Console.WriteLine 100次,传入列表中的每个整数值.
Sort@RandomInteger[2^32, 100]
这在{0,...,2 ^ 32}中给出了100个(有序的)随机整数.
Common Lisp,int介于0和10000之间(没有上限,但你必须选择一个).
(sort (loop repeat 100 collect (random 10000)) #'<)
13个字符:
a[?a?100?9e8]
红宝石的尝试:
p [].tap{|a|100.times{a<(少了八个字符,但需要
tap
Ruby 1.9 的红隼)- 为红宝石1.8:
p (0..?d).map{rand 1<<32}.sort30个字符.(可以通过改回9e9来削减2,但有问题的评论说范围应该是MaxInt32.
10> 小智..:F#
let r = new System.Random();; [ for i in 0..100 -> r.Next()] |> List.sort (fun x y -> x-y);;
11> hiena..:哈斯克尔:
import Random import List main=newStdGen>>=print.sort.(take 100).randomRs(0,2^32)