LINUX.ORG.RU

Кратко про нейронный сети. Тестирование.

 


0

1

Попросил переписать код на Ассемблере NASM alice.yandex.ru и deep.org

#include <stdio.h>
int main (void) {
int i, a;
/*Дерево*/
char  color_str[28][299] = {"*#*=*#+:+#@@####*+#@@@%%+#@@%%%%%*+#%%*.\n",
    "*%##%#+#@@@@**@*%@@%#***%@%%@@#####@@%%\n",
    "+#%%%#%@%@@%@%%%#*#@@%%%%###%%%%+*##%%%%\n",
    "+#%%%#%@%@@%@%%%#*#@@%%%%###%%%%+*##%%%%\n",
    "%#####%@@@%@%%#+%@%%%###*%@@@%%%%**@%%%#\n",
    "%#####%@@@%@%%#+%@%%%###*%@@@%%%%**@%%%#\n",
    "*%%%@%%%#%%*%%%%*%@%@%%@%@@@##%%#*#%#++#\n",
    "*%%%@%%%#%%*%%%%*%@%@%%@%@@@##%%#*#%#++#\n",
    "%==%%@%#%@@@%*=*@%%%@##@@%#*@%%%@##@@@%\n*",
    "%==%%@%#%@@@%*=*@%%%@##@@%#*@%%%@##@@@%*\n",
    "@@#+*%@@@@@%%**#%##%%%@@@@%##%%#%@%#@%%@\n",
    "%@%*+##*#@%#%*#@%%%%%@@@*##+*%@@#%%%%##*\n",
    "#++#+*#@%@%++#%%%%%%%@@%=*%@#%#+#%@@@@%%\n",
    "*%%##**######%%#@%%%%%#%%##@@##%@@@@%##*\n",
    "##%@@@%+%%%%#%@@@%%@@%%%#%@@#%@@@@@@@%%#\n",
    "##%@@@%+%%%%#%@@@%%@@%%%#%@@#%@@@@@@@%%#\n",
    "####*==+%%%#@@#*@@@@@@%%@@%%+*##@@%#@#*#\n",
    "#%@@%%@@#%%*%@@@+#@@%%%%*#%%%@@#+%%*#%%%\n",
    "%%%%*#%%%#++#%@%@@@@%%%@%%@%--*@####%##%\n",
    "**#@@%**@%#+%%%*+#%#%@@@@@@@@@*=#*#%@##@\n",
    "%+*@@%##%@%+++*%%%%%%%@%*%@@#++%%@%*@@%*\n",
    "#####%%%@*++++++#####%%#++*@@%%@%*===*%%\n",
    "##**+#%**+++++=+####%%#======##+%*======\n",
    "%*+++===++++++===*###%*======*##+##++===\n",
    "***+++==+++++++==+#%%%#=====++++***+++++\n",
    "***+++++++++++++=+*##%#+++++++******++++\n",
    "***+++++++++++++++*%###++++++*******++++\n",
    "++++++++++++++***%#=%#*****+*********+++\n"    ,
};
for (a=0; a < 28; a++) {
i=0;
while((i <299) && color_str[a][i] != '\0' ) {
 
    /*Красим листья*/
    if(color_str[a][i] == '@')
    printf("\033[92m%c", color_str[a][i]);
    /*Сбрасываем цвет*/
        if(color_str[a][i] != '@')
    printf("\033[0m%c", color_str[a][i]);
                i++;
        }
    }
    return 0;
}

Переписали. Код запустить не удалось ни от одного, ни от другого. Алиса предложила вдобавок код на python, чтобы создать массив строк для Ассемблера. Но, конечно, советов разной ценности дали обе сети.



Последнее исправление: AnonymUser (всего исправлений: 5)
Ответ на: комментарий от AnonymUser

проблема тут не в редакторах или алисах
чтобы было как по заветам ильича: «любая кухарка должна уметь управлять нейросетью» - сперва нужен необходимый набор базовых знаний и навыков, а то ты даже с людьми не сможешь договориться, не то что с ии

madcore ★★★★★
()
Ответ на: комментарий от madcore

Интересно. Я, честно говоря, пока для себя применения ИИ не нашел.

  1. Технический перевод?! Можно обойтись translate.google
  2. Генерация цепочек команд для администрирования?! В общем есть справчоники, хотя мне 1 раз удачно посоветовала сеть.
  3. Правка кода или текста (опечаток)?! Тут пока вообще затрудняюсь что-то сказать.

