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

    +126

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    ZipWith[f_, vector1_, vector2_] := Table[ f[ vector1[[i]], vector2[[i]] ], {i, Min[Length[vector1], Length[vector2]] } ]
    
    UnZip[list_] := {Map[First, list], Map[Rest, list]}
    
    Zip[vector1_, vector2_] :=  ZipWith[{#1, #2} &, vector1, vector2]
    ZipWithIndex[vector_] := Zip[vector, Range[1, Length[vector]]]
    ZipWithIndexed[f_, vector1_, vector2_] := Map[f @@ # &, Map[Flatten, Zip[vector1, ZipWithIndex[vector2]]]] 
    
    Fold2[f_, initialState_, list1_ , list2_ ] := Fold[f @@ Prepend[#2, #1] &, initialState, Zip[list1, list2]]
    
    ZipWith1[f_, {}, any_] := {}
    ZipWith1[f_, any_, {}] := {}
    ZipWith1[f_, {h1_, t1___}, {h2_, t2___}] := Prepend[ZipWith1[f, {t1}, {t2}], f[h1, h2]]; (*Extremal version, but recursion depth is 256 *)
     
    GroupByIndex[list_, indexesOfGroup_] := (UnZip[#][[1]]) & /@ Gather[ZipWithIndex[list], (And @@ Map[(MemberQ[indexesOfGroup, #]) &, {#1[[2]], #2[[2]]}]) &]

    Wolfram Mathematica

    Запостил: Говногость, 01 Февраля 2013

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

    • омск
      Ответить
    • Омг. Хаскель добрался до математиков!
      Ответить
      • Добрался? Они же его и придумали
        Ответить
        • Франкенштейн добрался до своего создателя
          Ответить
          • Доктор, доктор, я ваш гормональный мутант, доктор.
            Ответить
        • Не, математики не любят Хаскелль. Это миф. Только если псевдоматематики с их ложными рекурсивными богами.
          Ответить
          • Математики и физики любят FORTRAN 77 и сишечку, это факт. Во всяком случае те из них, которые умеют пользоваться компьютером.
            Ответить
            • программу на фортране можно написать на любом языке (с)
              Ответить
              • Математики пишут свои расчеты на матлабе. Остальные матпакеты для школьниц.
                Ответить
          • Плюсую. Математики не используют хаскель просто потому, что он не удобен для расчетов, а ещё и тормозит. Ну что значит язык, в котором не работает мутабильный массив в немутабильной среде (DiffArray)? Такой язык хорошо подойдет для развлекающегося школьника-девственника, но не более. Если ему нужно трахать бабу, то с таким языком это не получится, так как максимум затрахаешь мамку и получишь борщ, а не деньги. В то время как твои собратья С++-альфачи уже выебут и не одну девственицу.
            Регулярно слышу, как хаскелисты себя называют математиками, но на самом деле хаскель - дешевый способ примазаться к области математики. Ведь для этого то всего лишь достаточно быть школьником и знать пару монад и всё - ты уже математик. Но не попадайтесь на эту удочку пасаны. Чтобы бы быть математиком, нужно знать весь курс матанализа, линейной алгебры, теории оптимизации, статистика, системы уравнений с частными производными и много много всего остального. Я считаю, если ты написал пару рекурсивных функций, но не знаешь всех этих разделов математики, то 265!
            Ответить
    • Хаскелл отаке!
      Ответить
    • А в масематике своих штоли функций внешнего порядка нет?
      Ответить
    • Сколько всяких закорючек. Я ничего прочитать не могу почти. Только UnZip понял.
      Ответить
    • GroupByIndex работал не всегда верно. Поправил и стало так:
      inIndexGroup[indexesOfGroup_, pairOfIndexes_] := Or @@ Map[(And @@ Map[(MemberQ[pairOfIndexes, #]) &, #]) &, indexesOfGroup]
      GroupByIndex[list_, indexesOfGroup_] := (UnZip[#][[1]]) & /@ Gather[ZipWithIndex[list], (inIndexGroup[indexesOfGroup, {#1[[2]], #2[[2]]}]) &]
      Ответить
      • Ты из говнокода сделал ещё больше говнокода.
        Ответить
    • Увидел Zip UnZip подумал, зачем из математики работать с архиватором, потом дошло
      Ответить
      • http://zvon.org/other/haskell/Outputprelude/zip_f.html
        http://zvon.org/other/haskell/Outputprelude/unzip_f.html

        На тебя сейчас заагрились настоящие математики всего мира, типа меня.
        Ответить
      • Посмотрел сейчас на код ZipWith и UnZip. Это код из стандартной библиотеки?
        Что-то тут не чисто.

        UnZip отстегивает только первый элемент кортежа каждого элемента списка в отдельный список, а остальные элементы кортежа оставляет во втором списке. Хаски так не делает.

        ZipWith вообще какаято императивная питушня с изменяющейся переменной i. Интересно, а как ZipWith реализуют в других нормальных языках? Выражают через другие функции высшего порядка?
        Ответить

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