21

100 個のランダムな正の整数のリストを作成、並べ替え (昇順)、出力するために記述できるコードの最小量はどれくらいですか? 最小量のコードとは、ソース ファイル全体に含まれる文字を意味するので、縮小化を行います。

ありとあらゆるプログラミング言語を使って答えを見たいと思っています。言語ごとに 1 つの回答を保持し、前のものを編集して修正または単純化してみましょう。編集できない場合は、コメントしてください。

4

63 に答える 63

50

Jの10文字:

/:~100?9e9

説明:

/:~ 配列をソートします (技術的には、リストのソートされた順列ベクトルをそれ自体に適用します)

x ? limit制限未満の x 個の乱数を返します

9e9(9000000000) は 3 文字で表現できる妥当な上限です。!9 (9 階乗) は小さくなりますが、必要な文字が 1 文字少なくなります。

于 2008-12-08T23:05:21.233 に答える
25

PHP でのxkcd スタイル:

for($i=0;$i<100;$i++) echo "4\n";
于 2008-12-23T22:44:45.867 に答える
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
于 2008-12-08T21:16:36.990 に答える
8

私のエントリ:

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
于 2008-12-08T21:09:54.057 に答える
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);
    }
}

EDIT : 完全なプログラムを作成しました。改行とスペースを削除できると仮定していますが、わかりやすくするために残しています:)

編集:さらに短くしました....誰かがこれを改善することを敢えてします...私は1時間試しました。

編集:少し短いと思います。

編集:それはさらに短いと思います。うーん、やめさせて。

EDIT : もう 1 行、1 文字少なくなります。議論の余地...


説明

A[100]- 古いものの配列 - この場合は A です (短い名前です)。内容は完全に無視されます。重要なのは配列のサイズです。

.Select(i=>r.Next())- r.Next() の 100 個の列挙可能な値を生成します。

.OrderBy(i=>i)- 前のものを順番に並べ替えます。

.ToList()- int の並べ替えられた列挙型をリストに変換して、ForEach を使用できるようにします。

ForEach(Console.WriteLine)- Console.WriteLine を 100 回呼び出し、リスト内の各整数値を渡します。

于 2008-12-08T21:59:58.543 に答える
7

Mathematica、28文字

Sort@RandomInteger[2^32, 100]

これにより、{0,...,2^32} で 100 個の (ソートされた) ランダムな整数が得られます。

于 2009-01-04T07:32:47.080 に答える
6

Common Lisp、0 から 10000 の間の int (上限はありませんが、いずれかを選択する必要があります)。

