1. Haskell / Говнокод #20287

    −22

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    kobenate :: (MonadVoretion m)
             => Config
             -> Disjunct
             -> RuleZipper
             -> m Disjunct
    kobenate cfg d₀ z = uphill d₀ z 
      where
        climb t x =
          case parent x of
            Just x' -> uphill t x'
            Nothing -> return t
    
        uphill t x =
          case label <$> parent x of
            Just (LinkAnd{}) -> do
              i <- downhill' cfg $ reverse $ before x
              j <- downhill' cfg $ after x
              climb (i \++/ t \++/ j) x
            _ ->
              case label x of
                MultiConnector{} -> do
                  m <- downhill cfg (tree x)
                  let t' = t \++/ m
                  climb t' x
                _ ->
                  climb t x
    
    downhill' :: (MonadVoretion m)
              => Config
              -> [Link]
              -> m Disjunct
    downhill' cfg x = foldl (\++/) ([], []) <$> mapM (downhill cfg) x
    
    downhill :: (MonadVoretion m)
             => Config
             -> Link
             -> m Disjunct
    downhill cfg l0@(Node label subforest) =
      case label of
        Optional _ ->
          ifR (_decay_optional cfg)
             {-then-} (downhill cfg $ head subforest)
             {-else-} (return ([], []))
        MultiConnector _ ->
          ifR (_decay_multi cfg)
             {-then-} (do
               a <- downhill cfg l0
               b <- downhill cfg $ head subforest
               return $ a \++/ b)
             {-else-} (return ([], []))
        LinkOr{} ->
          downhill cfg =<< pickRandom subforest
        LinkAnd{} ->
          downhill' cfg subforest
        Cost{} ->
          downhill' cfg subforest
        EmptyLink ->
          return ([], [])
        Link{_link=i} -> do
          case _linkDirection i of
            Plus  -> return ([], [Left i])
            Minus -> return ([Left i], [])

    Метод вореции дерева методом вниз, вверх и опять вниз, но сбоку. В индексе храним смещение бата правил, зожатых в отдельный файл. Ворециируем любое подходящее правило из индекса и розжимаем дерево в зиппер. Находим пачку подходящих зипперов, см. http://govnokod.ru/20195, ворециируем любой из них. Вверх идём просто, ничего не ворецируя, ибо нужную кобенацию важно сохранить, а вот сбоку идём вниз, тут уж можно любую кобенацию брать.

    Запостил: CHayT, 28 Июня 2016

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

    • Прямо какой-то код Воренца.
      Ответить
      • Преобразования Воренца в 0x4 мирном пространстве -- это просто. Берём кобениан от дивргенции бреда и джвады кобенаем по 0x61.
        Ответить
        • А преобразование Ворье (разложение на конусы и сисы)?
          Ответить
          • У вас оно на каждых выборах проходит - старое Ворье уходит, новое Ворье выбирают.
            Ответить
            • Нет, у нас старое Ворье остаётся. Только иногда местами меняется, как при рокировке в шахматах.
              Ответить
          • Конусы и сисы — частный случай. Для колесных чисел там искпонета.
            Ответить
          • О, про группы Наталуа забыли.
            Ответить
            • Думаю, не стоит останавливаться на очевидном факте, что вореционное счисление придумал сам Эйлер.
              Ответить
              • В этом вопросе я на стороне Лагранжа. У него был на удивление современный, алгебраический подход к теориям.
                Ответить
            • Кто эта натаща про которую все говорят?
              Ответить

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