Хламидомонада / Говнокод #19670 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
{-# LANGUAGE FlexibleInstances #-}
module Connect where 

import Data.List

data Color = Black | White deriving (Show, Eq)

data Start = Begin | End deriving (Show, Eq)

data Tree a = Node a [Tree a] deriving  (Eq)

instance Show (Tree (Int,Int)) where
    show = showTree 0

showTree :: Int -> Tree (Int,Int) -> String
showTree n (Node a s) = show a ++ "\n" ++ replicate n ' ' ++ concatMap (showTree (n+1)) s

elemTree :: Eq a => a -> Tree a -> Bool
elemTree e (Node a []) = if a == e then True else False
elemTree e (Node a s) = if a == e then True else any (e `elemTree`) s 
    
resultFor :: [String] -> Maybe Color
resultFor = check

charToColor :: Char -> Color
charToColor 'X' = Black
charToColor 'O' = White
charToColor _ = error "Bad data!"

check :: [[Char]] -> Maybe Color
check s = if (null iob || null ioe) && (null ixb || null ixe) 
            then Nothing
            else let whb = any (\t -> any (`elemTree` t) ioe) $ map (go White Begin s []) iob 
                     whe = any (\t -> any (`elemTree` t) iob) $ map (go White End s []) ioe
                     blb = any (\t -> any (`elemTree` t) ixe) $ map (go Black Begin s []) ixb
                     ble = any (\t -> any (`elemTree` t) ixb) $ map (go Black End s []) ixe
                 in if whb || whe then Just White else if blb || ble then Just Black else Nothing
    where 
        iob = map (\y -> (0,y)) $ elemIndices 'O' (s !! 0)
        ioe = map (\y -> (length s,y)) $ elemIndices 'O' (last s)
        ixb = map (\x -> (x,0)) $ elemIndices 'X' (map head s)
        ixe = map (\x -> (x,length (s!!0))) $ elemIndices 'X' (map last s)

search :: Foldable t =>
          Color
          -> [[Char]] -> t (Int, Int) -> (Int, Int) -> Maybe [(Int, Int)]
search color arr from (cx, cy) = (\x -> if null x then Nothing else Just x) $ map fst $ filter snd $ concatMap 
    (\x -> map 
        (\y -> testCell color arr from (cx, cy) (x,y)) 
        (filter (\yy -> yy >= 0 && yy < length (arr!!0)) [cy-1, cy, cy+1])) 
    (filter (\xx -> xx >= 0 && xx < length arr) [cx-1,cx,cx+1])

testCell :: Foldable t =>
            Color
            -> [[Char]]
            -> t (Int, Int)
            -> (Int, Int)
            -> (Int, Int)
            -> ((Int, Int), Bool)
testCell color arr from (cx, cy) (x,y)
    |x == cx && y == cy = ((x,y),False)
    |cx - x == 1 && cy - y == 1 = ((x,y),False)
    |x - cx == 1 && y - cy == 1 = ((x,y),False)
    |(x,y) `elem` from = ((x,y),False) 
    |arr !! x !! y /= '.' && color == charToColor (arr !! x !! y) = ((x,y),True)
    |otherwise = ((x,y),False) 

go :: Color
      -> Start
      -> [[Char]]
      -> [(Int, Int)]
      -> (Int, Int)
      -> Tree (Int, Int)
go c s arr from (x,y) 
    |(c,s) == (White, Begin) && x == length arr - 1 = Node (x,y) []
    |(c,s) == (White, End) && x == 0 = Node (x,y) []
    |(c,s) == (Black, Begin) && y == length (arr !! 0) -1 = Node (x,y) []
    |(c,s) == (Black, End) && y == 0 = Node (x,y) []
    |otherwise = let f = search c arr from (x,y)
                 in case f of 
                         Nothing -> Node (x,y) []
                         Just r -> Node (x,y) $ map (go c s arr ((x,y):from)) r

Запостил: Abbath Abbath, (Updated )

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

  • Лол. Мои старания не пропали даром. Хаскель получил рубрику. Congratulations! шарики феерверки я пошел бухать. не шучу
    Ответить
      • Предлагаю следующим дропнуть баш и рубби
        > bash (5) Ruby (1)
        Там почти ничего нет
        Потом дропним ещё что-нибудь, пока не останется только один и я знаю кто.
        Ответить
      • Предлагаю следующим форсить Nemerle. С его реализацией if внутри стандартной библиотеки через макросы и паттерн матчинг - это будет чуть более чем не сложно.
        Ответить
        • а немерле не умер ли в страшних муках, потому что что кроме джвух поляк, написавших его в для повышения ЧСВ, он никому не пригодился?

          Или как руби - есть фанбаза, которая яростно защищает, но юзает чуть реже чем никогда?
          Ответить
      • Еще Го набирает популярности, и го-внодизайна в этом языке ну просто очень много. Одни только циклы чего стоят.
        for _, x := range sliceOfRefs {
            x := x
            x.doSomething()
        }

        Если не сделать x := x, то все вызовы doSomething() будут сделаны у последнего элемента sliceOfRefs. Это уже не говоря о необходимости писать _ постоянно.
        Ответить
        • > то все вызовы doSomething() будут сделаны у последнего элемента sliceOfRefs

          Лол что? Если в замыкания x утаскивать (или писать go x.doSomething()), то проблема будет, как в JS. А просто в цикле всё будет ок.
          package main
          import "fmt"
          
          type x int
          
          func (self *x) doSomething() {
          	fmt.Println(*self)
          }
          
          func main() {
          	var a, b, c, d x = 1, 2, 3, 4
          	sliceOfRefs := []*x{ &a, &b, &c, &d }
          	for _, x := range sliceOfRefs {
          		x.doSomething()
          	}
          }

          Output:
          1
          2
          3
          4
          Ответить
          • Писал прямо в комментарии, поэтому что-то проустил. Но суть не в том, что проблема такая же, как и в ж.скрипте, а в замечательном решении. Ни один нормальный человек не догадается зачем нужен код х := х.
            Ответить
            • Дааа, супер-проблема. Назови переменную по-человечески, чтобы было понятно, зачем.
              capturedX := x

              То, что язык позволяет делать shadow локальных переменных - не то чтобы прям серьёзная проблема, кмк. Проблема в том, что завести новую переменную слишком просто?
              Ответить
              • Проблема в том, что авторы языка рекомендуют так делать. Ну и они так же как и борцуны за Яву выходят со всякими мифами и легендами о том как надо программировать, но в итоге плодят говно.

                Более того, от переименования переменной смысл не меняется-то. Какому нормальному человеку прийдет в голову что от присваивания переменной значения это значение будет копироваться? Никому не нужно такое поведение в языке где присваивание во всех остальных ситуациях вполне ожидаемо себя ведет.
                Ответить
                • > от присваивания переменной значения это значение будет копироваться?

                  Не надо путать присваивания и объявления с инициализацией.
                  x := x это по определению var x = x

                  > присваивание во всех остальных ситуациях вполне ожидаемо себя ведет

                  Присваивание всегда копирует значение в переменную, во всех ситуациях и контекстах. Просто иногда значением является указатель или его более толстые аналоги.
                  Ответить
                  • Не всегда, а только в горячечном бреду Ц++.

                    Любой нормальный человек скажет, что var x = x - это noop, и скорее всего просто удалит эту строчку.
                    На следующем этапе, когда это неожидано что-то испортит, тот же человек с фанатической преданностью будет в цикле копировать все переменные объявленные вне цилка: потому что умом понять зачем это нужно невозможно.
                    Ну и если жизнь заставит работать с этим говном, то научится лепить из говна и палок что-то. Так же как это делают на Ц++ и Ко.
                    Ответить
                    • >var x = x
                      У крестанутых еще разница, есть var или нету.

                      a = b; // simple copy
                      T c = a; //copy constructor
                      Ответить
                    • > Любой нормальный человек скажет, что var x = x - это noop

                      Необоснованные обобщения. Некоторые люди всё же привыкли к lexical scope, который разжёван где только можно.

                      > умом понять зачем это нужно невозможно

                      Тогда даже scheme обладает описанным фатальным недостатком невозможности понимания. Ведь если класть одну и ту же переменную в замыкания, во всех замыканиях у неё будет одно и тоже значение, вот ведь незадача.

                      Ну и рациональ вполне доступно описана в доке
                      https://golang.org/doc/effective_go.html
                      Ответить
                • >Какому нормальному человеку прийдет в голову что от присваивания переменной значения это значение будет копироваться?

                  Только на всю голову крестанутым крестоблядям. У них везде сайтэффекты зарыты, то копирующий конструктор, то еще какой std::move.
                  Ответить
  • wh0cd464349 <a href=http://erythromycin.news/>erythromycin</a> <a href=http://buyfurosemide.casa/>this site</a> <a href=http://cafergot.email/>ordering cafegot</a> <a href=http://elocon.systems/>elocon</a> <a href=http://clindamycin.exposed/>clindamycin</a> <a href=http://acyclovir.sexy/>acyclovir</a> <a href=http://cheapmetformin.store/>cheap metformin</a>
    Ответить
  • wh0cd627430 <a href=http://buycolchicine2.top/>buy colchicine</a> <a href=http://baclofen50.top/>baclofen</a> <a href=http://buybupropion8.top/>bupropion</a> <a href=http://buycephalexin15.top/>buy cephalexin</a>
    Ответить
  • wh0cd681797 <a href=http://elimite16.gdn/>permethrin cream</a> <a href=http://buyprozac2016.us/>buy prozac online uk</a> <a href=http://revia2014.top/>buy revia online</a> <a href=http://amoxicillin911.gdn/>amoxicillin</a>
    Ответить
  • wh0cd746358 <a href=http://robaxinonline.us.com/>robaxin online</a> <a href=http://onlinediflucan.us.com/>generic for diflucan</a> <a href=http://onlinevermox.us.com/>Online Vermox</a>
    Ответить
  • wh0cd855080 <a href=http://nexium.sexy/>nexium dr</a> <a href=http://zoloft.store/>related site</a> <a href=http://colchicine.shop/>colchicine</a> <a href=http://cialis20mg.sexy/>cialis</a>
    Ответить
  • wh0cd29465 <a href=http://buyvaltrex16.top/>valtrex</a> <a href=http://buyadalat16.top/>buy adalat</a> <a href=http://buydiclofenac3.top/>buy diclofenac</a> <a href=http://buyeurax365.top/>eurax</a> <a href=http://buyneurontin8.top/>neurontin 300mg</a> <a href=http://buylipitor-365.gdn/>buy lipitor</a> <a href=http://tadalafil1.top/>tadalafil</a> <a href=http://buyzoloft1.top/>zoloft</a>
    Ответить
    • Заработать биткоины без вложений быстро

      <a href=http://bolt53.blogspot.ru>заработать на форекс без вложений видео</a>
      <a href=http://bolt53.blogspot.ru>хочу заработать в сети без вложений</a>
      <a href=http://bolt53.blogspot.ru>как заработать подростку в 13 лет в интернете без вложений</a>
      <a href=http://bolt53.blogspot.ru>как заработать в интернете с нуля без вложений и затрат</a>
      <a href=http://bolt53.blogspot.ru>как заработать в интернете без вложений скачать</a>

      <a href=http://bolt53.blogspot.ru><img>http://s45.radikal.ru/i108/1703/1b/31c45f37a0d7.png</img></a>



      Дополнительный доход в интернете, который вполне может стать Вашим постоянным заработком.
      Для перехода жмите кнопку

      <a href=http://bolt53.blogspot.ru><img>http://s019.radikal.ru/i639/1703/88/f0c798898a35.png</img></a>
      <a href=http://bolt53.blogspot.ru>видео реально ли заработать в интернете без вложений</a>
      <a href=http://bolt53.blogspot.ru>как заработать в интернете без вложений сидя в декрете</a>
      <a href=http://bolt53.blogspot.ru>как заработать на киви кошельке без вложений сайты</a>
      <a href=http://bolt53.blogspot.ru>покер где можно заработать реальные деньги без вложений</a>
      <a href=http://bolt53.blogspot.ru>работа официально</a>

      <a href=http://mikrosaym.blogspot.ru>Выгодный кредит онлайн</a>
      <a href=http://bit.ly/2oI4psW>ВЫДАВАЙ МИКРОЗАЙМЫ С ГАРАНТИРОВАННОЙ ДОХОДНОСТЬЮ ОТ 192% ДО 265% ГОДОВЫХ И ЗАБУДЬ О ФИНАНСОВЫХ ПРОБЛЕМАХ</a>
      https://mikrosaym.blogspot.ru/ МГНОВЕННОЕ ФИНАНСИРОВАНИЕ ОНЛАЙН

      ~$$~
      Ответить
  • wh0cd561754 <a href=http://genericlevitra.us.org/>LEVITRA OVER THE COUNTER</a> <a href=http://onlinevermox.us.com/>online vermox</a> <a href=http://suprax.us.com/>purchase suprax</a> <a href=http://elocontopicalcream.us.com/>elocon topical cream</a>
    Ответить
  • wh0cd320545 <a href=http://erythromycin2.top/>ilosone</a> <a href=http://buyavodart2.top/>buy avodart</a> <a href=http://buyneurontin100.gdn/>neurontin</a> <a href=http://buyindocin3.top/>indocin</a> <a href=http://triamterene3.top/>triamterene</a> <a href=http://buyeurax10.gdn/>buy eurax</a> <a href=http://buyinderal9.top/>inderal</a> <a href=http://buyprednisolone2015.top/>buy prednisolone 5mg</a>
    Ответить
  • wh0cd701073 <a href=http://trazodone247.us.org/>trazodone tablets</a> <a href=http://costofviagra24.us.org/>Cost Of Viagra</a> <a href=http://baclofen24.us.org/>Baclofen Online</a>
    Ответить
  • wh0cd833554 <a href=http://toradol24.us.org/>Toradol</a> <a href=http://buyviagra24.us.org/>Buy Viagra Online</a> <a href=http://cheapviagra24.us.org/>generic viagra best price</a>
    Ответить
  • wh0cd821124 <a href=http://albuterol4.top/>albuterol</a> <a href=http://buylipitor-365.gdn/>lipitor</a> <a href=http://buyelimite-2016.gdn/>buy elimite</a> <a href=http://buyavodart250.top/>buy avodart</a> <a href=http://levitra1.gdn/>buy generic levitra online</a> <a href=http://zithromax2.top/>cheap zithromax online</a> <a href=http://celebrex-3.gdn/>celebrex</a>
    Ответить
  • wh0cd331868 <a href=http://onlinediclofenac.us.com/>purchase diclofenac</a> <a href=http://levitrainfo.se/>levitra</a> <a href=http://antabusemedication.us.com/>antabuse medication</a> <a href=http://yasmin247.us.com/>yasmin disney</a>
    Ответить
  • wh0cd257107 <a href=http://onlineinderal.us.com/>inderal 40mg 80mg</a> <a href=http://buylisinopril.us.org/>buy lisinopril</a> <a href=http://buyantabuse.us.com/>buy antabuse</a> <a href=http://cialis20mg247.us.org/>Cialis 20mg</a> <a href=http://buycelebrex.us.org/>Buy Celebrex</a>
    Ответить
  • wh0cd211828 <a href=http://viagraonline24.us.org/>buy viagra no prescription</a> <a href=http://tadalis24.us.org/>order tadalis</a> <a href=http://toradol24.us.org/>toradol price</a>
    Ответить
  • wh0cd494958 <a href=http://trazodone247.us.org/>clicking here</a> <a href=http://celebrex24.us.org/>drug celebrex</a>
    Ответить
  • wh0cd39663 <a href=http://effexor24.us.org/>Order Effexor</a> <a href=http://amitriptyline24.us.org/>elavil 25mg</a>
    Ответить
  • wh0cd712405 <a href=http://effexor2.top/>effexor</a> <a href=http://buyadalat365.top/>generic adalat</a> <a href=http://buyviagra9.top/>viagra</a> <a href=http://buyatenolol75.top/>atenolol</a>
    Ответить
  • wh0cd963802 <a href=http://zoloft-0.gdn/>zoloft</a> <a href=http://tetracycline17.top/>purchase tetracycline</a> <a href=http://buyindocin247.top/>indocin</a>
    Ответить
  • wh0cd365828 <a href=http://buyclomid6.top/>clomid tablet</a> <a href=http://buyazithromycin-8.top/>where can i buy azithromycin</a> <a href=http://sildenafil-247.top/>sildenafil</a> <a href=http://furosemide-9.gdn/>furosemide</a> <a href=http://cafergot2017.top/>cafergot</a> <a href=http://buystromectol11.top/>buy stromectol</a> <a href=http://kamagra365.gdn/>kamagra</a>
    Ответить
  • wh0cd29463 <a href=http://buyclindamycin6.gdn/>clindamycin</a> <a href=http://bupropion2012.gdn/>explained here</a> <a href=http://buycrestor20.top/>buy crestor</a> <a href=http://albuterol4.top/>inhaler albuterol</a> <a href=http://buyneurontin-7.gdn/>neurontin</a>
    Ответить
  • wh0cd972880 <a href=http://buy-acyclovir.com/>website here</a> <a href=http://diclofenac365.us.com/>Generic Diclofenac</a> <a href=http://buycephalexin.us.org/>buy cephalexin</a>
    Ответить
  • wh0cd257116 <a href=http://buyviagrasoft20.top/>buy viagra soft tabs</a> <a href=http://buyampicillin15.top/>more bonuses</a> <a href=http://yasmin10.top/>yasmin online</a> <a href=http://colchicine2010.gdn/>colchicine</a> <a href=http://trazodone-365.top/>trazodone hcl</a> <a href=http://buysynthroid2013.gdn/>order synthroid without prescription</a>
    Ответить
  • wh0cd138183 <a href=http://advair.us.com/>advair</a> <a href=http://buy-methotrexate.com/>Buy Methotrexate</a> <a href=http://zithromax.us.org/>zithromax</a> <a href=http://propranolol.biz/>buy propranolol</a>
    Ответить
  • wh0cd668244 <a href=http://prednisone247.us.org/>predisone with no presciption</a>
    Ответить
  • wh0cd211830 <a href=http://buycialis2015.top/>cialis levitra</a> <a href=http://buystromectol8.top/>stromectol</a> <a href=http://bupropion250.top/>bupropion</a> <a href=http://buytamoxifen-7.gdn/>tamoxifen</a> <a href=http://buyanafranil365.top/>info</a> <a href=http://tamoxifen15.top/>nolvadex tamoxifen citrate</a> <a href=http://motilium-2016.gdn/>motilium over the counter</a> <a href=http://seroquel16.gdn/>seroquel for depression and anxiety</a>
    Ответить
  • wh0cd354513 <a href=http://buyvaltrex-8.top/>buy valtrex</a> <a href=http://tretinoin-6.gdn/>tretinoin cream</a> <a href=http://lasix17.top/>lasix</a>
    Ответить
  • wh0cd831324 <a href=http://buysildalis247.top/>sildalis online</a> <a href=http://buytoradol25.gdn/>toradol for kidney stones</a> <a href=http://hydrochlorothiazide100.top/>microzide</a>
    Ответить
  • wh0cd105346 <a href=http://diclofenacsodium.us.com/>Diclofenac With No RX</a> <a href=http://cephalexin.us.org/>cephalexin online</a> <a href=http://onlinelasix.us.com/>lasix</a>
    Ответить
  • wh0cd387358 <a href=http://buycephalexin.us.org/>cephalexin online</a> <a href=http://propranolol.biz/>buy propranolol</a> <a href=http://avodart2016.us.com/>generic dutasteride</a> <a href=http://adalat.us.com/>generic adalat</a> <a href=http://effexor.us.com/>Effexor</a>
    Ответить
  • wh0cd299033 <a href=http://pioglitazone.us.com/>Metformin</a> <a href=http://elimite365.us.com/>elimite</a> <a href=http://cheapgenericviagra.us.com/>cheap generic viagra</a>
    Ответить
  • wh0cd843770 <a href=http://buyviagrasoft3.top/>viagra soft</a> <a href=http://buycitalopram2017.top/>citalopram</a> <a href=http://buylasix2014.top/>lasix purchase</a> <a href=http://buylisinopril2013.top/>lisinopril 10mg</a> <a href=http://eurax2011.top/>eurax</a> <a href=http://buyalbendazole-3.top/>continue reading</a>
    Ответить
  • wh0cd442835 <a href=http://albuterol2012.top/>albuterol prescription</a> <a href=http://lisinopril17.top/>lisinopril</a> <a href=http://buyanafranil100.top/>anafranil for depression</a> <a href=http://buybentyl-2015.gdn/>bentyl for diarrhea</a> <a href=http://abilify365.top/>abilify</a> <a href=http://buyazithromycin8.top/>buy azithromycin</a>
    Ответить
  • wh0cd898132 <a href=http://baclofen247.us.org/>Baclofen No Prescription</a>
    Ответить
  • wh0cd420187 <a href=http://valtrex15.top/>valtrex without prescription</a> <a href=http://lipitor-9.gdn/>lipitor</a> <a href=http://cafergot100.gdn/>cafergot</a> <a href=http://kamagra-247.gdn/>kamagra</a> <a href=http://buycitalopram12.top/>citalopram</a> <a href=http://atarax2.gdn/>atarax for hives</a> <a href=http://sildalis75.gdn/>generic sildalis</a> <a href=http://buyerythromycin2016.top/>erythromycin over the counter</a>
    Ответить
  • wh0cd474549 <a href=http://viagraonline24.us.org/>visit this link</a> <a href=http://medrol24.us.org/>medrol pak 4mg</a>
    Ответить
  • wh0cd908305 <a href=http://avana2011.top/>avana</a> <a href=http://anafranil365.top/>anafranil</a> <a href=http://lisinopril6.top/>lisinopril</a> <a href=http://lasix17.top/>lasix</a> <a href=http://buyvardenafil-247.gdn/>vardenafil tablets 20 mg</a>
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8