(sort (loop repeat 100 collect (random 10000)) #'<)
于 2008-12-08T21:45:19.180 に答える
5

Haskell:

import Random
import List
main=newStdGen>>=print.sort.(take 100).randomRs(0,2^32)
于 2009-07-31T17:22:52.740 に答える
5

F#

let r = new System.Random();;

[ for i in 0..100 -> r.Next()] |> List.sort (fun x y -> x-y);;
于 2008-12-09T14:24:17.777 に答える
5

ルビーでの試み:

p [].tap{|a|100.times{a<<rand(9e9)}}.sort

(8 文字少ないがtap、Ruby 1.9 の kestrel が必要)

-ルビー1.8の場合:

p (0..?d).map{rand 1<<32}.sort

30文字。(9e9 に戻すことで 2 ずつトリムできますが、問題のコメントによると、範囲は MaxInt32.

于 2008-12-08T23:16:56.780 に答える
4

BASH の場合:

for i in `seq 100`; do echo $RANDOM; done | sort -n
于 2008-12-08T21:59:01.133 に答える
3

Javascript: ( JSDBまたはシェルモードで使用されるMozilla のRhino経由)

x=[];for(i=0;i<100;i++){x.push((Math.random()+"").slice(-8));};x.sort();

完全なテスト実行は次のとおりです。

c:\>java org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 1 2008 03 06
js> x=[];for(i=0;i<100;i++){x.push((Math.random()+"").slice(-8));};x.sort();
01499626,02403545,02800791,03320788,05748566,07789074,08998522,09040705,09115996,09379424,10940262,11743066,13806434,14113139,14336231,14382956,15581655,16573104,20043435,21234726,21473566,22078813,22378284,22884394,24241003,25108788,25257883,26286262,28212011,29596596,32566749,33329346,33655759,34344559,34666071,35159796,35310143,37233867,37490513,37685305,37845078,38525696,38589046,40538689,41813718,43116428,43658007,43790468,43791145,43809742,44984312,45115129,47283875,47415222,47434661,54777726,55394134,55798732,55969764,56654976,58329996,59079425,59841404,60161896,60185483,60747905,63075065,69348186,69376617,69680882,70145733,70347987,72551703,73122949,73507129,73609605,73979604,75183751,82218859,83285119,85332552,85570024,85968046,86236137,86700519,86974075,87232105,87839338,88577428,90559652,90587374,90916279,90934951,94311632,94422663,94788023,96394742,97573323,98403455,99465016

編集:「プッシュ」するのではなく、直接代入することで数文字短縮できるようです。{} は必要ありません:

x=[];for(i=0;i<100;i++)x[i]=(Math.random()+"").slice(-8);x.sort();
于 2008-12-09T13:44:14.627 に答える
3

APL (インタラクティブ):

0 から 99 (または 1 から 100、ワークスペースのインデックスの原点を 0 に設定しているか 1 に設定しているかによって異なります) の数字を一意にする場合は、次のように 8 文字を使用します。

↑100?100

一意性を気にしない場合は、次のようにします (9 文字):

↑?100ρ100

より大きな数が必要ですか?各行の 2 番目の 100 を上限 N に置き換えるだけで、乱数は 0 ~ N-1 (インデックスの原点が 1 に設定されている場合は 1 ~ N) の範囲になります。

インデックスの原点の設定に関係なく、数値の範囲が 0 ~ 99 (または、上限を大きくする場合は 0 ~ N-1) であることを保証する場合は、上記のいずれかの行をかっこで囲み、追加します。

-⎕IO

最後まで (⎕ は APL のクワッド文字です)。これで6キャラ追加です。

于 2008-12-09T03:34:55.667 に答える
3

パワーシェル :

35 文字 (PowerShell Community Extensions を使用して を置き換えますGet-Random):

0..99|%{[int]((random)*10000)}|sort

20 文字 (プレーン PowerShell v2):

0..99|%{random}|sort
于 2009-08-03T15:34:33.170 に答える
3

100個のランダムでソートされた整数を出力するPython

import random,sys
print sorted(random.randint(1,sys.maxint)for x in range(100))

@Adamはすでに私を打ち負かしましたが、randint()とsys.maxintを使用することは、とにかく投稿するには十分に異なると思いました。

于 2008-12-08T21:20:19.747 に答える
2

グルーヴィー:

r=new Random()
List l=[]
100.times{ l << r.nextInt(1000) }
l.sort().each { println it }
于 2008-12-08T23:24:02.710 に答える
2

クロージャ

(defn gen-rands []
(sort (take 100 (repeatedly #(rand-int Integer/MAX_VALUE)))))
于 2008-12-23T22:40:17.763 に答える
2

nrich のバージョンより完全に 8 バイト短い Perl は、「use warnings;」の下で実行されます。:)

perl -wle "$,=' ';print sort map {int rand 100} 1..100"
于 2008-12-08T21:38:21.720 に答える
2

OCaml では:

List.sort compare (let rec r = function 0 -> [] | a -> (Random.int 9999)::(r (a-1)) in r 100);;

編集: OCaml では、トップレベルでそれを入力するとリストが出力されますが、リストを stdout に出力したい場合:

List.iter (fun x -> Printf.printf "%d\n" x) (List.sort compare (let rec r = function 0 -> [] | a -> (Random.int 9999)::(r (a-1)) in r 100));;
于 2009-07-31T17:43:41.623 に答える
2

ジャワ:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

class Rnd {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>(100);
        for (int i = 0; i < 100; i++) list.add(new Random().nextInt());
        Collections.sort(list);
        System.out.println(list);
    }
}
于 2008-12-08T21:52:44.437 に答える
2

Windows BATCH: 160. これにより、数字の先頭にゼロが追加されますが、それ以外の場合、並べ替えが少し混乱します (並べ替えは文字で並べ替えるため、数字については何もわかりません)。

@echo off
set n=%random%.tmp
call :a >%n%
type %n%|sort
del /Q %n%
exit /B 0
:a
for /L %%i in (1,1,100) do call :b
exit /B 0
:b
set i=00000%random%
echo %i:~-5%

ワンライナーでより短い方法として (72):

cmd/v/c"for /l %x in (0,1,99)do @(set x=0000!RANDOM!&echo !x:~-5!)"|sort
于 2008-12-09T14:02:31.720 に答える
1

C ++はこの仕事に適したツールではありませんが、次のようになります。

#include <algorithm>
#include <stdio.h>

#define each(x) n=0; while(n<100) x

int main()
{
     int v[100], n;
     srand(time(0));
     each(v[n++]=rand());
     std::sort(v, v+100);
     each(printf("%d\n",v[n++]));
}
于 2008-12-09T14:55:38.150 に答える
1

167文字の単純な古いCコード:

main(){int i=100,x[i],n=i;while(i)x[--i]=rand();for(i=0;i<n;i++){int b=x[i],m=i,j=0;for(;j<n;j++)if(x[j]<x[m])m=j;x[i]=x[m];x[m]=b;}i=n;while(i)printf("%d ",x[--i]);}
于 2009-06-28T02:15:25.130 に答える
1

ブースト付きのC++。#includeがすでにすべてのテキストの半分になっているのは残念です:)

#include <boost/bind.hpp>
#include <algorithm>
#include <vector>
#include <iterator>
#include <cstdlib>
int main() {
    using namespace std;
    vector<int> a(100);
    transform(a.begin(), a.end(), a.begin(), boost::bind(&rand));
    sort(a.begin(), a.end());
    copy(a.begin(), a.end(), ostream_iterator<int>(cout, "\n"));
}
于 2009-01-03T03:00:18.987 に答える
1

Java、再び

import java.util.*;
class R
{
    public static void main(String[]a)
    {
        List x=new Stack();
        while(x.size()<100)x.add((int)(Math.random()*9e9));
        Collections.sort(x);
        System.out.print(x);
    }
}

これより短くできるとは思いません。不要なスペースも切り取っています。

LE:そうそうできます:)dingの投稿に触発されました。

import java.util.*;
class R
{
    public static void main(String[]a)
    {
        Set x=new TreeSet();
        while(x.size()<100)x.add((int)(Math.random()*9e9));
        System.out.print(x);
    }
}
于 2009-06-28T03:34:57.530 に答える
1

Tclは死んでいます。

TCL万歳。

RANDOM (0-99) の長さリストを作成し、そこに RANDOM (0-99) の整数を入れます。

また、画面に出力し、tcl ファイルまたは tcl シェルに示されているとおりに実行できます。

set l {}
proc r {} {expr { int(floor(rand()*99)) }}
for {set i 0} {$i<[r]} {incr i} {lappend l [r]}
puts [lsort -integer $l]

PHPもいいですね。

運動することを完全に確認します


<?
for($i=100;$i--;$l[]=rand());
sort($l);
print_r($l);

于 2008-12-08T21:22:59.927 に答える
1

C#

配列サイズに制限を課しても問題ない場合は、次のようにします。

Array.ForEach(Guid.NewGuid().ToByteArray().OrderBy(c => c).ToArray(), c => Console.WriteLine(c));

それ以外の場合は、制限の少ない (ただし、少し冗長な) 角度を使用できます。

var r = new Random();
(new int[100]).Select(i => r.Next()).OrderBy(i => i).ToList().ForEach(Console.WriteLine);

さて、私がこれに戻ってくるのはこれが最後だと思います...

116 文字:

using System;
class A
{
    static void Main()
    {
        var r=new Random();
        var n=1D;
        for(int i=0;i<100;i++,Console.WriteLine(n+=r.Next()));
    }
}
于 2008-12-08T23:04:10.877 に答える
1

Golfscript - 15 文字

[100.{rand}+*]$
于 2010-02-22T07:40:23.957 に答える
1

C#:

using System;
using System.Collections.Generic;

class App
{
  static void Main()
  {
    List<int> TheList = new List<int>();
    Random r = new Random();
    for ( int i = 0; i < 10; i++ )
      TheList.Add(r.Next());
    TheList.Sort();
    foreach ( int i in TheList )
      Console.WriteLine(i);
  }
}

生の文字数を求める場合は、これをもう少し圧縮できるかもしれません。でも基本的にはこれです。

編集:試行2:

using System;

class App
{
  static void Main()
  {
    Random r= new Random();
    for ( int i = 0, j=0; i < 100; i++ )
      Console.WriteLine(j+=r.Next(int.MaxValue/100));
  }
}
于 2008-12-08T21:09:40.390 に答える
1

Python (インタラクティブ):

import random
[int(9*random.random())]

何?1 つのランダムな整数のリストを作成し、それを (簡単に) 並べ替えて、出力します。

わかりました、ここに深刻な答えがあります

import random
sorted([int(9*random.random()) for x in range(9)])

[0, 9) で 9 つのランダムな整数を生成し、それらを並べ替え、(対話型シェルで) 出力します。

そして、必要な 100 を実際に生成する短いバリアントを次に示します。

from random import*
sorted(randint(0,9)for x in' '*100)
于 2008-12-08T21:12:47.810 に答える
1
#!パール

print join "\n", sort { $a <=> $b } map { int rand 0xFFFFFFFF } 1 .. 100;
于 2009-01-04T08:04:58.137 に答える
1

xkcd スタイルの Python の回答 - 現在のものより短い!

print [4]*100

本当の答え、63 文字:

from random import*;print sorted(randrange(9e9)for i in[0]*100)
于 2010-02-25T02:20:52.083 に答える
1
mzscheme -e "(sort (build-list 100 (λ x (random 9))) <)"

彼は、最小のバイトではなく、最小の文字だと言いました。=)

于 2008-12-08T22:06:31.757 に答える
1

makenir: 7 文字の改善:

namespace 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 );
        }
    }
}
于 2008-12-23T01:08:03.847 に答える
1

