1. Куча / Говнокод #12622

    +124

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    import Control.Applicative
    import Data.List
    isSimple n | n > 0 = not $ or $ map (\n1 -> n `rem` n1 == 0) [2..n-1]
    isNaturalAndSimple n = n > 0 && isSimple n
    generateSource b e = map (flip replicate $ [b..e]) [2..]
    splitAll = groupBy $ \_ _->False
    splitedNumberRangesToNumberSequence l = foldl (liftA2 (++)) (head l) (tail l)
    toNumberSequences = map $ splitedNumberRangesToNumberSequence . map splitAll
    onlySimple = map $ filter $ isNaturalAndSimple . sum
    main = print $ take 4 $ onlySimple $ toNumberSequences $ generateSource 2 3

    Запостил: HaskellGovno, 20 Февраля 2013

    Комментарии (14) RSS

    • import Control.Applicative
      import Data.List
      isSimple n | n > 0 = not $ or $ map (\n1 -> n `rem` n1 == 0) [2..n-1]
      isNaturalAndSimple n = n > 0 && isSimple n
      generateSource b e = map (flip replicate $ [b..e]) [2..]
      splitAll = groupBy $ \_ _->False
      splitedNumberRangesToNumberSequence l = foldl (liftA2 (++)) (head l) (tail l)
      toNumberSequences = map $ splitedNumberRangesToNumberSequence . map splitAll
      onlySimple = map $ filter $ isNaturalAndSimple . sum
      main = do
          l a
          print a
          where
              a = concat $ onlySimple $ toNumberSequences $ generateSource 2 3 
              l t = do
                      print $ take 100 t
                      l $ drop 100 t

      Оптимизатор Хаскель не умеет определять unreachable code. В результате в этом примере используемая память бесконечно растет из-за того что компилятор держит голову списка, а вот если --print a закомментировать, то все как и говорил борманд: Не растет, тк сборщик мусора его собирает. ПС: Запускать на всяких онлайнкомпиляторах бесполезно, тк цил бесконечный
      Ответить
    • Так, я не понял! Говнокоды ниже на Хаскеле проминусовали, а этот посчитали говном. Почему? Написано идеально
      Ответить
      • > Написано идеально
        > foldl (liftA2 (++)) (head l) (tail l)
        ну ну
        Ответить
        • А что ты предлагаешь взамен? Ради этого места, а именно функции liftA2 даже splitAll написан
          Ответить
          • возьми тогда для начала foldl1
            Ответить
            • splitedNumberRangesToNumberSequence = foldl1 (liftA2 (++))
              Стало так. Больше говна не вижу.
              Ответить
              • > generateSource b e = map (flip replicate $ [b..e]) [2..]
                tail $ iterate ([b..e]:) []

                > splitAll = groupBy $ \_ _->False
                map (:[])

                для затравки
                Ответить
                • > tail $ iterate ([b..e]:) []
                  Этот код портит результат программы

                  Второй я даже понял и он работает.
                  Ответить
                  • > Этот код портит результат программы
                    ну не суть: tail -> drop 2, недоглядел

                    > Второй я даже понял и он работает.
                    а предлагаешь людям свой "читабельный" код, не стыдно ли?
                    по сабжу: (:[]) это return для списка / \x -> [x]

                    btw: or $ map .. это any, и в смысл кода целиком не вникал, очень вероятно, что можно переписать)
                    Ответить
    • import Control.Applicative
      import Data.List
      isNaturalAndSimple n = (n > 0 && (not $ or $ map (\n1 -> n `rem` n1 == 0) [2..n-1]))
      ifSumSimple b e = 
         map 
         ((filter $ isNaturalAndSimple . sum) .
            (foldl1 (liftA2 (++))) .
               (map $ map (:[])) .
                  (flip replicate $ [b..e]))
                     [2..]
      main = print $ take 4 $ ifSumSimple 2 3
      Кто ликвидирует isNaturalAndSimple?
      Ответить
      • в isNaturalAndSimple && ликвидируется через &&&. Лямбда тоже легко, но вот как [2..n-1] в point free переписать... не знаю. стоп, нет же. лямбда тоже с кровью будет уходить... не ушла
        Ответить
      • Вы реально из омска, если можете писать такую хуйню. Бредогенератор явно прокачен
        Ответить
        • For Your Information
          Гумно ничего само не пишет.
          Оно даже бред берет чужой.
          Ответить

    Добавить комментарий