- 1
Просто оффтоп #8
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Просто оффтоп #8
#1: https://govnokod.ru/20162 https://govnokod.xyz/_20162
#2: https://govnokod.ru/25329 https://govnokod.xyz/_25329
#3: https://govnokod.ru/25415 https://govnokod.xyz/_25415
#4: (vanished) https://govnokod.xyz/_25472
#5: https://govnokod.ru/25693 https://govnokod.xyz/_25693
#6: (vanished) https://govnokod.xyz/_26649
#7: https://govnokod.ru/26672 https://govnokod.xyz/_26672
+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/Изменения-строки-в-функции
> Собственно задание заключается в написании функции, которая заменяет содержимое указанной строки этой же строкой, но с обратным порядком следования символов. Почему строка не переворачивается?
Какой багор )))
0
IT Оффтоп #58
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
#34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
#35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
#36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
#37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
#38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
#39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
#40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
#41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
#42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
#43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
#44: https://govnokod.ru/26627 https://govnokod.xyz/_26627
#45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
#46: (vanished) https://govnokod.xyz/_26646
#46: (vanished) https://govnokod.xyz/_26654
#47: https://govnokod.ru/26671 https://govnokod.xyz/_26671
#48: https://govnokod.ru/26707 https://govnokod.xyz/_26707
#49: https://govnokod.ru/26750 https://govnokod.xyz/_26750
#49: https://govnokod.ru/26776 https://govnokod.xyz/_26776
#50: https://govnokod.ru/26804 https://govnokod.xyz/_26804
#51: https://govnokod.ru/26809 https://govnokod.xyz/_26809
#52: https://govnokod.ru/26817 https://govnokod.xyz/_26817
#53: https://govnokod.ru/26833 https://govnokod.xyz/_26833
#54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
#55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
#56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
#57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
0
Отбор = Новый Структура();
Отбор.Вставить("РабочийДокумент", Работы[0].РабочийДокумент.Ссылка);
ВсеСтатусыЗаявки = РегистрыСведений.Renault_АвтосервисСтатусыРабот.СрезПоследних().НайтиСтроки(Отбор);
РегистрыСведений.Renault_АвтосервисСтату сыРабот.СрезПоследних() возвращает окол 200 000 записей и работает около 5 секунд.
+3
int main()
{
using output1 = Eval<
Input<'H', 'e', 'l', 'l', 'o'>,
App<
',', '>', ',', '>', ',', '>', ',', '>', ',', '>',
'<', '.', '<', '.', '<', '.', '<', '.', '<', '.'
>
>;
std::cout << "Hello reverse (read/write): " << SpanToStringContinuous<output1>::value() << std::endl;
using output2 = Eval<
Input<>,
App<'+', '+', '+', '[', '-', ']'>
>;
std::cout << "Simple loop (empty output): " << SpanToStringContinuous<output2>::value() << std::endl;
// Source: Wikipedia
using output3 = Eval<
Input<>,
App<
'+', '+', '+', '+', '+', '+', '+', '+', '[', '>', '+', '+', '+',
'+', '[', '>', '+', '+', '>', '+', '+', '+', '>', '+', '+', '+',
'>', '+', '<', '<', '<', '<', '-', ']', '>', '+', '>', '+', '>',
'-', '>', '>', '+', '[', '<', ']', '<', '-', ']', '>', '>', '.',
'>', '-', '-', '-', '.', '+', '+', '+', '+', '+', '+', '+', '.',
'.', '+', '+', '+', '.', '>', '>', '.', '<', '-', '.', '<', '.',
'+', '+', '+', '.', '-', '-', '-', '-', '-', '-', '.', '-', '-',
'-', '-', '-', '-', '-', '-', '.', '>', '>', '+', '.', '>', '+',
'+', '.'
>
>;
std::cout << "Hello World (wiki): " << SpanToStringContinuous<output3>::value() << std::endl;
return EXIT_SUCCESS;
}
https://wandbox.org/permlink/AERueBhsiS4WxGZY, https://pastebin.com/Cywe05JY
Напейсал полностью компайл-таймовый интерпретатор «Брейнфака» на крестовых шаблонах.
+1
void tick(void)
{
for (auto&& x : registry.objects)
(x? std::function<void(void)>([&](void) {((IObject*)(x))->tick(); }) : [&]() {})();
}
Мозг сказал что "((IObject*)(x))->tick();" написать слишком сложно и повелел написать вот это.
+3
int main()
{
+ ! - ! -- -- ! + ! - - - ++ ~ - ! -- -- -- ~ ~ ~ ++ ++ ++ - ~ ++ - * - - -
* ++ * * ++ * -- -- -- -- - * -- + * ++ ++ ++ ++ ++ * ++ * -- -- * -- - *
BRAINFUCK;
return 0;
}
https://ideone.com/EtK1J4
Ответ на https://govnokod.ru/26910. Теперь с реальной конпеляцией в нативный код.
+4
// https://govnokod.ru/26890#comment571155
// bormand 2 часа назад #
// Можно брейнфак запилить на операторах. Как раз вроде унарных хватает.
// & * - ~ ! -- + ++ --
#include <array>
#include <vector>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <limits>
struct Brainfuck {
public:
using IPType = uint16_t;
constexpr static size_t MAX_MEMORY = std::numeric_limits<IPType>::max();
std::array<uint8_t, MAX_MEMORY> memory{};
std::vector<char> app{};
IPType ip = 0;
IPType cell = 0;
IPType find_matching_tag(IPType cur_ip, char open, char close, int ip_direction)
{
size_t stack_size = 0;
do {
if (app[cur_ip] == close) {
--stack_size;
}
if (app[cur_ip] == open) {
++stack_size;
}
cur_ip += ip_direction;
} while (stack_size > 0);
return cur_ip - ip_direction;
}
IPType find_matching_close_tag(IPType cur_ip)
{
return find_matching_tag(cur_ip, '[', ']', 1);
}
IPType find_matching_open_tag(IPType cur_ip)
{
return find_matching_tag(cur_ip, ']', '[', -1);
}
void loop_open()
{
if (memory[cell] == 0) {
ip = find_matching_close_tag(ip);
} else {
++ip;
}
}
void loop_close()
{
if (memory[cell] != 0) {
ip = find_matching_open_tag(ip);
} else {
++ip;
}
}
void exec(char op)
{
switch (op) {
case '>': ++cell; break;
case '<': --cell; break;
case '+': ++memory[cell]; break;
case '-': --memory[cell]; break;
case '.': std::putchar(memory[cell]); break;
case ',': memory[cell] = static_cast<uint8_t>(std::getchar()); break;
case '[': loop_open(); return; // no ip advancing
case ']': loop_close(); return; // no ip advancing
}
ip++;
}
void run()
{
while (ip < app.size()) {
exec(app[ip]);
}
}
public:
Brainfuck & operator++() { app.push_back('>'); return *this; }
Brainfuck & operator--() { app.push_back('<'); return *this; }
Brainfuck & operator+() { app.push_back('+'); return *this; }
Brainfuck & operator-() { app.push_back('-'); return *this; }
Brainfuck & operator*() { app.push_back('.'); return *this; }
Brainfuck & operator&() { app.push_back(','); return *this; }
Brainfuck & operator!() { app.push_back('['); return *this; }
Brainfuck & operator~() { app.push_back(']'); return *this; }
Brainfuck & operator>>(const Brainfuck &) { run(); return *this; }
};
https://wandbox.org/permlink/XJUKGyb4YbnBVwOI
Бонус («99 bottles of beer»): https://pastebin.com/s4sBK9nX (взято с https://github.com/fabianishere/brainfuck/blob/master/examples/bottles-1.bf).
0
q)\l sp.q
+`p`city!(`p$`p1`p2`p3`p4`p5`p6`p1`p2;`london`london`london`london`london`lon..
(`s#+(,`color)!,`s#`blue`green`red)!+(,`qty)!,900 1000 1200
+`s`p`qty!(`s$`s1`s1`s1`s2`s3`s4;`p$`p1`p4`p6`p2`p2`p4;300 200 100 400 200 300)
https://code.kx.com/q/learn/tour/
+1
void Argument::parseAsInt()
{
auto res = std::from_chars(data.data(), data.data() + data.size(), dataInt);
if (res.ec == std::errc()) {
setTypeFlag(ArgType::Int);
}
}
void Argument::parseAsFloat()
{
// Rww: gcc still does not support float from_chars(), lol
const char *begin = data.data();
const char *end = begin + data.size();
char *endPtr = nullptr;
dataFloat = std::strtof(begin, &endPtr);
if (endPtr == end || dataFloat != 0.0f) {
setTypeFlag(ArgType::Float);
} else {
for (const char *it = endPtr; it < end; it++) {
if (!std::isspace(*it)) {
return;
}
}
setTypeFlag(ArgType::Float);
}
}
Говнокодил тут недавно, долго думал, что считать числом (пет, ТЗ нет). В конце-концов решил считать всё, что можно распарсить.