プロローグ、78 文字:

r([]).
r([H|T]):-random(0,1000000,H),r(T).
f(L):-length(R,100),r(R),sort(R,L).

REPL での使用法:

| ?- f(X).

X = [1251,4669,8789,8911,14984,23742,56213,57037,63537,91400,92620,108276,119079,142333,147308,151550,165893,166229,168975,174102,193298,205352,209594,225097,235321,266204,272888,275878,297271,301940,303985,345550,350280,352111,361328,364440,375854,377868,385223,392425,425140,445678,450775,457946,462066,468444,479858,484924,491882,504791,513519,517089,519866,531646,539337,563568,571166,572387,584991,587890,599029,601745,607147,607666,608947,611480,657287,663024,677185,691162,699737,710479,726470,726654,734985,743713,744415,746582,751525,779632,783294,802581,802856,808715,822814,837585,840118,843627,858917,862213,875946,895935,918762,925689,949127,955871,988494,989959,996765,999664]

yes

私の教師の何人かが言うように、それは自明です:-)

于 2009-08-05T20:46:16.443 に答える
0

パイク

void main() {
  array a=({});
  while (sizeof(a)<100) a+=({random(1<<30)});
  sort(a);
  foreach (a, int b) write("%d\n",b);
}
于 2008-12-09T14:55:23.890 に答える
0