Но вот что интересно, сейчас ехал и думал, у сети же есть натренированность, т.е. как бы прогрессия, но есть предел этой прогрессии, а значит, есть и регрессия или деградация сети. Вопрос, конечно, кто это определяет?! Видимо, пользователь, в большей степени.

P.S. Цикл мне 1146 символов насчитал.

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)
Ответ на: комментарий от AnonymUser

Правка кода или текста (опечаток)?! Тут пока вообще затрудняюсь что-то сказать.

Вот с этим неплохо. Ловит опечатки и ошибки, но может придумать несуществующие. Поэтому надо попросить составить список ошибок и исправлять самому руками только если уверен, что это действительно ошибка.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

А я смотрю на качество компилятора. GCC генерирует в полтора раза лучший код, чем Clang, но сишный код переведённый через ИИ в ассемблер ожидаемо качественнее на порядок. Хотя, конечно, там тоже не всё гладко: как минимум от балды с запасом выставлен out_buf resb 40000, хотя у него есть точный размер.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)
Ответ на: комментарий от madcore

Ну не совсем с марса. Но да, надо более интересный бенчмарк делать, который будет пару секунд работать, чтоб уже и time разный был.

PS

Не вижу твой комментарий про попугаев. Вроде в игноре нет сообщений а я не вижу.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от AnonymUser

В идеале всё делается одной единственной печатью на экран, но да, сам алгоритм раскраски тогда пропадает, мы же константу печатаем, которая не прилетает нам откуда-то. Если хочется при этом читаемость кода сохранить, то делать надо через define.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Сюда можно подбавить условий:

  1. Пару-тройку «@» покрасить красным - условно яблоки.
  2. Добавить немного жёлтых листьев рандомно. Процентов 20 от зеленых. И столько оранжевых. Будто осень.
AnonymUser
() автор топика
Ответ на: комментарий от peregrine

это всё лишено смысла
всё, что там важного - это количество сисколлов на объём передаваемых, и, возможно, кол-во эск-последовательностей в них(при выводе в файл или поток точно без разницы)
или, например, попробуй во всех случаях перенаправить вывод в stderr, там дефолтно нет буферизации

и, кстати, с чем ты сравниваешь?
если с тем, где compressed_tree, то приплюсуй туда время на его создание, ибо это уже совсем другая программа

madcore ★★★★★
()
Ответ на: комментарий от peregrine

тогда уж так

sed -i -E 's/(@+)/\\033[92m\1\\033[0m/g' shittree.c

ц:
#include <stdio.h>
int main () {
    /*Дерево*/
    char * color_str =
        "*#*=*#+:+#\033[92m@@\033[0m####*+#\033[92m@@@\033[0m%%+#\033[92m@@\033[0m%%%%%*+#%%*.\n"
        "*%##%#+#\033[92m@@@@\033[0m**\033[92m@\033[0m*%\033[92m@@\033[0m%#***%\033[92m@\033[0m%%\033[92m@@\033[0m#####\033[92m@@\033[0m%%\n"
        "+#%%%#%\033[92m@\033[0m%\033[92m@@\033[0m%\033[92m@\033[0m%%%#*#\033[92m@@\033[0m%%%%###%%%%+*##%%%%\n"
        "+#%%%#%\033[92m@\033[0m%\033[92m@@\033[0m%\033[92m@\033[0m%%%#*#\033[92m@@\033[0m%%%%###%%%%+*##%%%%\n"
        "%#####%\033[92m@@@\033[0m%\033[92m@\033[0m%%#+%\033[92m@\033[0m%%%###*%\033[92m@@@\033[0m%%%%**\033[92m@\033[0m%%%#\n"
        "%#####%\033[92m@@@\033[0m%\033[92m@\033[0m%%#+%\033[92m@\033[0m%%%###*%\033[92m@@@\033[0m%%%%**\033[92m@\033[0m%%%#\n"
        "*%%%\033[92m@\033[0m%%%#%%*%%%%*%\033[92m@\033[0m%\033[92m@\033[0m%%\033[92m@\033[0m%\033[92m@@@\033[0m##%%#*#%#++#\n"
        "*%%%\033[92m@\033[0m%%%#%%*%%%%*%\033[92m@\033[0m%\033[92m@\033[0m%%\033[92m@\033[0m%\033[92m@@@\033[0m##%%#*#%#++#\n"
        "%==%%\033[92m@\033[0m%#%\033[92m@@@\033[0m%*=*\033[92m@\033[0m%%%\033[92m@\033[0m##\033[92m@@\033[0m%#*\033[92m@\033[0m%%%\033[92m@\033[0m##\033[92m@@@\033[0m%*\n"
        "%==%%\033[92m@\033[0m%#%\033[92m@@@\033[0m%*=*\033[92m@\033[0m%%%\033[92m@\033[0m##\033[92m@@\033[0m%#*\033[92m@\033[0m%%%\033[92m@\033[0m##\033[92m@@@\033[0m%*\n"
        "\033[92m@@\033[0m#+*%\033[92m@@@@@\033[0m%%**#%##%%%\033[92m@@@@\033[0m%##%%#%\033[92m@\033[0m%#\033[92m@\033[0m%%\033[92m@\033[0m\n"
        "%\033[92m@\033[0m%*+##*#\033[92m@\033[0m%#%*#\033[92m@\033[0m%%%%%\033[92m@@@\033[0m*##+*%\033[92m@@\033[0m#%%%%##*\n"
        "#++#+*#\033[92m@\033[0m%\033[92m@\033[0m%++#%%%%%%%\033[92m@@\033[0m%=*%\033[92m@\033[0m#%#+#%\033[92m@@@@\033[0m%%\n"
        "*%%##**######%%#\033[92m@\033[0m%%%%%#%%##\033[92m@@\033[0m##%\033[92m@@@@\033[0m%##*\n"
        "##%\033[92m@@@\033[0m%+%%%%#%\033[92m@@@\033[0m%%\033[92m@@\033[0m%%%#%\033[92m@@\033[0m#%\033[92m@@@@@@@\033[0m%%#\n"
        "##%\033[92m@@@\033[0m%+%%%%#%\033[92m@@@\033[0m%%\033[92m@@\033[0m%%%#%\033[92m@@\033[0m#%\033[92m@@@@@@@\033[0m%%#\n"
        "####*==+%%%#\033[92m@@\033[0m#*\033[92m@@@@@@\033[0m%%\033[92m@@\033[0m%%+*##\033[92m@@\033[0m%#\033[92m@\033[0m#*#\n"
        "#%\033[92m@@\033[0m%%\033[92m@@\033[0m#%%*%\033[92m@@@\033[0m+#\033[92m@@\033[0m%%%%*#%%%\033[92m@@\033[0m#+%%*#%%%\n"
        "%%%%*#%%%#++#%\033[92m@\033[0m%\033[92m@@@@\033[0m%%%\033[92m@\033[0m%%\033[92m@\033[0m%--*\033[92m@\033[0m####%##%\n"
        "**#\033[92m@@\033[0m%**\033[92m@\033[0m%#+%%%*+#%#%\033[92m@@@@@@@@@\033[0m*=#*#%\033[92m@\033[0m##\033[92m@\033[0m\n"
        "%+*\033[92m@@\033[0m%##%\033[92m@\033[0m%+++*%%%%%%%\033[92m@\033[0m%*%\033[92m@@\033[0m#++%%\033[92m@\033[0m%*\033[92m@@\033[0m%*\n"
        "#####%%%\033[92m@\033[0m*++++++#####%%#++*\033[92m@@\033[0m%%\033[92m@\033[0m%*===*%%\n"
        "##**+#%**+++++=+####%%#======##+%*======\n"
        "%*+++===++++++===*###%*======*##+##++===\n"
        "***+++==+++++++==+#%%%#=====++++***+++++\n"
        "***+++++++++++++=+*##%#+++++++******++++\n"
        "***+++++++++++++++*%###++++++*******++++\n"
        "++++++++++++++***%#=%#*****+*********+++\n"
    ;

    fputs(color_str, stdout);
    
    return 0;
}

madcore ★★★★★
()
Ответ на: комментарий от peregrine

а вот компилятор считает, что надо заменить на fwrite, к тому же это более портабельно
и ты, конечно, провёл анализ, в каких ситуациях write будет быстрее, а в каких - нет?
а ещё, с позиции кого быстрее

madcore ★★★★★
()
Ответ на: комментарий от madcore

Тут большой разницы не будет. Но вообще мы пишем один массив по сути, а значит дополнительная буферизация, которой они и отличаются нам не поможет, а только навредит. Вот если бы мы кучу мелких данных выводили, то fwrite собрал бы их сначала в буфер, а потом дёрнул один раз дорогостоящий write для вывода этого буфера.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

