Создайте, отсортируйте и распечатайте список 100 случайных ints в наименьшем количестве символов кода

21
задан 11 revs, 8 users 100% 4 May 2012 в 03:38
поделиться

63 ответа

10 символов в J:

/:~100?9e9

объяснение:

/:~ виды массив (технически, применяется, списки отсортировали вектор перестановки к себе)

x ? limit возвраты x случайные числа меньше, чем предел

9e9 (9000000000) является разумным верхним пределом, выразимым в 3 символах.! 9 (9 факториалов) меньше, но требует того меньше символа.

50
ответ дан 4 revs, 2 users 97% 29 November 2019 в 06:03
поделиться

Моя запись:

echo enter a bunch of ints, hit control-D when done
cat - | sort -n

или, на Adam в комментариях:

echo enter a bunch of ints, hit control-D when done
sort -n
8
ответ дан 2 revs 29 November 2019 в 06:03
поделиться

РЕДАКТИРОВАНИЕ 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);
    }
}

: сделанная полная программа. принимает новые строки, и пробелы могли быть удалены, но оставлены внутри для ясности:)

РЕДАКТИРОВАНИЕ : сделанный еще короче.... Я смею кого-то улучшать этого... Я пробовал в течение часа.

РЕДАКТИРОВАНИЕ : Я думаю, что это немного короче.

РЕДАКТИРОВАНИЕ : Я думаю, что это еще больше короче. Тьфу, заставьте меня остановиться.

РЕДАКТИРОВАНИЕ : Еще одна строка, один меньше символа. Спорный...

<час> Объяснение

A[100] - массив любой старой вещи - в этом случае A (это - хорошее краткое название). Содержание полностью проигнорировано, это - размер массива, который рассчитывает.

.Select(i=>r.Next()) - генерирует счетное из 100 значений r. Затем ().

.OrderBy(i=>i) - сортирует предыдущее в порядке.

.ToList() - преобразовывают отсортированный счетный из интервала к Списку, таким образом, мы можем использовать ForEach.

ForEach(Console.WriteLine) - называют Консоль. Времена WriteLine 100, передающие в каждом целочисленном значении в списке.

8
ответ дан 10 revs, 2 users 64% 29 November 2019 в 06:03
поделиться

Mathematica, 28 символов

Sort@RandomInteger[2^32, 100]

, Который подает 100 (отсортированных) случайных целых чисел {0..., 2^32}.

7
ответ дан dreeves 29 November 2019 в 06:03
поделиться

Язык Common LISP, интервал между 0 и 10000 (нет никакой верхней границы для этого, но необходимо выбрать один).