編集もコメントもできないので、ここにJava v3があります(前の2つは負の数でした):

import java.util.TreeSet;

class Test {

    public static void main(String[] args) {
        Collection<Double> s = new TreeSet<Double>();
        while (s.size() < 100) s.add(Math.random());
        System.out.println(s);
    }
}
于 2008-12-18T15:02:49.380 に答える
0

あなたはSQLがこの種のことで良いと思うでしょう:-

SELECT * FROM
(SELECT TRUNC(dbms_random.value(1,100)) r
FROM user_objects
WHERE rownum < 101)
ORDER BY r

これは、108文字のOracleバージョンです。TOP 100構文を使用して、別のバリアントで誰かがうまくいく可能性があります。

82文字で編集:

select trunc(dbms_random.value(1,100))
from dual 
connect by level < 101
order by 1
于 2008-12-24T00:44:13.007 に答える
0

C#

var sequence = Enumerable.Range(1, 100)
                         .OrderBy(n => n * n * (new Random()).Next());

foreach (var el in sequence.OrderBy(n => n))
    Console.Out.WriteLine(el);

F#

let rnd = System.Random(System.DateTime.Now.Millisecond)

List.init 100 (fun _ -> rnd.Next(100)) 
|> List.sort 
|> List.iter (fun (x: int) -> System.Console.Out.WriteLine(x))
于 2009-08-03T16:19:53.657 に答える
0

