- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
private List<Ball> _balls;
private Interaction GetInteraction(Ball ball) {
foreach (var b2 in _balls.SkipWhile(b => b != ball).Skip(1)) {
/* ... */
}
}
var table = _balls.Select(GetInteraction);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 3
+129
private List<Ball> _balls;
private Interaction GetInteraction(Ball ball) {
foreach (var b2 in _balls.SkipWhile(b => b != ball).Skip(1)) {
/* ... */
}
}
var table = _balls.Select(GetInteraction);
Откопал в своей проге.
нужно было определить, какой шарик с кем взаимодействует раньше всего, притом если уже рассчитано взаимодействие 1 и 2 шарика (при рассчёте взаимодействий 1 и 2, 1 и 3, 1 и 4, ... и выделено самое раннее взяимодействие шарика 1), то взимодействие 2 и 1 рассчитываеть не надо. Таким образом, нужно было пройти все пары шариков так, чтоб первый встретился в списке раньше второго.
Массивы, индексы и циклы? Не, не знаем такого. Только Select, только ФП, только колдовство со SkipWhile(b => b!=ball).Skip(1).
+137
{- Haskell -}
bruteforceGeneratorWithEasySimplication :: Description d => d -> [StandartTable]
bruteforceGeneratorWithEasySimplication description =
let width = size_h description; height = size_v description; vHeader = headerV description in
do
table <- genListBasedOn (map lineVariants vHeader)
return (ST table)
where
lineVariants :: [Int] -> [[Bool]]
lineVariants headerLine = let
всё_я_задолбался_однако = True -- K.O.
количество_цельных_блоков = length headerLine
число_промежутков = количество_цельных_блоков - 1
число_свободных_пробелов_которые_нам_нужно_распихать_между_цельными_блоками = ширина_поля - суммарная_длина_цельных_блоков
ширина_поля = size_h description
суммарная_длина_цельных_блоков = sum headerLine
возможная_строка_использующая :: [Int] -> [Bool]
возможная_строка_использующая разбиение = replicate (head разбиение) False ++
concat (zipWith (\x y -> replicate y True ++ replicate x False) (tail разбиение) headerLine)
и = and
по = undefined
in do
разбиение <- получить_разбиение_для_строки по (число_свободных_пробелов_которые_нам_нужно_распихать_между_цельными_блоками) и (число_промежутков)
return (возможная_строка_использующая разбиение :: [Bool])
получить_разбиение_для_строки по числу_свободных_элементов и числу_промежутков = do ...
Из раннего.
По-видимому, задолбался писать на тарабарщине, захотелось выражаться родными русскими словами.
+170
(function(a){ var m
return (m=a.length)<2 ? a[0] : (m=a[--m],a.length--,(a[a.length-1]>m)&&(a[a.length-1]=m),arguments.callee(a))
})(this.prop)
Вроде бы ищет минимум в this.prop.
P.S. this.prop как массив удаляется. Равен результату.