(sort (loop repeat 100 collect (random 10000)) #'<)
6
ответ дан 2 revs 29 November 2019 в 06:03
поделиться

F#

let r = new System.Random();;

[ for i in 0..100 -> r.Next()] |> List.sort (fun x y -> x-y);;
5
ответ дан Kalle 29 November 2019 в 06:03
поделиться

Попытка в рубине:

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

(С восемь меньше символов, но требование tap пустельга Ruby 1.9)

- для рубиновых 1.8:

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

30 символов. (мог обрезать 2 путем возврата к 9e9, но прокомментировать рассматриваемый, говорит, что диапазон должен быть MaxInt32.

5
ответ дан 4 revs, 3 users 50% 29 November 2019 в 06:03
поделиться

В Bash:

for i in `seq 100`; do echo $RANDOM; done | sort -n
4
ответ дан 2 revs, 2 users 86% 29 November 2019 в 06:03
поделиться

JavaScript: (через JSDB или Mozilla Носорог используемый в режиме оболочки)

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

редактирование: похож я могу сократить его несколько символов прямым присвоением, а не "нажатием", и мне не нужно {} s:

x=[];for(i=0;i<100;i++)x[i]=(Math.random()+"").slice(-8);x.sort();
3
ответ дан 2 revs 29 November 2019 в 06:03
поделиться

Python для печати 100 случайных, отсортированных целых чисел

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

@Adam уже избил меня к нему, но я думал с помощью randint (), и sys.maxint достаточно отличался для регистрации так или иначе.

3
ответ дан 3 revs, 2 users 77% 29 November 2019 в 06:03
поделиться

(интерактивный) APL:

, Если Вы хотите номера 0-99 (или 1-100, в зависимости от того, ли у Вас есть индексный источник в Вашем наборе рабочей области к 0 или 1), чтобы быть уникальным, требуется 8 символов, как так:

↑100?100

, Если Вы не заботитесь об уникальности, сделайте это (9 символов):

↑?100ρ100

Хотите большее число? Просто замените своим верхним пределом, N, для вторых 100 на каждой строке, и Ваши случайные числа будут в диапазоне 0 - N-1 (или 1-N, если Ваш индексный источник будет установлен на 1).

, Если Вы хотите гарантировать, что Ваши числа колеблются от 0-99 (или 0 - N-1, если Вы идете для большего верхнего предела) независимо от индексной установки источника, просто включите любую из вышеупомянутых строк в круглых скобках и добавьте

-⎕IO

до конца (где ⎕ квадратический символ APL). Это - еще 6 символов.

3
ответ дан 3 revs, 3 users 75% 29 November 2019 в 06:03
поделиться

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
17
ответ дан adl 29 November 2019 в 06:03
поделиться

Perl, полное на 8 байтов короче, чем версия nrich и выполнения при "предупреждениях использования";:)

perl -wle "$,=' ';print sort map {int rand 100} 1..100"
2
ответ дан user42092 29 November 2019 в 06:03
поделиться

отличный:

r=new Random()
List l=[]
100.times{ l << r.nextInt(1000) }
l.sort().each { println it }
2
ответ дан Ray Tayek 29 November 2019 в 06:03
поделиться

Clojure

(defn gen-rands []
(sort (take 100 (repeatedly #(rand-int Integer/MAX_VALUE)))))
2
ответ дан 3 revs 29 November 2019 в 06:03
поделиться

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
2
ответ дан 2 revs, 2 users 91% 29 November 2019 в 06:03
поделиться

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++]));
}
1
ответ дан csl 29 November 2019 в 06:03
поделиться

mackenir: улучшение 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 );
        }
    }
}
1
ответ дан 2 revs 29 November 2019 в 06:03
поделиться

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"));
}
1
ответ дан Johannes Schaub - litb 29 November 2019 в 06:03
поделиться

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()));
    }
}
1
ответ дан 5 revs 29 November 2019 в 06:03
поделиться
mzscheme -e "(sort (build-list 100 (λ x (random 9))) <)"

Он сказал наименьшее количество символов, не наименьшее количество байтов. =)

1
ответ дан 2 revs, 2 users 80% 29 November 2019 в 06:03
поделиться

Tcl мертв.

Да здравствует tcl.

Создает СЛУЧАЙНЫЙ список длины (0-99) и помещает СЛУЧАЙНЫЙ (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);
1
ответ дан 4 revs, 2 users 85% 29 November 2019 в 06:03
поделиться

Java:

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);
    }
}
2
ответ дан Pål GD 29 November 2019 в 06:03
поделиться

стиль xkcd в PHP:

for($i=0;$i<100;$i++) echo "4\n";
25
ответ дан clawr 29 November 2019 в 06:03
поделиться

APL

13 символов:

a[⍋a←100?9e8]
6
ответ дан 29 November 2019 в 06:03
поделиться

старый добрый c-код в 167 символов:

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]);}
1
ответ дан 29 November 2019 в 06:03
поделиться

Ява, опять же

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);
    }
}
1
ответ дан 29 November 2019 в 06:03
поделиться

В OCaml:

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

Изменить: в OCaml, вводя это на верхнем уровне, будет распечатан список, но если вы хотите, чтобы список выводился на стандартный вывод:

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));;
2
ответ дан 29 November 2019 в 06:03
поделиться

Haskell:

import Random
import List
main=newStdGen>>=print.sort.(take 100).randomRs(0,2^32)
5
ответ дан 29 November 2019 в 06:03
поделиться

Powershell:

35 символов (с PowerShell Расширения сообщества, заменяющие Get-Random ):

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

20 символов (простой PowerShell v2):

0..99|%{random}|sort
3
ответ дан 29 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: