Sleep Sort
От: licedey  
Дата: 20.11.18 21:19
Оценка: +1 -2 :))) :))) :))) :))) :)
public class Program
{
   public static void Main(string[] args)
   {
      var toSortInts = new[] {1, 8, 5, 22, 3};
      var sorted = toSortInts.Select(curInt => new Task(() =>
         {
            Thread.Sleep(curInt);
            Console.WriteLine(curInt);
         }))
         .ToList();

      sorted.ForEach(t => t.start());

      Console.ReadLine();
   }
}
Re: Sleep Sort
От: bnk СССР http://unmanagedvisio.com/
Дата: 20.11.18 21:58
Оценка: +7
Здравствуйте, licedey, Вы писали:

Баянище же
Re: Sleep Sort
От: CreatorCray  
Дата: 20.11.18 23:02
Оценка: +1
Здравствуйте, licedey, Вы писали:

Было ж уже
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Sleep Sort
От: VikDD  
Дата: 21.11.18 09:44
Оценка:
Я так понимаю что уже готовы результаты от тестировщиков для проверки на границах int'ов?
С уважением, VikDD
Re: Sleep Sort
От: SaZ  
Дата: 21.11.18 10:14
Оценка:
Здравствуйте, licedey, Вы писали:


L>
L>public class Program
L>{
L>   public static void Main(string[] args)
L>   {
L>      var toSortInts = new[] {1, 8, 5, 22, 3};
L>      var sorted = toSortInts.Select(curInt => new Task(() =>
L>         {
L>            Thread.Sleep(curInt);
L>            Console.WriteLine(curInt);
L>         }))
L>         .ToList();

L>      sorted.ForEach(t => t.start());

L>      Console.ReadLine();
L>   }
L>}
L>


У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:
#include <iostream>
#include <vector>
#include <thread>
#include <chrono>
#include <algorithm>
 
 
template< typename It >
void sleepSort( const It& begin, const It& end )
{
    if ( begin == end )
        return;
    const auto max = *std::max_element( begin, end );
    const auto min = *std::min_element( begin, end );
 
    for ( auto it = begin; it != end; ++it )
    {
        std::thread( [min, i = *it]
        {
            std::this_thread::sleep_for( std::chrono::milliseconds( i - min ) );
            std::cout << i << std::endl;
        } ).detach();
    }
    std::this_thread::sleep_for( std::chrono::milliseconds( max - min + 1 ) );
}
 
int main( int argc, char *argv[] )
{
    std::vector<int> v = { 20, 5, 15, 10, -5, };
    sleepSort( v.begin(), v.end() );
 
    return 0;
}
Re[2]: Sleep Sort
От: Михaил  
Дата: 21.11.18 10:27
Оценка: +1 -3
Здравствуйте, SaZ, Вы писали:


SaZ>У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:

SaZ>
SaZ>#include <iostream>
SaZ>#include <vector>
SaZ>#include <thread>
SaZ>#include <chrono>
SaZ>#include <algorithm>
 
 
SaZ>template< typename It >
SaZ>void sleepSort( const It& begin, const It& end )
SaZ>{
SaZ>    if ( begin == end )
SaZ>        return;
SaZ>    const auto max = *std::max_element( begin, end );
SaZ>    const auto min = *std::min_element( begin, end );
 
SaZ>    for ( auto it = begin; it != end; ++it )
SaZ>    {
SaZ>        std::thread( [min, i = *it]
SaZ>        {
SaZ>            std::this_thread::sleep_for( std::chrono::milliseconds( i - min ) );
SaZ>            std::cout << i << std::endl;
SaZ>        } ).detach();
SaZ>    }
SaZ>    std::this_thread::sleep_for( std::chrono::milliseconds( max - min + 1 ) );
SaZ>}
 
SaZ>int main( int argc, char *argv[] )
SaZ>{
SaZ>    std::vector<int> v = { 20, 5, 15, 10, -5, };
SaZ>    sleepSort( v.begin(), v.end() );
 
SaZ>    return 0;
SaZ>}
SaZ>


Какой же с++ все-таки избыточно-многословный...
Re[3]: Sleep Sort
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.11.18 10:57
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Какой же с++ все-таки избыточно-многословный...


Зато работает. В отличие от изначального варианта.
Re[3]: Sleep Sort
От: CreatorCray  
Дата: 21.11.18 11:17
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Какой же с++ все-таки избыточно-многословный...

Это не сам С++, это заюзанная либа из стандартного комплекта.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Sleep Sort
От: Mihas  
Дата: 21.11.18 11:35
Оценка: :))
Здравствуйте, licedey, Вы писали:

Сложность O(n)?
Re[4]: Sleep Sort
От: Михaил  
Дата: 21.11.18 18:57
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Михaил, Вы писали:


М>>Какой же с++ все-таки избыточно-многословный...


N>Зато работает. В отличие от изначального варианта.


Это ж не от языка, а от писателя зависит
Re[4]: Sleep Sort
От: Михaил  
Дата: 21.11.18 18:59
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Михaил, Вы писали:


М>>Какой же с++ все-таки избыточно-многословный...

CC>Это не сам С++, это заюзанная либа из стандартного комплекта.

Она же давно частью стандарта стала.
А вообще, я в том смысле, что по сути пишешь много, а понятно для непосвященного мало). В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.
Re[5]: Sleep Sort
От: eskimo82  
Дата: 21.11.18 19:06
Оценка:
М>Она же давно частью стандарта стала.
Она всегда была неотъемлемой частью стандарта языка.
Языка C++ не существует вне стандартной библиотеки, ровно также и наоборот.
Re[5]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 00:16
Оценка: :)
Здравствуйте, Михaил, Вы писали:

М>Она же давно частью стандарта стала.

Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.

М>В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.

Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 00:16
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Языка C++ не существует вне стандартной библиотеки

Это кардинально не так.
Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::". Более того, на основании этого опыта я могу сказать что std таки сделана доволько уродливо. Можно сделать то же самое куда более внятно и просто.

E> ровно также и наоборот.

А вот наоборот верно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Sleep Sort
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 22.11.18 03:05
Оценка:
Здравствуйте, Михaил, Вы писали:

М>>>Какой же с++ все-таки избыточно-многословный...

N>>Зато работает. В отличие от изначального варианта.
М>Это ж не от языка, а от писателя зависит

В том-то и дело. Если тебя смущает количество символов, то их можно и на плюсах сократить, использовав using. Но всё равно надо сравнивать одинаковые программы, а не работающую и чуть длиннее и неработающую и короче.
Re[3]: Sleep Sort
От: 0xGreg СССР  
Дата: 22.11.18 06:41
Оценка:
SaZ>>У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:

А вот на Go.
package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    sleepSort([]int{20, 5, 15, 10, -5})
}

func sleepSort(v []int) {
    if len(v) == 0 {
        return
    }

    min := v[0]
    for _, e := range v {
        if e < min {
            min = e
        }
    }

    wg := sync.WaitGroup{}
    wg.Add(len(v))

    for _, e := range v {
        go func(e int) {
            defer wg.Done()

            time.Sleep(time.Millisecond * time.Duration((e - min)))
            fmt.Println(e)
        }(e)
    }

    wg.Wait()
}
Re[7]: Sleep Sort
От: eskimo82  
Дата: 22.11.18 13:59
Оценка:
CC>Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::".
У меня для тебя плохие новости — стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.
Re[6]: Sleep Sort
От: eskimo82  
Дата: 22.11.18 14:02
Оценка: -1 :)
М>>Она же давно частью стандарта стала.
CC>Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.
Еще раз: Это часть компилятора, написаная на специальном (не C++) языке.
Re[6]: Sleep Sort
От: Михaил  
Дата: 22.11.18 14:14
Оценка:
Здравствуйте, CreatorCray, Вы писали:

М>>В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.

CC>Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника

Или ленивее разбираться в закорючках, если у них и так все работает. Ну и как говорится, Everyone knows 40% of C++. Unfortunately, it's never the same 40%
Re[8]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 14:34
Оценка: -1 :)
Здравствуйте, eskimo82, Вы писали:

E>У меня для тебя плохие новости

Да ну!

E>стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.

Это называется C++ runtime
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.