Erlang、157 文字

-module (intpr).
-export ([q/0]).
q() ->
    lists:foldl(
    fun(X,A)->io:format("~p,",[X]),A end, 
    n, 
    lists:sort( 
        lists:map(fun(_)->random:uniform(100) end, lists:seq(1,100)) 
    )
    ).

確かに、これは最適な erlang ソリューションではありません。基本的に、1 から 100 までのリストを作成し (リストを初期化するためのより良い/より短い方法が見つからなかったという理由だけで)、すべての項目をランダムな整数 (<100) でマップします。結果のリストはソートされます。最後に、リストは「折りたたまれ」、すべての項目を調べて印刷する方法として使用されます。

于 2008-12-23T21:50:57.630 に答える
0

VB - 151 文字:

悲しいことにC#ほどエレガントではありません...

Sub Main()
    Dim r = New Random
    Enumerable.Range(1, 100) _
      .Select(Function(i) r.Next) _
      .OrderBy(Function(i) i) _
      .ToList _
      .ForEach(AddressOf Console.WriteLine)
End Sub
于 2008-12-08T23:07:53.007 に答える
0

R :

sort(round(runif(100)*99+1))

于 2010-02-23T05:56:16.803 に答える
0

C または C++ で誰も答えを出していないことに注意してください。

かつては高水準言語と呼ばれていました (アセンブラーと比較して)。まあ、今は彼らが低レベルだと思います。

于 2009-01-29T09:33:55.963 に答える
0

難読化するほど最小限ではない、単純な古い C:

#include <stdio.h>
#include <stdlib.h>
static int cmp(const void *a, const void *b)
{
    return *(const int *) a > *(const int *) b;
}
int main(void)
{
    int x[100], i;
    for(i = 0; i < 100; i++)
            x[i] = rand();
    qsort(x, 100, sizeof *x, cmp);
    for(i = 0; i < 100; i++)
            printf("%d\n", x[i]);
    return 0;
}

これは、Linux で gcc 4.1.2 を使用して警告なしでビルドされます。実際のコードでは、もちろん次のようにします。

  • 0 ではなく EXIT_SUCCESS を返す
  • 100 を 1 回だけ書き、sizeof x残りの参照に使用する
于 2008-12-09T13:56:58.190 に答える
0

スカラ: (61 文字)

1 to 100 map {_ ⇒ Random.nextInt} sortBy identity foreach println

編集:

inlineを定義することで、さらに圧縮することができます(56 文字) 。identity

1 to 100 map {_ ⇒ Random.nextInt} sortBy {i ⇒ i} foreach println
于 2010-05-20T02:28:21.430 に答える
0

C++でソートされた範囲[0,100]のランダムな100個の乱数を出力します

