- 1
Просто оффтоп #43
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Просто оффтоп #43
#13: https://govnokod.ru/27159 https://govnokod.xyz/_27159
#14: https://govnokod.ru/27200 https://govnokod.xyz/_27200
#15: https://govnokod.ru/27237 https://govnokod.xyz/_27237
#16: (vanished) https://govnokod.xyz/_27282
#17: (vanished) https://govnokod.xyz/_27319
#18: (vanished) https://govnokod.xyz/_27380
#19: (vanished) https://govnokod.xyz/_27500
#20: https://govnokod.ru/27607 https://govnokod.xyz/_27607
#21: https://govnokod.ru/27951 https://govnokod.xyz/_27951
#22: https://govnokod.ru/28076 https://govnokod.xyz/_28076
#23: https://govnokod.ru/28266 https://govnokod.xyz/_28266
#24: https://govnokod.ru/28373 https://govnokod.xyz/_28373
#25: https://govnokod.ru/28474 https://govnokod.xyz/_28474
#26: https://govnokod.ru/28563 https://govnokod.xyz/_28563
#27: https://govnokod.ru/28645 https://govnokod.xyz/_28645
#28: (vanished) https://govnokod.xyz/_28664
#29: https://govnokod.ru/28674 https://govnokod.xyz/_28674
#30: https://govnokod.ru/28680 https://govnokod.xyz/_28680
#31: https://govnokod.ru/28688 https://govnokod.xyz/_28688
#32: https://govnokod.ru/28695 https://govnokod.xyz/_28695
#33: https://govnokod.ru/28702 https://govnokod.xyz/_28702
#34: (vanished) https://govnokod.xyz/_28708
#35: https://govnokod.ru/28715 https://govnokod.xyz/_28715
#36: https://govnokod.ru/28725 https://govnokod.xyz/_28725
#37: https://govnokod.ru/28733 https://govnokod.xyz/_28733
#38: (vanished) https://govnokod.xyz/_28748
#39: https://govnokod.ru/28758 https://govnokod.xyz/_28758
#40: https://govnokod.ru/28885 https://govnokod.xyz/_28885
#41: https://govnokod.ru/29061 https://govnokod.xyz/_29061
#42: https://govnokod.ru/29123 https://govnokod.xyz/_29123
+1
.chamfer {
display: table;
border-collapse: separate;
empty-cells: show;
background: transparent;
display: inline-block;
margin-bottom: 25px;
margin-right: 25px;
vertical-align: top;}
.chamfer .row {
display: table-row;}
.chamfer .boxcontent {
display: table-cell;
background: #FFFFFF;
font-size: 24px;
vertical-align: middle;
min-width: 200px;
width: 200px;
height: 173px;}
.chamfer .transparentbox {
display: table-cell;
background: transparent;
font-size: 24px;
vertical-align: middle;
min-width: 200px;
width: 200px;}
.chamfer .row .north-west {
display: table-cell;
border: 100px solid transparent;
border-top-width: 0px;
border-right-width: 0px;
border-bottom: 173px solid #FFF;
width: 0px;}
.chamfer .row .north-east {
display: table-cell;
border: 100px solid transparent;
border-top-width: 0px;
border-left-width: 0px;
border-bottom: 173px solid #FFF;
width: 0px;}
.chamfer .row .south-west {
display: table-cell;
border: 100px solid transparent;
border-bottom-width: 0px;
border-right-width: 0px;
border-top: 173px solid #FFF;
width: 0px;}
.chamfer .row .south-east {
display: table-cell;
border: 100px solid transparent;
border-bottom-width: 0px;
border-left-width: 0px;
border-top: 173px solid #FFF;
width: 0px;}
.chamfer .row3 .north-west {
border: 100px solid yellow;
border-top-width: 0px;
border-right-width: 0px;
border-bottom: 173px solid red;}
.chamfer .row3 .north-east {
border: 100px solid yellow;
border-top-width: 0px;
border-left-width: 0px;
border-bottom: 173px solid red;}
.chamfer .row2 .south-west {
border: 100px solid yellow;
border-bottom-width: 0px;
border-right-width: 0px;
border-top: 173px solid #FFF;}
.chamfer .row2 .south-east {
border: 100px solid yellow;
border-bottom-width: 0px;
border-left-width: 0px;
border-top: 173px solid #FFF;}
.chamfer .row4 .south-west {
border: 100px solid transparent;
border-bottom-width: 0px;
border-right-width: 0px;
border-top: 173px solid red;}
.chamfer .row4 .south-east {
border: 100px solid transparent;
border-bottom-width: 0px;
border-left-width: 0px;
border-top: 173px solid red;}
.chamfer .row2 .transparentbox, .chamfer .row3 .transparentbox {
background: yellow;
height: 173px;}
.chamfer .row3 .boxcontent, .chamfer .row4 .boxcontent {
background: red;
height: 173px;}
body {
color: #3B3A37;
background-color: olive;}
Реальный пример шестиугольных блоков (в виде сот) на чистом CSS2.
Страница в действии:
https://output.jsbin.com/xewelufoda/
0
Короче, размышлял я как-то на тему того, как надо делать правильный
теорем прувер, а не питушню всякую заедушную. Вот взять тот же Metamath -
там какие-то непонятные distinct правила для хуиты, что надо какие-то там
disjoint переменные, вот тут https://groups.google.com/g/metamath/c/M2dUfFATxD8
про это подробнее сказано.
Есть вот еще Metamath zero https://github.com/digama0/mm0 и это вот кажется ближе
к тому, что мне нравится.
Например вот https://github.com/digama0/mm0/blob/master/examples/assembler.mm1
тут есть какая-то теорема про ELF хедер. Это вот определение ELF идентификатора
local def ELF_IDENT_s: string =
$ ,0x7f ': ,"E" ': ,"L" ': ,"F" ':
_x02 ': _x01 ': _x01 ': _x00 ': _x00x8 $;
и там еще какой-то такой хуйней описывается то, где там точка входа записана в заголовке,
еще separation logic есть какая-то.
Но вот если почитать спецификацию для этого mm0 языка
https://github.com/digama0/mm0/blob/master/mm0.md :
pure means that this sort does not have any term formers. It is an uninterpreted domain which may have
variables but has no constant symbols, binary operators, or anything else targeting this sort. If a sort has
this modifier, it is illegal to declare a term with this sort as the target.
strict is the "opposite" of pure: it says that the sort does not have any variable binding operators. It is illegal
to have a bound variable or dummy variable of this sort, and it cannot appear as a dependency in another
variable. For example, if x: set and ph: wff x then set must not be declared strict. (pure and strict are not
mutually exclusive, although a sort with both properties is not very useful.)
provable means that the sort is a thing that can be "proven". All formulas appearing in axioms and theorems
(between $) must have a provable sort.
free means that definitions and theorems are not allowed to use dummy variables with this sort.
то кажется мне, что слишком это сложно. Надо проще это всё сделать, по принципу какой-нибудь
хрени типа SKI кобенационного исчисления. Т.е. допустим аксиома для модус поненса
AXIOM
%A
P P $IMP %A %B
_
%B
т.е. если мы матчим некую хуйню "%A" и некую хуйню "P P $IMP %A %B" где %A и %B это некая
срань, которая может быть "что-то" "P чтото чтото" или там "P чтото P чтото чтото" и т.д.
ну короче P означает что там две какие-то хуйни, вот как в той хрени https://govnokod.ru/27420
то можем дополнительно синтезировать высказывание "%B"
А теоремы это negj композиции из аксиом и других теорем. Типы можно прикручивать через какую-то хуйню
типа если арифметику Пеано описывать, тип можно так что-то нахуевертить аксиому, ну типа
Определение что ZERO это натуральное число.
AXIOM
_
P NAT ZERO
Что если инкрементнуть натуральное, будет тоже натуральное (S это функция следования)
AXIOM
P S %A
P NAT %A
_
P NAT P S %A
В общем надо бы подумать, как там запилить максимально простой и эффективно расширяемый язык для
доказывания всякой хуйни.
Смотрел Coq - какая-то ебаная перепитушня со всякими там типами-хуипами и какими-то
блядь рекурсиями. Хер поймешь, как эта вся дрнсня работает. Меня ваши типы не ебут
совершенно, я хочу сам свои типы конструировать, а не полагаться на какую-то невнятную
ебанину.
+3
#include <stdio.h>
#include <string.h>
#include "s_gets.h"
#define SIZE 30
void revers(char *);
int main(){
char str[SIZE];
s_gets(str, SIZE);
revers(str);
puts(str);
return 0;
}
void revers(char * str){
int size_ = strlen(str) - 1;
char tmp;
for(int i = size_; i >= 0; i--){
tmp = str[i];
str[i] = str[size_ - i];
str[size_ - i] = tmp;
}
}
https://ru.stackoverflow.com/questions/1173617/Изменения-строки-в-функции
> Собственно задание заключается в написании функции, которая заменяет содержимое указанной строки этой же строкой, но с обратным порядком следования символов. Почему строка не переворачивается?
Какой багор )))
−2
Чем обусловлена течка по сильной типизации, если она крайне неудобна?
К примеру, в "PHP" я могу спокойно написать код, подобный приведённому ниже,
и не надо будет придумывать всё новые и новые названия для переменных:
$count='microsoft,apple,amazon';
$count=explode(',', $count);
$count=count($count);
$count=$count.' шт.';
−2
int** delete_row(int** arr, int &row_count, int n)
{
delete arr[n-1];
for (int i = n-1; i < row_count-1; i++)
{
arr[i] = arr[i+1];
}
arr[row_count-1] = NULL;
delete arr[row_count-1];
row_count--;
return arr;
}
+75
procedure TForm1.RunCode(Code:String;A,B:Cardinal);
var
i,j:Cardinal;
dpth:Word;
itrCounter:Integer;
ans:Integer;
begin
i:=A-1;
repeat
i:=i+1;
if Code[i]='>' then
if p=30000 then p:=1 else p:=p+1;
if Code[i]='<' then
if p=1 then p:=30000 else p:=p-1;
if Code[i]='+' then allspace[p]:=allspace[p]+1;
if Code[i]='-' then allspace[p]:=allspace[p]-1;
if Code[i]='.' then Memo2.Lines.Text:=Memo2.Lines.Text + Chr(allspace[p]);
if Code[i]='[' then
begin
dpth:=0;
j:=i;
repeat
if (Code[j]=']') and (dpth>0) then dpth:=dpth-1;
j:=j+1;
if Code[j]='[' then dpth:=dpth+1;
if j>B then
begin
ShowMessage('Обнаружен незакрытый цикл. Выполнение остановится');
running:=False;
Exit;
end;
until (Code[j]=']') and (dpth=0);
itrCounter:=0;
while allspace[p]<>0 Do
begin
if running=False then Exit;
RunCode(Memo1.Text,i+1,j-1);
itrCounter:=itrCounter+1;
if itrCounter=10000000 then
begin
ans:=MessageDlg('Выполнение программы вероятно зациклилось (прошло уже 10 000 000 итераций). Возможно код содержит ошибки.' + #13 + 'Остановить выполнение?',mtConfirmation,[mbYes,mbNo],0);
if ans=mrYes then running:=False;
if ans=mrNo then itrCounter:=0;
end;
end;
i:=j;
end;
if Code[i]=',' then EnterChar;
Application.ProcessMessages;
until (i>=B) or (running=False);
end;
Процедура интерпретации brainfuck кода
−1
// добавляем новые ссылки
for i := 0 to ATags.Count - 1 do
begin
// так мне кажется лучше
Application.ProcessMessages;
кому или чему лучше кроме тебя, автор ?
+1
_RE_DESCRIPTION_TAG_OPEN = re.compile(r'<p\s+class="description">'.encode('utf-8'))
_RE_DESCRIPTION_TAG_CLOSE = re.compile(r'</p>\s*<p\s+class="author">'.encode('utf-8'))
def replace_description_tag(content, new_tag):
content = _RE_DESCRIPTION_TAG_OPEN .sub(f'<{new_tag} class="description">'.encode('utf-8'), content)
return _RE_DESCRIPTION_TAG_CLOSE.sub(f'</{new_tag}><p class="author">'.encode('utf-8'), content)
Парсить HTML регулярками — нельзя. Но если HTML невалидный — то можно!
А дело в том, что ГК генерирует говно, которое пришлось фиксить таким вот диким образом, см. https://govnokod.ru/26373#comment522056.
+4
final Optional<Customer> customer = Optional.ofNullable(customerId)
.map(custId -> customerService.getById(custId)
.map(cust -> Optional.of(cust))
.orElseThrow(() -> new NoSuchCustomerException(custId)))
.orElse(Optional.empty());
Попытка функционального программирования, когда в язык добавили монаду Optional, но не добавили монаду Try.