在最少的代码中创建,排序和打印100个随机整数的列表

The*_*edi 21 language-agnostic code-golf rosetta-stone

您可以编写的最少量的代码来创建,排序(升序)和打印100个随机正整数的列表?至少代码量我的意思是整个源文件中包含的字符,所以要缩小.

我有兴趣使用任何和所有编程语言来查看答案.让我们尝试为每种语言保留一个答案,编辑前一个以纠正或简化.如果你不能编辑,评论?

Jim*_*mmy 50

J中有10个字符:

/:~100?9e9
Run Code Online (Sandbox Code Playgroud)

说明:

/:~ 对数组进行排序(从技术上讲,将列表排序的排列向量应用于自身)

x ? limit 返回小于限制的x个随机数

9e9(9000000000)是一个合理的上限,可用3个字符表示.!9(9阶乘)较小,但需要少一个字符.


cla*_*awr 25

PHP中的xkcd样式:

for($i=0;$i<100;$i++) echo "4\n";
Run Code Online (Sandbox Code Playgroud)


adl*_*adl 17

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
Run Code Online (Sandbox Code Playgroud)


Pau*_*lin 8

我的条目:

echo enter a bunch of ints, hit control-D when done
cat - | sort -n
Run Code Online (Sandbox Code Playgroud)

或者,在评论中每个亚当:

echo enter a bunch of ints, hit control-D when done
sort -n
Run Code Online (Sandbox Code Playgroud)

  • 你甚至不需要"cat - "部分:只需从stdin读取排序! (3认同)

mac*_*nir 8

C#

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:完成程序.假设可以删除换行符和空格,但为了清楚起见,请保留:)

编辑:做得更短......我敢于有人改进这个......我已经试了一个小时.

编辑:我认为这有点短.

编辑:我认为这更短.呃,让我停下来.

编辑:再多一行,少一个字符.值得商榷...


说明

A[100] - 任何旧东西的数组 - 在这种情况下是A(它是一个很好的短名称).内容完全被忽略,它是数组的大小.

.Select(i=>r.Next()) - 生成可枚举的100个r.Next()值.

.OrderBy(i=>i) - 按顺序对前一个进行排序.

.ToList() - 将已排序的int枚举转换为List,因此我们可以使用ForEach.

ForEach(Console.WriteLine) - 调用Console.WriteLine 100次,传入列表中的每个整数值.


dre*_*ves 7

Mathematica,28个字符

Sort@RandomInteger[2^32, 100]
Run Code Online (Sandbox Code Playgroud)

这在{0,...,2 ^ 32}中给出了100个(有序的)随机整数.


Pål*_* GD 6

Common Lisp,int介于0和10000之间(没有上限,但你必须选择一个).

(sort (loop repeat 100 collect (random 10000)) #'<)
Run Code Online (Sandbox Code Playgroud)


Fer*_*tin 6

APL

13个字符:

a[?a?100?9e8]
Run Code Online (Sandbox Code Playgroud)


小智 5

红宝石的尝试:

p [].tap{|a|100.times{a<<rand(9e9)}}.sort
Run Code Online (Sandbox Code Playgroud)

(少了八个字符,但需要tapRuby 1.9 的红隼)

- 为红宝石1.8:

p (0..?d).map{rand 1<<32}.sort
Run Code Online (Sandbox Code Playgroud)

30个字符.(可以通过改回9e9来削减2,但有问题的评论说范围应该是MaxInt32.


小智 5

F#

let r = new System.Random();;

[ for i in 0..100 -> r.Next()] |> List.sort (fun x y -> x-y);;
Run Code Online (Sandbox Code Playgroud)


hie*_*ena 5

哈斯克尔:

import Random
import List
main=newStdGen>>=print.sort.(take 100).randomRs(0,2^32)
Run Code Online (Sandbox Code Playgroud)