srand((unsigned int)time(NULL)); list<int> r;
for (int i=0;i<100;i++) r.push_back((int)((100)*rand()/(float)RAND_MAX));
r.sort();
for (list<int>::iterator j=r.begin();j!=r.end();j++) cout << *j << endl;

パリティを気にしない場合は、次のものに置き換えr.push_back((int)((100)*rand()/(float)RAND_MAX))ますr.push_back(rand()%(101))

--

200 文字の完全なプログラムを次に示します。

#include <algorithm>
#include <iostream>
#include <random>
using namespace std;int main(){int a[100];generate_n(a,100,tr1::mt19937());sort(a,a+100);for(int i=0;i<100;++i){cout<<a[i]<<endl;}return 0;}

配列表記は、私が見つけたどの標準コンテナよりも短かったです。 tr1::mt19937私が見つけた最短の乱数ジェネレーターでした。 using namespace std;のいくつかのインスタンスよりも短かったですstd::

于 2008-12-08T21:15:34.730 に答える
0

C の使用 - 152 文字

main(){int a=100,b,t,x[a];while(a--)x[a]=rand();a=100;while(b=a--)while(b--)if(x[a]>x[b]){t=x[a];x[a]=x[b];x[b]=t;}a=100;while(a--)printf("%d\n",x[a]);}

または拡張

#include <stdio.h>
int main()
{
    int a=100,b,t,x[a];

    while(a--)x[a]=rand();
    a=100;

    while(b=a--)
        while(b--)
            if(x[a]>x[b])
            {
                t=x[a];
                x[a]=x[b];
                x[b]=t;
            }

    a=100;
    while(a--)
        printf("%d\n",x[a]);
}
于 2010-02-22T03:49:59.767 に答える
0

配列を割り当てない C (基本的には、出力された最後の値にランダムな整数を追加し続け、暗黙的にソートします):

#include <stdlib.h>

int main(int argc, char **argv) {
    int i;
    unsigned long baseline = 0;
    srand(atoi(argv[1]));
    for ( i = 0 ; i < 100 ; i++ ) {
        baseline += rand();
        printf("%ld\n", baseline);
    }

}

これは、通常の難読化と改行の削除により、136 文字になります。

ps: もちろん、コマンド ラインで $RANDOM を指定して実行します。

于 2009-12-08T10:47:26.150 に答える
0

Common Lisp (私が覚えているように、いくつかの詳細が間違っている可能性があります):

(setf a '(99 61 47))
(setf a (sort a))
(princ a)

数字はもちろんランダムです。私は今サイコロを振ってそれらを選びました。

(もう少し定義をきつくしてもいいのではないでしょうか?)

于 2008-12-08T21:18:07.283 に答える
0

パイソン、71文字

import random
print sorted(random.randint(0,2**31)for i in range(100))
于 2009-07-31T17:39:15.470 に答える
0

Perl コマンド ライン:

perl -e 'print $_, "\n" foreach sort map {int rand 10} (1..10)'

0 から 9 までの 10 個の整数を出力し、並べ替えます。

于 2008-12-08T21:30:59.740 に答える
0

Delphi ... アルファベット順にソートされたバージョン

program PrintRandomSorted;

{$APPTYPE CONSOLE}
uses SysUtils,Classes;

var I:Byte;
begin
  with TStringList.Create do
  begin
    for I in [0..99] do
      Add(IntToStr(Random(MaxInt)));
    Sort; Write(Text); Free;
  end;
end.

ジェネリックを使用して、適切にソートされています。

program PrintRandomSorted;
{$APPTYPE CONSOLE}
uses SysUtils, generics.collections;
var I:Byte;S:String;
begin
  with TList<Integer>.Create do
  begin
    for I in [0..99] do Add(Random(MaxInt));
    Sort;
    for I in [0..99] do WriteLn(Items[I]);
    Free;
  end;
end.
于 2009-01-04T07:23:02.903 に答える
0

ジャワ:

  public void randList()
  {
  final int NUM_INTS = 100;
  Random r = new Random();
  List<Integer> s = new ArrayList<Integer>();

  for(int i = 0; i < NUM_INTS; i++)
    s.add(r.nextInt());

  Collections.sort(s);

  for(Integer i : s)
    System.out.println(i);
  }

短くなる可能性がありますが、上記は非常に明確で、ほとんどのベストプラクティスに準拠しています. これにより、警告 (生の型) が生成され、変数名が不適切になりますが、少し短くなります。

  void rl()
  {
  Random r = new Random();
  List s = new ArrayList();

  for(int i = 0; i < 100; i++)
    s.add(r.nextInt());

  for(Object i : s)
    System.out.println((Integer) i);
  }
于 2008-12-08T21:41:04.197 に答える
0

私はそれをプログラムの仕様として受け入れません。あまりにも不正確です! :-)

