- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
size = 3
lines = ["___", "bcd", "___"]
board = [[None]*size]*size
for x in range(0, size):
for y in range(0, size):
if lines[x][y] != '_':
board[x][y] = lines[x][y]
print(board)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−100
size = 3
lines = ["___", "bcd", "___"]
board = [[None]*size]*size
for x in range(0, size):
for y in range(0, size):
if lines[x][y] != '_':
board[x][y] = lines[x][y]
print(board)
я бы, очевидно, хотел видеть результат:
[[None, None, None], ['b', 'c', 'd'], [None, None, None]]
но питоша выводит:
[['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]
+133
#include <math.h>
...
result = (thisCos ? cos : sin)(3.140);
Коллега занимается инновациями в Сколково, так они там изобрели операцию NOT на континууме.
+161
function toInt(number) {
return number && + number | 0 || 0;
}
http://ideone.com/igo7ag
Минут 10 назад меня ошарашили фразой о методе toInt(), который, якобы, есть в javascript. Гугл выдал всего одну ссылочку, в которой говорится о нем: http://javascript.ru/forum/misc/22100-funkciya-toint-razyasnite-pozhalujjsta-neskolko-momentov.html. Увидев данный код, я просто не мог не выложить его сюда.
−94
$class = (preg_match("/^[0-9]+$/", $i/2)) ? "cssBgHex0F0F0F" : "cssBgHexAFAFAF";
ПХП-коллега выдал: подсветка чётных номеров строк :)
+77
delete[] Memory, leak; //Унарные операторы, такие уринарные.
Былинный отказ.
+67
function IntToHex(N: integer): string;
const
S = '0123456789ABCDEF';
var
i: integer;
begin
SetLength(Result, 8);
for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
end;
Носки менял, ноги мыл, все равно воняет хаккирством.
И оно почему-то в модуле WinAPI.pas у Тараса лежит о_О
+105
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
//All mouse messages have to be passed to the Master Edit Control
//because the panel intercepts them.
if (m.Msg == PUtils.WM_MOUSEMOVE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONDOWN)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONUP)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_LBUTTONDBLCLK)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_MOUSELEAVE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_RBUTTONDOWN)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
else
if (m.Msg == PUtils.WM_MOUSEACTIVATE)
PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
}//Override WndProc
паубивав бы !!!
+74
private static class NullReader extends Reader {
public int read(char[] cbuf, int off, int len) {
return 0;
}
public void close() {}
}
Однажды понадобилось работать с модулем, который что-то читает с помощью StreamTokenizer, но вместо реального файла подсовывать ему что-то своё, генерируемое на ходу, и при этом быть в курсе, какое место он сейчас читает. Решил пронаследоваться от StreamTokenizer и переопределить ему nextToken(). Оказалось, что у StreamTokenizer нет пустого конструктора, надо обязательно вызвать super и передать туда какой-нибудь Reader. Попробовал передавать null - оказалось, что в его конструкторе стоит проверка, которая сразу кидает NullPointerException. Блин, зачем ему Reader, если он к этому Reader никогда не обратится, ведь я nextToken переопределил! Пришлось сделать свой Reader-заглушку. Но чтобы пронаследоваться от абстрактного Reader, нужно обязательно определить методы read и close. Вот такая шняга в итоге получилась. Недавно случайно открыл код на этом месте и долго на неё пялился :-)
+123
val ret = method.invoke(this, args:_*)
Превращаем Array[Any] в жабовый Object[] в Scala.
+15
#include <iostream>
#include <functional>
template<class Container, class F, class A>
auto accumulate(Container c, F f, A acc) -> A
{
auto id = [](const A& a) -> const A& {return a;};
typedef decltype(std::begin(c)) Iterator;
const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt =
[&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
{
if(lst==c.end())
return cont(acc);
else
{
auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
return doIt(lst+1, conter);
}
};
return doIt(std::begin(c), id);
}
int main() {
std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
return 0;
}
Похоже написал какой-то монадолог.
http://ideone.com/y4Dm9z
Пример использования accumulate сам накатал.
Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
http://ideone.com/XWfuoP
Я убежден, что эта функция должна была выглядеть как-то так:
template<class Container, class F>
accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
{
return std::accumulate(c.begin(), c.end(), acc, f);
}
//Вызов этой функции:
accumulate({1,2,3,4});
let fold_right func acc list =
let rec loop list cont = //сюда мы передаем текущую функцию континуации
match list with
|[] -> cont acc //а вот и наше ключевое вычисление.
|head::tail -> loop tail (fun racc -> cont (func head racc))
loop list (fun x -> x)