Я вот думал-думал и понял, что интереснее было бы вот так, с анимацией осени:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main (void) {
int i, a, b;
/*Дерево*/
char  color_str[1147] = "+++*********+*****#%=#%***++++++++++++++\n++++*******++++++###%*+++++++++++++++***\n++++******+++++++#%##*+=+++++++++++++***\n+++++***++++=====#%%%#+==+++++++==+++***\n===++##+##*======*%###*===++++++===+++*%\n======*%+##======#%%####+=+++++**%#+**##\n%%*===*%@%%@@*++#%%#####++++++*@%%%#####\n*%@@*%@%%++#@@%*%@%%%%%%%*+++%@%##%@@*+%\n@##@%#*#=*@@@@@@@@@%#%#+*%%%+#%@**%@@#**\n%##%####@*--%@%%@%%%@@@@%@%#++#%%%#*%%%%\n%%%#*%%+#@@%%%#*%%%%@@#+@@@%*%%#@@%%@@%#\n#*#@#%@@##*+%%@@%%@@@@@@*#@@#%%%+==*####\n#%%@@@@@@@%#@@%#%%%@@%%@@@%#%%%%+%@@@%##\n#%%@@@@@@@%#@@%#%%%@@%%@@@%#%%%%+%@@@%##\n*##%@@@@%##@@##%%#%%%%%@#%%######**##%%*\n%%@@@@%#+#%#@%*=%@@%%%%%%%#++%@%@#*+#++#\n*##%%%%#@@%*+##*@@@%%%%%@#*%#%@#*##+*%@%\n@%%@#%@%#%%##%@@@@%%%##%#**%%@@@@@%*+#@@\n*%@@@##@%%%@*#%@@##@%%%@*=*%@@@%#%@%%==%*\n%@@@##@%%%@*#%@@##@%%%@*=*%@@@%#%@%%==%\n#++#%#*#%%##@@@%@%%@%@%*%%%%*%%#%%%@%%%*\n#++#%#*#%%##@@@%@%%@%@%*%%%%*%%#%%%@%%%*\n#%%%@**%%%%@@@%*###%%%@%+#%%@%@@@%#####%\n#%%%@**%%%%@@@%*###%%%@%+#%%@%@@@%#####%\n%%%%##*+%%%%###%%%%@@#*#%%%@%@@%@%#%%%#+\n%%%%##*+%%%%###%%%%@@#*#%%%@%@@%@%#%%%#+\n%%@@#####@@%%@%***#%@@%*@**@@@@#+#%##%*\n.*%%#+*%%%%%@@#+%%@@@#+*####@@#+:+#*=*#*";
/*Для прогрессивного желтения листьев*/
b=0;

while (b  < 500) {
sleep(1);
system("clear");
printf("\n");
i=1147;

while(i--) {
	a = rand() % 1000;
	/*Добавим 1 яблоко или красный лист*/
	if(color_str[i] == '@' && i ==419) {
	printf("\033[91m%c", color_str[i]);
	continue;
	}
	if (a < b && i > 400) {
	printf("\033[93m%c", color_str[i]);
	continue;
	}
	/*Красим листья*/
	if(color_str[i] == '@')
	printf("\033[92m%c", color_str[i]);
	/*Сбрасываем цвет*/
	else
	printf("\033[0m%c", color_str[i]);

		}
		b = b + 100;
}
printf("\n Осень же ж ещё не наступила, но листья жёлтые уже. \n В сапогах резиновых иду я по полю, по меже...");
	return 0;
}


AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)
Ответ на: комментарий от peregrine

а теперь представь терминал на ком-порту или медленном ssh
с точки зрения программы, fwrite отработает мгновенно и спокойно продолжит работать, а на write она будет висеть и ждать передачи байтиков
с точки зрения юзера - отклик будет быстрее с write
с точки зрения системы - каждый write дёргает ведро, потому лучше кидать большими порциями

и, опять-таки, буферизация у fwrite-подобных функций работает по-разному, в зависимости от stdout, stderr, pipe итп, также они даже детектят конкретно терминал и включает строчную буферизацию именно под этот кейс
т.е., в обычной ситуации, система лучше вайб-кулхацера знает, какую политику буферизации сейчас применить

