- 1
IT Оффтоп #98
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
IT Оффтоп #98
#68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
#69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
#70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
#71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
#72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
#73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
#74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
#75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
#76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
#77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
#78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
#79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
#80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
#81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
#82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
#83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
#84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
#85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
#86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
#87: https://govnokod.ru/27429 https://govnokod.xyz/_27429
#88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
#89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
#90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
#91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
#92: https://govnokod.ru/27460 https://govnokod.xyz/_27460
#93: https://govnokod.ru/27463 https://govnokod.xyz/_27463
#94: https://govnokod.ru/27466 https://govnokod.xyz/_27466
#95: https://govnokod.ru/27473 https://govnokod.xyz/_27473
#96: https://govnokod.ru/27478 https://govnokod.xyz/_27478
#97: https://govnokod.ru/27484 https://govnokod.xyz/_27484
+2
/*
https://habr.com/ru/post/523688/
Так как мы работаем с макросистемой C/C++, то аналог функций — макрос, этой
абстракцией мы и будем пользоваться. Мы будем передавать идентификатор первого
рекурсивного макроса в следующий рекурсивный макрос, и тот, в свою очередь, по
мере завершения своего исполнения будет передавать поток исполнения в первый
рекурсивный макрос, так называемое продолжение. Нам также понадобиться терминальное
продолжение — ML99_PRIV_REC_STOP — оно будет являться продолжением, поставляющимся
в самый-самый первый рекурсивный макрос, ведь логично, что никуда, кроме как
закончить исполнение программы на данном месте, нам перепрыгивать не нужно. Жилка
двигателя рекурсии — это цепочка из макросов-раскрывателей следующего вида:
*/
#define ML99_PRIV_REC_0(choice, ...) ML99_PRIV_REC_NEXT(1, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_1(choice, ...) ML99_PRIV_REC_NEXT(2, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_2(choice, ...) ML99_PRIV_REC_NEXT(3, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_3(choice, ...) ML99_PRIV_REC_NEXT(4, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_4(choice, ...) ML99_PRIV_REC_NEXT(5, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_5(choice, ...) ML99_PRIV_REC_NEXT(6, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_6(choice, ...) ML99_PRIV_REC_NEXT(7, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_7(choice, ...) ML99_PRIV_REC_NEXT(8, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_8(choice, ...) ML99_PRIV_REC_NEXT(9, choice)(__VA_ARGS__)
#define ML99_PRIV_REC_9(choice, ...) ML99_PRIV_REC_NEXT(10, choice)(__VA_ARGS__)
//...
//И так до 1023:
Интересно, этот чувак сидит на говнокоде?
+2
namespace fooX.bar.baz {
export class A {
foo() {
glb1++
}
}
export function b() {
glb1++
glb1++
}
}
import bz = fooX.bar.baz
import AA = fooX.bar.baz.A
function testImports() {
glb1 = 0
bz.b()
let x = new AA()
x.foo()
assert(glb1 == 3, "imports")
}
function main()
{
testImports()
}
Даже и не знаю, что вам тут еще наговнокодить... вот работаю над неймспейсами ..
+2
public static int booleanToInt(Boolean value) {
int res;
if (value == null) {
res = 0;
} else {
if (value) {
res = 1;
} else {
res = 0;
}
}
return res;
}
Добро пожаловать к нам в индийскую школу программирования!
+2
func Map[F, T any](s []F, f func(F) T) []T {
r := make([]T, len(s))
for i, v := range s {
r[i] = f(v)
}
return r
}
Го сдался.
+2
function main() {
for (const q of [1, 12]) {
print(q);
}
for (const l of "HW") {
print(l);
}
print("done.");
}
продолжаем говнокодить компилятор для TypeScript (типа новый сабсет для native-ого кода)
+2
Inductive my_bool :=
| my_false
| my_true.
Theorem shit_happens:
(if my_false then 42 else 100500) = 42.
Proof.
reflexivity.
Qed.
Какая типизация )))
+2
<?php
function syoma_verify_spam($comment_post_ID) {
// NOTE: На telegram этот метод не вызывается
$content = trim($_POST['comment']);
if (preg_match('#<a href=#', $content) && !preg_match('#\[code#', $content)) {
die('Ня, пока.');
}
$content = strip_tags(apply_filters('gk_content', $content));
$content = strtr($content, array(
'A' => 'А',
'a' => 'а',
'B' => 'В',
'E' => 'Е',
'e' => 'е',
'3' => 'З',
'K' => 'К',
'k' => 'к',
'M' => 'М',
'H' => 'Н',
'O' => 'О',
'o' => 'о',
'P' => 'Р',
'p' => 'р',
'C' => 'С',
'c' => 'с',
'T' => 'Т',
'Y' => 'У',
'y' => 'у',
'X' => 'Х',
'x' => 'х',
'b' => 'ь',
));
$content = mb_strtolower($content);
if (preg_match('#русня|хуйло|ватник|ватный|пидораш|пидорах#', $content)) {
die('Рус-ня, пока.');
}
}
Угадайте, почему фильтрация <a href не в конце функции?
+2
#include <stdio.h>
#include <stdlib.h>
#define RW(a, c) for(src = (a);src < (c); src++, dst++){*dst=*src;}
void *pairscan(char *p)
{
size_t p_count = 1;
do {
if(*p == 'P') {
p_count++;
}
else {
p_count--;
}
p++;
} while(p_count != 0);
return p;
}
void rewrite(char *src, char *dst)
{
int p_r = 0;
while(*src == 'P') {
*dst = *src;
src++; dst++;
if (p_r < 3)
{
p_r++;
}
}
if(*src == 'I') {
if(p_r < 1) {
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst--;
src++;
//src = pairscan(src+1);
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
if(*src == 'K') {
if(p_r < 2)
{
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst-=2;
char *exp1 = pairscan(src+1);
char *exp2 = pairscan(exp1);
RW(src+1,exp1);
for(; src < exp2; src++){}
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
if(*src == 'S') {
if(p_r < 3) {
while(*src != 0){
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst-=1;
char *exp1 = pairscan(src+1);
char *exp2 = pairscan(exp1);
char *exp3 = pairscan(exp2);
RW(src+1,exp1);
RW(exp2,exp3);
*dst = 'P';
dst++;
RW(exp1,exp2);
RW(exp2,exp3);
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
*dst = 0;
return;
}
Кобенаторная логика
SKI combinator calculus
+2
from enum import Enum
from dataclasses import dataclass
class Pathfind:
__init__ = lambda self, maxmoves=9999: exec(f'self.maxmoves={maxmoves}')
def pathfind(self, cells):
i, found, ecords, path = 0, False, (0,0), list()
while(not found):
a = self.getbyval(cells, i)
for n in [j for sub in [self.filterneighbors(self.getneighbors(cells, x[0], x[1])) for x in a] for j in sub]:
cells[n.ccoords[1]][n.ccoords[0]].value = i+1 if cells[n.ccoords[1]][n.ccoords[0]].value>(i+1) else cells[n.ccoords[1]][n.ccoords[0]].value
if cells[n.ccoords[1]][n.ccoords[0]].ctype == CellType.END: found, ecords = True, (n.ccoords[1],n.ccoords[0])
if i<self.maxmoves: i+=1
else: return False
found, cpath = False, ecords
while(not found):
path.append(cpath)
if cpath == self.getbyval(cells, 0)[0]: return path
cell = list(filter(None, ([x if x.value==cells[cpath[0]][cpath[1]].value-1 else None for x in self.filterneighbors(self.getneighbors(cells, cpath[0], cpath[1]))])))[0]
cpath = (cell.ccoords[1],cell.ccoords[0])
listtocells = lambda self, lst: [[Cell(CellType(lst[y][x]), (x,y), 0 if lst[y][x]==2 else self.maxmoves) for x in range(len(lst[y]))] for y in range(len(lst))]
getbyval = lambda self, cells, val: [(x, y) for x in range(len(cells)) for y in range(len(cells[x])) if cells[x][y].value == val]
getneighbors = lambda self, cells, x, y: list(filter(None, [cells[x-1][y] if x>0 else None,cells[x+1][y] if x<len(cells)-1 else None,cells[x][y-1] if y>0 else None,cells[x][y+1] if y<len(cells[x])-1 else None]))
filterneighbors = lambda self, cells: list(filter(lambda cell: False if (cell is None) or cell.ctype==CellType.WALL else True, cells))
class CellType(Enum):
AIR, WALL, START, END = 0, 1, 2, 3
@dataclass
class Cell:
ctype: CellType = CellType.AIR
ccoords: tuple = (0,0)
value: int = 0
Максимально уёбищная реализация волнового алгоритма.