1.82K subscribers
3.08K photos
121 videos
15 files
3.42K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #rustlib #abnormalprogramming

analog-literals

assert_eq!(
analog_literal! { I----I }
+ analog_literal! { I------I },
analog_literal! { I----------I },
);


Поддерживаются также двухмерные и трёхмерные литералы (см. (а лучше не см.) документацию)
#prog #article #abnormalprogramming

McCarthy's Ambiguous Operator

Абьюз продолжений ради этого:

# amb will (appear to) choose values
# for x and y that prevent future
# trouble.
x = amb 1, 2, 3
y = amb 4, 5, 6

# Ooops! If x*y isn't 8, amb would
# get angry. You wouldn't like
# amb when it's angry.
amb if x*y != 8

# Sure enough, x is 2 and y is 4.
puts x, y
#bash #abnormalprogramming (кажется, эти два хештега можно совместить)
#prog #c #abnormalprogramming

Как сказал один из комментаторов: "Finally, Duff's undevice"
#game #abnormalprogramming #article

Simulating Rule 110 in Opus Magnum

Ввиду того, что симуляция сколько-нибудь большого пространства в игре затруднена, решение делается для закольцованного поля в 6 клеток. Но даже так это очень впечатляет.
#prog #python #article #abnormalprogramming

Python's Preprocessor

Python позволяет иметь в первой строке комментарий, который говорит о том, какая кодировка используется для текста файла. Имя кодировщика ищется в специальном месте, и механизм для предоставления этого кодировщика позволяет исполнять произвольный код на Python. Как следствие, это позволяет интерпретировать дальнейший текст как угодно — с синтаксисом, произвольно далёким от Python.

(thanks @itpgchannel)
#prog #abnormalprogramming #article

Building a url-shortener with Lambda — JUST Lambda
(и немного Python)

Работает без базы данных, если что
#prog #rust #article #abnormalprogramming

Take a break: Rust match has fallthrough

One can (ab)use labelled breaks in Rust to support fallthrough-like behaviour in match. Not at all pretty, not at all advisable, but it works, and sometimes that’s as much as we can hope for.

switch(len & 3)
{
case 3: k1 ^= tail[2] << 16;
case 2: k1 ^= tail[1] << 8;
case 1: k1 ^= tail[0];
k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
};

⬇️
'outer: {
'case1: {
'case2: {
'case3: {
match len & 3 {
3 => break 'case3,
2 => break 'case2,
1 => break 'case1,
_ => break 'outer,
}
} // 'case3:
k1 ^= (tail[2] as u32) << 16;
} // 'case2:
k1 ^= (tail[1] as u32) << 8;
} // case1:
k1 ^= tail[0] as u32;
k1 *= c1; k1 = k1.rotate_left(15); k1 *= c2; h1 ^= k1;
}