ещё, у всех [эмуляторов] терминалов есть своя скорость, свои буферы итп, так что однозначного везде результата ты можешь и не получить своими замерами

madcore ★★★★★
()
Ответ на: комментарий от AnonymUser

т.е., до тебя так и не дошло, что размер строковых констант указывать не нужно, также как и всё остальное ты в своей теме не читал?

ладно, пойду я, у вас тут своя атмосфера

madcore ★★★★★
()
Ответ на: комментарий от madcore

Понял. Спасибо. Возьму на будущее на заметку.
Это так всегда было?! Т.е. в C89?!

AnonymUser
() автор топика
Ответ на: комментарий от madcore

Так?!

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (void) {
int i, a, b;
/*Дерево*/
const char   color_str[] = "*#*=*#+:+#@@####*+#@@@%%+#@@%%%%%*+#%%*.\n*%##%#+#@@@@**@*%@@%#***%@%%@@#####@@%%\n+#%%%#%@%@@%@%%%#*#@@%%%%###%%%%+*##%%%%\n+#%%%#%@%@@%@%%%#*#@@%%%%###%%%%+*##%%%%\n%#####%@@@%@%%#+%@%%%###*%@@@%%%%**@%%%#\n%#####%@@@%@%%#+%@%%%###*%@@@%%%%**@%%%#\n*%%%@%%%#%%*%%%%*%@%@%%@%@@@##%%#*#%#++#\n*%%%@%%%#%%*%%%%*%@%@%%@%@@@##%%#*#%#++#\n%==%%@%#%@@@%*=*@%%%@##@@%#*@%%%@##@@@%\n*%==%%@%#%@@@%*=*@%%%@##@@%#*@%%%@##@@@%*\n@@#+*%@@@@@%%**#%##%%%@@@@%##%%#%@%#@%%@\n%@%*+##*#@%#%*#@%%%%%@@@*##+*%@@#%%%%##*\n#++#+*#@%@%++#%%%%%%%@@%=*%@#%#+#%@@@@%%\n*%%##**######%%#@%%%%%#%%##@@##%@@@@%##*\n##%@@@%+%%%%#%@@@%%@@%%%#%@@#%@@@@@@@%%#\n##%@@@%+%%%%#%@@@%%@@%%%#%@@#%@@@@@@@%%#\n####*==+%%%#@@#*@@@@@@%%@@%%+*##@@%#@#*#\n#%@@%%@@#%%*%@@@+#@@%%%%*#%%%@@#+%%*#%%%\n%%%%*#%%%#++#%@%@@@@%%%@%%@%--*@####%##%\n**#@@%**@%#+%%%*+#%#%@@@@@@@@@*=#*#%@##@\n%+*@@%##%@%+++*%%%%%%%@%*%@@#++%%@%*@@%*\n#####%%%@*++++++#####%%#++*@@%%@%*===*%%\n##**+#%**+++++=+####%%#======##+%*======\n%*+++===++++++===*###%*======*##+##++===\n***+++==+++++++==+#%%%#=====++++***+++++\n***+++++++++++++=+*##%#+++++++******++++\n***+++++++++++++++*%###++++++*******++++\n++++++++++++++***%#=%#*****+*********+++\n";
/*Для прогрессивного желтения листьев*/
b=0;
while (b  < 500) {
sleep(1);
system("clear");
printf("\n");



for (i=0; color_str[i] != '\0'; i++ ) {

	a = rand() % 1000;
	/*Добавим 1 яблоко или красный лист*/
	if(color_str[i] == '@' && i ==419) {
	printf("\033[91m%c", color_str[i]);
	continue;
	}
	if (a < b && i < 800) {
	printf("\033[93m%c", color_str[i]);
	continue;
	}
	/*Красим листья*/
	if(color_str[i] == '@')
	printf("\033[92m%c", color_str[i]);
	/*Сбрасываем цвет*/
	else
	printf("\033[0m%c", color_str[i]);

		}
		b = b + 100;
}
printf("\nОсень же ж ещё не наступила, но листья жёлтые уже. \n В сапогах резиновых иду я по полю, по меже...");
	return 0;
}

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)
Ответ на: комментарий от madcore

терминал на ком-порту

Оно давно мертво

или медленном ssh

А эту проблему должен решать транспорт, т.е. сам ssh. Именно у него должна быть буферизация.

PS

Для игноририования терминалов и их скорости есть >/dev/null

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария