На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (5) 1 2 [3] 4 5  все  ( Перейти к последнему сообщению )  
> Простая задача
    Цитата JoeUser @
    Вобщем, я в теме :P, нароешь чего путного по "GUI + D" - маякни плс. Очень понравился язык! Почитал доки бегло - то, что доктор прописал! :lol:

    Есть мысль, что он уже умирает.

    А Rust видел? :D
      Цитата JoeUser @
      нароешь чего путного по "GUI + D" - маякни плс.
      Маякнул, для гуи DlangUI работает. И демка с тетрисом заработала и DlangIDE написанная тем же автором на тойже либе тоже заработала. Этого недостаточно?

      Добавлено
      Цитата D_KEY @
      Есть мысль, что он уже умирает.
      Заблуждаешься. Посмотри на активность коммьюнити, разработчиков библиотек, развития альтернативных компиляторов - LDC, GDC и SDC.
      Нет, о D можно многое сказать, но только не то что он умирает. Скорее наоборот.
      Сообщение отредактировано: applegame -
        Цитата D_KEY @
        А Rust видел?

        Слышал, но не читал. Гляну на досуге.
          Цитата D_KEY @
          А Rust видел? :D
          Видел, интересно, но отсутствие серьезного метапрограммирования отбивает охоту.
            Цитата D_KEY @
            А Rust видел?

            Кстати, как там с поддержкой Android & iOS, ну и процов отличных от ia32?
              Цитата applegame @
              Нет, о D можно многое сказать, но только не то что он умирает. Скорее наоборот.

              Хорошо, скажем иначе. Он все никак не может родиться. Уже 14 лет как.

              Добавлено
              Цитата applegame @
              Цитата D_KEY @
              А Rust видел? :D
              Видел, интересно, но отсутствие серьезного метапрограммирования отбивает охоту.

              У них там полноценные макросы вообще-то. Чего тебе еще нужно? Меня, например, отсутствие исключений напрягает больше.
                Цитата D_KEY @
                Хорошо, скажем иначе. Он все никак не может родиться. Уже 14 лет как.
                Не знаю, что по твоему пониманию - родиться. По мне так оно уже взрослое.
                  Цитата D_KEY @
                  Меня, например, отсутствие исключений напрягает больше.

                  Меня тоже, но панику можно перехватывать на границе потоков - для некоторых случаев как замена сгодится.

                  Цитата applegame @
                  "мама мыла раму".dup.reverse.writeln;

                  В условии требовалось получить "раму мыла мама", а не "умар алым амам". :D

                  Вариант на расте:
                  ExpandedWrap disabled
                    println!("{}", "мама мыла раму".split_whitespace().rev().collect::<Vec<_>>().connect(" "));

                  Немного коряво, знаю. Эффективнее было бы через fold, а не collect + connect, но так ещё многословнее. Вроде, connect для итераторов хотят сделать.

                  Ну и оригинальная задача на расте:
                  ExpandedWrap disabled
                    use std::io::BufRead;
                     
                    fn main() {
                        let stdin = std::io::stdin();
                        let str: String = stdin.lock().lines().next().unwrap().ok().unwrap().to_string();
                        
                        println!("{}", str.chars().max().unwrap().to_string().parse::<i32>().unwrap());
                        
                        let mut num: i32 = str.parse().unwrap();
                        let summand: i32 = str.chars().map(|c| if c == '0' { '0' } else { '1' }).collect::<String>().parse().unwrap();
                        
                        while num > summand {
                            print!("{} ", summand);
                            num -= summand;
                        }
                        
                        while num > 0
                        {
                            print!("1 ");
                            num -= 1;
                        }
                    }
                  Сообщение отредактировано: DarkEld3r -
                    Цитата DarkEld3r @
                    В условии требовалось получить "раму мыла мама", а не "умар алым амам". :D
                    Косяк, да. :)
                    Вот исправлено:
                    http://dpaste.dzfl.pl/637bd988dc88
                    ExpandedWrap disabled
                      import std.stdio;
                      import std.string;
                       
                      void main() {
                          "мама мыла раму".split(" ").reverse.join(" ").writeln;
                      }


                    Добавлено
                    Цитата DarkEld3r @
                    Немного коряво, знаю. Эффективнее было бы через fold, а не collect + connect, но так ещё многословнее. Вроде, connect для итераторов хотят сделать.
                    Ну вот как-то многословно, по сравнению с тем же D, перлом или питоном. А если сделают connect для итераторов (или таки пары итераторов, ака range?), то вот этого collect() в вектор не будет?
                    Сообщение отредактировано: applegame -
                      Цитата applegame @
                      Ну вот как-то многословно, по сравнению с тем же D, перлом или питоном. А если сделают connect для итераторов (или таки пары итераторов, ака range?), то вот этого collect() в вектор не будет?

                      Да, collect пропадёт - он ещё многословно выглядит из-за необходимости указывать в какой контейнер собираем. Ну а без него будет практически как в D.
                      Ну и нашёл уже стороннюю библиотеку с реализацией connect для итераторов, но решил, что "нечестно" использовать.

                      В расте итераторы не плюсовые, то есть это не начало/конец, а начало + размер. Наверное, больше на range из D похожи.

                      Если не в этом примере, а вообще, то немало многословности добавляют все эти unwrap. В такие моменты исключений особенно не хватает - даже если есть очень маленький шанс, что "что-то пойдёт не так" - в апи появляются Option/Result, чтобы дать обработать ошибку. Но имхо, это не всегда так страшно.
                      Сообщение отредактировано: DarkEld3r -
                        Если так уж сильно хочется в одну строку...
                        ExpandedWrap disabled
                          for (auto s : [](std::deque<std::string>&& d) { std::copy(std::istream_iterator<std::string>(std::istringstream("мама мыла раму") >> std::hex), std::istream_iterator<std::string>(), std::front_inserter(d)); return d; }(std::deque<std::string>())) std::cout << s << ' ';
                        Мрак.

                        Добавлено
                        То же самое, только не в одну строку.
                        ExpandedWrap disabled
                          for (auto s : [](std::deque<std::string>&& d)
                                        {
                                           std::copy(std::istream_iterator<std::string>(std::istringstream("мама мыла раму") >> std::hex), // ввод фиктивный, чтобы кастануть r-value в l-value ссылку
                                                     std::istream_iterator<std::string>(),
                                                     std::front_inserter(d)
                                                    );
                                           return d;
                                        }(std::deque<std::string>())
                              )
                            std::cout << s << ' ';
                          Блин, задача проста аки пять копеек, а кракозябров - в лучших традициях буста.
                            Цитата applegame @
                            Блин, задача проста аки пять копеек, а кракозябров - в лучших традициях буста.

                            Не, на бусте будет как-то так(примерно)
                            ExpandedWrap disabled
                              boost::copy("мама мыла раму" | boost::adaptors::tokenized(boost::regex("\\w+")) | boost::adaptors::reversed, std::ostream_itertor<std::string>(std::cout, " "));
                            Сообщение отредактировано: D_KEY -
                              На бусте неитересно. Эдак я и spirit подключу.
                                Да я в качестве защиты буста код привел :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (5) 1 2 [3] 4 5  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0960 ]   [ 15 queries used ]   [ Generated: 8.07.26, 04:02 GMT ]