- 1
- 2
std::tuple<int, int, int, bool> cock;
std::get<bool>(cock)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
std::tuple<int, int, int, bool> cock;
std::get<bool>(cock)
Сначала не понимал нахуй нужен геттер по типу, но при очередном добавлении нового int и забытии поменять индекс у була, заюзал его.
Бтв, почему нету cock.get<0>?
−1
#include <boost/hana.hpp>
#include <boost/hana/ext/std/tuple.hpp>
#include <cstdint>
namespace hana = boost::hana;
using namespace hana::literals;
using hana::transform, hana::decltype_, hana::to_set, hana::type_c;
auto copy = [](uint8_t * in, uint8_t * out, auto n, auto s) {
n.times.with_index([&](auto x) {
if constexpr(x == s) {
++in;
} else {
*(uint16_t *)out = *(uint16_t *)in;
out +=2; in += 2;
}
});
return in;
};
auto f(uint8_t * in, uint8_t * out) {
return copy(in, out, 33_c, 15_c);
}
https://habr.com/ru/post/482834/#comment_21094618
> Простая задача, самый базовый вариант https://godbolt.org/z/5F5mt9 — повторите.
Очередные набросы крестоговна на хабр от царя.
Найдите UB.
−3
void push_stack(node *topPTR, int value) {
node newPTR = malloc(sizeof(Stack));
if (newPTR != NULL) {
newPTR->alpha = value;
newPTR->nxtPTR = *topPTR;
*topPTR = newPTR;
}
else {
puts("error");
}
}
void push_stack_2(node_2 *topPTR_2, double value) {
node_2 newPTR = malloc(sizeof(Stack_2));
if (newPTR != NULL) {
newPTR->alpha = value;
newPTR->nxtPTR_2 = (void *) *topPTR_2;
*topPTR_2 = newPTR;
}
else {
puts("error");
}
}
int pop(node *fix) {
int value = 0;
node temp = *fix;
value = (*fix)->alpha;
*fix = (*fix)->nxtPTR;
free(temp);
return value;
}
double pop_2(node_2 *fix) {
double value = 0;
node_2 temp = *fix;
value = (*fix)->alpha;
*fix = (void *) (*fix)->nxtPTR_2;
free(temp);
return value;
}
char check_stack(node data) {
return data->alpha == 0 ;
}
int isOperator(char c) {
return c == '/' || c == '*' || c == '-' || c == '+' || c == '^' ;
}
int precedence(char data_1, char data_2) {
switch(data_1){
case '(':
return -1;
case '^':
if(data_2 == '^' ){
return 0;
}
else if (data_2 == '*' || data_2 == '/' || data_2 == '+' || data_2 == '-' ){
}
case '/' :
case '*':
if(data_2 == '^' ){
return -1;
}
else if( data_2 == '/' || data_2 == '*' ){
return 0;
}
else if( data_2 == '+' || data_2 == '-' ){
return 1;
}
case '+':
case '-':
if(data_2 == '^' || data_2 == '/' || data_2 == '*' ){
return -1;
}
else{
return 0;
}
}
}
calc 3
−1
double end_line( char data[0][200]){
double x = 0 , y = 0, sum = 0,ml = 0 ;
char *point = strtok( &data[1][0] , " " );
while( point != '\0' ){
if(isdigit( *point ) ){
ml = atof( (char *) point ) ;
push_stack_2( &topPTR_2,ml);
}
else if ( isOperator ( *point ) == 1 ){
y = pop_2(&topPTR_2);
x = pop_2(&topPTR_2);
if( *point == '^' ){
sum = pow(x, y) ;
push_stack_2( &topPTR_2, sum );
}
if( *point == '*' ){
push_stack_2(&topPTR_2, x * y );
}
if( *point == '+' ){
push_stack_2(&topPTR_2, x + y );
}
if( *point == '/' ){
push_stack_2(&topPTR_2, x / y );
}
if( *point == '-' ){
push_stack_2(&topPTR_2, x - y );
}
}
point = strtok(NULL , " " ) ;
return pop_2(&topPTR_2);
}
int in_line(char data[][200] , int lng ){
double x = 0 , y = 0, sum = 0 ;
int j = 0 , k = 0 , d = 0;
data[0][lng ] = ')';
push_stack(&topPTR, '(');
for (k = 0; check_stack((void *) &topPTR) != 1 ; k++) {
if ( isdigit(data[0][k]) || data[0][k] == '.' ) {
data[1][j++] = data[0][k];
}
if (data[0][k] == '(') {
push_stack(&topPTR, infix[0][k]);
}
if (isOperator(data[0][k]) == 1) {
data[1][j++] = ' ';
for (; precedence(topPTR->alpha, data[0][k]) != -1 ; ) {
data[1][j++] = pop(&topPTR);
data[1][j++] = ' ';
}
push_stack(&topPTR, data[0][k]);
push_stack(&topPTR, ' ' );
}
if (data[0][k] == ')') {
d = pop(&topPTR);
for (; d != '(' ; d = pop(&topPTR)) {
data[1][j++] = d;
}
}
else if (isalpha(data[0][k] ) ) {
puts ("error");
return 0;
}
}
return 1;
}
calc 2
−2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <math.h>
struct stack {
int alpha;
struct stack *nxtPTR;
};
typedef struct stack Stack;
typedef Stack *node;
struct stack_2 {
long double alpha;
struct stack *nxtPTR_2;
};
typedef struct stack_2 Stack_2;
typedef Stack_2 *node_2;
node topPTR = NULL;
node_2 topPTR_2 = NULL;
char check_stack(node data);
int isOperator(char c);
int precedence(char data_1, char data_2);
void push_stack(node *topPTR, int value);
void push_stack_2(node_2 *topPTR_2, double value);
int pop(node *fix) ;
double pop_2(node_2 *fix);
char infix[2][200];
double end_line( char data[0][200]);
int in_line(char data[][200] , int lng );
int main(void) {
fgets(&infix[0][0], sizeof(infix), stdin);
int k = strlen(&infix[0][0]);
double sl = 0;
if (in_line( infix , k ) == 1){
puts( &infix[1][0] );
puts(" ");
sl = end_line(infix);
printf("%.6f\n", sl );
}
return 0;
}
Calc 1
0
// ==UserScript==
// @name Unnamed Script 230178
// @version 1
// @grant none
// @include https://www.instagram.com/*
// ==/UserScript==
window.addEventListener('load', function(){
console.log("my script starting...");
const body = document.querySelector('body');
const config = {
attributes: true,
attributeFilter: ["style"]
};
const callback = function(mutationsList, observer) {
console.log("mutation aaargh-aaarghrghrhg");
for (let mutation of mutationsList) {
console.log('zaloop');
// if (mutation.type === 'attributes' && mutation.attributeName === 'style') {
try {
body.setAttribute('style', '');
document.querySelector('.RnEpo').setAttribute('style', 'display: none;');
observer.disconnect();
console.log("#hide");
} catch (e) {
console.log(e);
}
// }
}
};
const observer = new MutationObserver(callback);
observer.observe(body, config);
console.log("my script stop");
});
Ночью не спал
Инстаграм листал
Чтобы баннер не мешал
Такой скрипт написал.
0
class Display
{
public:
//pin 10_CS_LOAD pin 11_DIN pin 13_CLK
const int CS = 10;//CS на 10 пине
void R1_R2 (char x,char y)//метод вывода чисел 0-99 в разряды 1,2 c гашением нуля
{
char k1,k2;
if(x<10)
{
if(y==1) //если включена точка
{ SPI_out(2, arr_seg[x]+128);} //вывести число во второй разряд с точкой
else//выключена точка
{ SPI_out(2, arr_seg[x]);} //вывести число во второй разряд без точки
SPI_out(1, 0 );//в первый записать все нули ,и погасить его
return; //завершить метод
}
else
{
k1=0;
k2=x; while (k2>=10) {k1++; k2=k2-10;}
SPI_out(1,arr_seg[k1]); //вывести число в первый разряд
if(y==1) //если включена точка
{SPI_out(2,arr_seg[k2]+128);} //вывести число во второй разряд c точкой
else{SPI_out(2,arr_seg[k2]);} //без точки
}
}
void R2_R3 (char x)//метод вывода чисел 0-99 в разряды 2,3 (темепература)
{
char k1,k2;
if(x<10)
{
SPI_out(2,0); //пробел во второй разряд
SPI_out(3,arr_seg[x]); //вывести число в третьий разряд
}
else {
k1=0;
k2=x; while (k2>=10) {k1++; k2=k2-10;}
SPI_out(2,arr_seg[k1]); //вывести число во второй разряд без точки
SPI_out(3,arr_seg[k2]); //вывести число в третьий разряд
}
}
void R3_R4 (char x,char y)//метод вывода чисел 0-99 в разряды 3,4
{
char k1,k2;
k1=0;
k2=x; while (k2>=10) {k1++; k2=k2-10;}
if(y==1) //если включена точка
{ SPI_out(3,arr_seg[k1]);} //вывести число в третьий разряд без точки
else
{SPI_out(3,arr_seg[k1]+128); }//вывести число в третьий разряд с точкой
SPI_out(4,arr_seg[k2]); //вывести число в четвертый разряд
}
void R1 (unsigned char x,boolean p) //метод для отрисовки в первом разряде
{
if(p==true) //если активированна точка
{ SPI_out(1, arr_seg[x]+128 );} //вывести в первый разряд число по № из массива
else {SPI_out(1, arr_seg[x]);}
}
void R2 (unsigned char x,boolean p) //метод для отрисовки во втором разряде
{
if(p==true) //если активированна точка
{ SPI_out(2, arr_seg[x]+128 );} //вывести в первый разряд число по № из массива
else {SPI_out(2, arr_seg[x]);}
}
void R3 (unsigned char x,boolean p) //метод для отрисовки в третьем разряде
{
if(p==true) //если активированна точка
{ SPI_out(3, arr_seg[x]+128 );} //вывести в первый разряд число по № из массива
else {SPI_out(3, arr_seg[x]);}
}
void R4 (unsigned char x,boolean p) //метод для отрисовки в четвертом разряде
{
if(p==true) //если активированна точка
{ SPI_out(4, arr_seg[x]+128 );} //вывести в первый разряд число по № из массива
else {SPI_out(4, arr_seg[x]);}
}
//метод отрисовки во всех разрядах сразу
void allraz (unsigned char a,unsigned char b,unsigned char c,unsigned char d)
{
SPI_out(1, arr_seg[a]);
SPI_out(2, arr_seg[b]);
SPI_out(3, arr_seg[c]);
}
автору 40 лет, на секундочку
0
#include "Budilnic.h" //описание библиотеки Будильник
#define Bud_out 4 //на пин d4 выводится 1 если сработал любой будильник
#define Vibro_gen 9 //на пин d9 выводятся импульсы для подключения вибромотора
#define Buz 5 //на пин d5 подключена Пищалка с генератором
#define Stop_button 8 //на пин d8 подключена кнопка,подтянута на +5
Budilnic:: Budilnic()
{ //описываем пустой конструктор, он всегда вызывается при создании экземпляра класса
}
void Budilnic:: initialReading () //говорим что эта функция пренадлежит классу Budilnic
{ //при включении из EEPROM зачитываются сохраненные значения
SuH=Eprom_read(20,0); SuM=Eprom_read(21,0); SuF=Eprom_read(22,0);
MoH=Eprom_read(23,0); MoM=Eprom_read(24,0); MoF=Eprom_read(25,0);
TuH=Eprom_read(26,0); TuM=Eprom_read(27,0); TuF=Eprom_read(28,0);
WeH=Eprom_read(29,0); WeM=Eprom_read(30,0); WeF=Eprom_read(31,0);
ThH=Eprom_read(32,0); ThM=Eprom_read(33,0); ThF=Eprom_read(34,0);
FrH=Eprom_read(35,0); FrM=Eprom_read(36,0); FrF=Eprom_read(37,0);
SaH=Eprom_read(38,0); SaM=Eprom_read(39,0); SaF=Eprom_read(40,0);
//зачитываем пользовательскую настройку SetAlarmTimer
budilnic.SetAlarmTimer = EEPROM_uint_read(41,10); //читаем из EEPROM 2 бита адр.41 и адр.42. Начальная установка 10
pinMode(Bud_out, OUTPUT);//Сигнальный пин будильника на выход
pinMode(Stop_button, INPUT);//Кнопка Stop работает на вход
pinMode(Buz, OUTPUT); //Пишалка на выход
pinMode(Vibro_gen, OUTPUT); //Пин вибромотора на выход
}
void Budilnic:: check_Data () // передаем значения на проверку
{
check_Parametrs(SuF,SuH,SuM,0); //проверить флаг,часы,минуты Восскресенье
check_Parametrs(MoF,MoH,MoM,1); //проверить флаг,часы,минуты Понедельник
check_Parametrs(TuF,TuH,TuM,2); //проверить флаг,часы,минуты Вторник
check_Parametrs(WeF,WeH,WeM,3); //проверить флаг,часы,минуты Среда
check_Parametrs(ThF,ThH,ThM,4); //проверить флаг,часы,минуты Четверг
check_Parametrs(FrF,FrH,FrM,5); //проверить флаг,часы,минуты Пятница
check_Parametrs(SaF,SaH,SaM,6); //проверить флаг,часы,минуты Суббота
}
void Budilnic:: check_Parametrs (unsigned char F,unsigned char H,unsigned char M,unsigned char DAY)
{
if(F==1)
{ //если будильник включен
if(DAY==time.weekday)
{ //если совпал день недели
if(H==time.hours)
{ //если часы совпали
if(M==time.minutes)
{ //если минуты совпали
if(time.seconds==0)
{//если секунды по нулям
AlarmTimer=0; //обнуляем таймер
AlarmFlag=1; //поднимаем флаг, есть срабатывание
}}}}}
}//конец функции проверки будильников
void Budilnic :: LetsGo()
{//функция постоянно вызывается из майна
if(AlarmFlag==1)
{ //если зарегистрированно срабатывание
digitalWrite(Bud_out, HIGH); // зажигаем светодиод
Misic=1; //включаем воспроизведение мелодии
if( (AlarmTimer/2)==SetAlarmTimer ) //если таймер досчитал до заданного времени
{ //выключаем будильник
digitalWrite(Bud_out, LOW); // гасим светодиод
Misic=0; //отключить музыку
AlarmFlag=0; // и опускаем флаг
}
if(digitalRead(Stop_button)==LOW) //если нажата кнопка STOP
{
digitalWrite(Bud_out, LOW); // гасим светодиод
Misic=0; //отключить музыку
AlarmFlag=0; // и опускаем флаг
} //конец проверки кнопки STOP
}//конец проверки флага срабатывания
if(Misic)
{
//------------управляем импульсами на d9------------------------------
if(VibroTimer<10) digitalWrite(Vibro_gen, LOW); // Снять импульс d9
else digitalWrite(Vibro_gen, HIGH); //Подать импульс на d9
//-------------------сдесь проиррываем мелодию------------------------
if((BuzTimer>=0) & (BuzTimer<2)) Buzer=1; // пик 0.1
if((BuzTimer>=2) & (BuzTimer<4)) Buzer=0; // пауза 2.3
if((BuzTimer>=4) & (BuzTimer<6)) Buzer=1; // пик
if((BuzTimer>=6) & (BuzTimer<8)) Buzer=0; // пауза
if((BuzTimer>=8) & (BuzTimer<10)) Buzer=1; // пик
if((BuzTimer>=10) & (BuzTimer<20)) Buzer=0; // пауза
//--------второй куплет
это пиздец, товарищи
−1
var dockStation = new Vue({
el: '#dock',
data: {
enable: false,
text1: 'one',
text2: 'two',
text3: 'three',
concat: ''
},
watch: {
text1: function(v) {
this.concat = 'You listen:' + v + ' ' + this.text2+' '+this.text3;
},
text2: function(v) {
this.concat = 'You listen:' + this.text1+' '+v+' '+this.text3;
},
text3: function(v) {
this.concat = 'You listen:' + this.text1+' '+this.text2+' '+v;
},
}
});
когда ебашил нахуй в далеком 2015 году ахуенном получал за такой код 100 кусков в месяц
ебаать врмеена были
+4
int main()
{
using ToString::ExprToString;
using Result1 = Eval<Expr<Add,
Expr<Div, Int<5>, Int<3>>,
Expr<Div, Int<6>, Int<8>>>>;
std::cout << ExprToString<Result1>::toString() << std::endl; // 5/3 + 6/8 = (29 / 12)
using Result2 = Eval<Expr<Div, Int<100>, Int<20>>>;
std::cout << ExprToString<Result2>::toString() << std::endl; // 5
using Result3 = Eval<Expr<Div, Int<27>, Int<24>>>;
std::cout << ExprToString<Result3>::toString() << std::endl; // (9 / 8)
using Result4 = Eval<Expr<Mul,
Expr<Div, Int<5>, Int<3>>,
Expr<Div, Int<6>, Int<8>>>>;
std::cout << ExprToString<Result4>::toString() << std::endl; // 5/3 * 6/8 = (5 / 4)
using Result5 = Eval<Expr<Derivative, Var<0>, Expr<Mul, Var<0>, Var<0>>>>;
std::cout << ExprToString<Result5>::toString() << std::endl; // d/dx x*x = 2*x = (Var(0) * 2)
using Result6 = Eval<Expr<Derivative, Var<0>, Expr<Div, Int<2>, Var<0>>>>;
std::cout << ExprToString<Result6>::toString() << std::endl; // d/dx 2/x = -2 * x^2
return EXIT_SUCCESS;
}
Написал калькулятор с символьными вычислениями на шаблонах. Получился «Лисп».
https://wandbox.org/permlink/vAHC5IpyIIyQhUjJ