ルアのバージョン:

t=table;l={}for i=1,20 do l[#l+1]=math.random(99)end;t.sort(l)print(t.concat(l,' '))

少し短くなるかもしれませんが、よりスマートなコードもあるかもしれません。

于 2008-12-08T21:42:02.150 に答える
0

コマンドライン PHP ワンライナー (はい、末尾のセミコロンが必要です...)

php -r 'while (++$i % 101) $j[] = rand(0, 99); sort($j); echo implode(" ", $j)."\n";'
于 2008-12-08T21:59:05.830 に答える
0

Qt4 バージョン (c++)、116 文字。

#include <QtCore>
int main(){QList<int>l;int i=101;while(--i)l<<qrand()%101;qSort(l);foreach(i,l)printf("%d\n",i);}

-> wc -c main.cpp
116 main.cpp
于 2009-08-03T15:25:30.563 に答える
0

常温核融合:

<cfloop index="i" to="100" from="1">
    <cfset a[i] = randrange(1,10000)>
</cfloop>

<cfset ArraySort(a, "numeric")>

<cfdump var="#a#">
于 2009-07-31T17:58:25.057 に答える
0

Windows コマンド シェル - 71 文字

cmd/v/c"for /L %i in (0,1,99)do @set r=     !random!&echo !r:~-5!"|sort
于 2010-02-23T09:16:08.883 に答える
0

以下は、Delphi 2007 Win32 コンソール アプリで実行できる最善の方法です (いくつかの改行とインデントを削除する以外は):

{$APPTYPE CONSOLE}
var a:array[0..99] of integer; i,j,k:integer;
begin
  FOR i:=0 to 99 DO a[i]:=random(maxint)+1;
  FOR i:=0 to 98 DO
    FOR j:=i+1 to 99 DO
      IF a[j]<a[i] THEN begin
        k:=a[i]; a[i]:=a[j]; a[j]:=k
      end;
  FOR i:=0 to 99 DO writeln(a[i])
end.

私の知る限り、標準ユニットにはソートルーチンが含まれていないため、私が知っている最短のものを作成する必要がありました。また、Randomize を呼び出していないため、実行するたびに同じ結果が生成されます。

編集:整数型の範囲内のすべての正(ゼロ以外)の数値を意味するために「正の整数」を使用したため、maxint(システム定数)と「+1」を使用してゼロではないことを確認しました。

于 2008-12-09T04:47:24.587 に答える
0

これは冗談ではありません。現時点で私ができる最善のことです。:)

JavaScript:

a=[];for(i=0;i<100;i++){b=Math.round(Math.random()*100);a[i]=b;}c=0;
while(c==0){c=1;for(j=0;j<99;j++){if(a[j]>a[j+1]){d=a[j];a[j]=a[j+1];a[j+1]=d;c=0;}}}
for(k=0;k<100;k++)document.write(a[k],"<br>")
于 2008-12-09T00:33:00.450 に答える
0

C#

var r=new Random();
var l=from i in new C[100] let n=r.Next() orderby n select n;

81文字(改行含む)

于 2010-02-20T12:30:47.457 に答える
0

マトラブ:

arrayfun( @(x) display(x), sort( rand(1,100) ) )
于 2010-02-20T12:44:32.820 に答える