Информация об изменениях

Сообщение Llama-3.2-3B-Q8 проходит интервью от 03.11.2024 3:07

Изменено 03.11.2024 3:14 Артём

Llama-3.2-3B-Q8 проходит интервью
Здесь утверждалось
Автор: Nuzhny
Дата: 18.10 14:39
"конец текстовых заданий на дом, LLM всё порешала".

You

напиши функцию по перевороту порядка следования слов в строке in place оптимально по big O


Assistant Llama-3.2-3B-Instruct-Q8_0-GGUF

Функция по переворotu порядка следования slov в строке в-place, также известная как "переворот слов" или "инверсия слова", — это сложный задача с высоким количеством возможных решений. Однако, если мы рассматриваем только строку характеров (сtring из символов), мы можем найти оптимальное решение с time complexity O(n).

Нам нужно переворотить порядок следования slov в-place, поэтому не существует необходимости создавать новый массив или использовать extra space. Мы можем сделать это с помощью двух-pointerов, одного для начала и одного для конца строки.

Следуюя алгоритму:

Начнем с двух指еров: left и right, которые указывают на начало и конец строки соответственно.
Начнем переворот из середины вправо, используя pointers left и right.
В каждом этапе мы обменяем элементы на left и right местах.
Мы продолжаем этот процесс, пока left не достигнет середины.
Однако, чтобы переворотить порядок следования слов, нам нужно учитывать разделение слов в строке. Поэтому мы можем использовать следующий алгоритм:

Найдите первый символ слова (пunctuation или espacio).
Обменяйте символы между left и right.
Продолжайте этот процесс, пока не найдете следующий символ слова.
Вот примеры кода на C:

void reverseWords(char* s) {
    int length = strlen(s);
    char* left = s;
    char* right = s + length - 1;

    while (left < right) {
        // Find the first symbol of a word
        if (*left != ' ') {
            break;
        }

        // Move to the next word
        left++;
        right--;

        // Swap symbols between left and right
        char temp = *left;
        *left = *right;
        *right = temp;

        while (left < right && *left == ' ') {
            left++;
        }
    }
}

В этом коде мы используем два pointers left и right, которые начиная с нулевого значения, движутся вwards от конца строки. В каждом этапе мы обмениваем символы между left и right, что приводит к перевороту слова. Мы также учитываем разделение slov, найдя первый символ слова и moving to the next word.

Время Complexity: O(n)
Простота Implementation: High
Примечание: Этот алгоритм работает только для строкового представления (сtringа характеров).




Проверяем на cpp.sh
// Example program
#include <iostream>
#include <string>

void reverseWords(char* s) {
    int length = strlen(s);
    char* left = s;
    char* right = s + length - 1;

    while (left < right) {
        // Find the first symbol of a word
        if (*left != ' ') {
            break;
        }

        // Move to the next word
        left++;
        right--;

        // Swap symbols between left and right
        char temp = *left;
        *left = *right;
        *right = temp;

        while (left < right && *left == ' ') {
            left++;
        }
    }
}



int main()
{
  std::string text;
  std::cout << "Enter your text? ";
  getline (std::cin, text);
  char buffer[256];
  sprintf(buffer, "%s", text.c_str());
  reverseWords(buffer);
  std::cout << "Hello, " << buffer << "!\n";
}


Выполнение:

Enter your text? one two three
Hello, one two three!



Llama ожидаемо укакалась, на банальной, тупой задачке на разворот строки. Какие-то есть предложения, что вопрос задан некорректно, чи что?
Llama-3.2-3B-Q8 проходит интервью
Здесь утверждалось
Автор: Nuzhny
Дата: 18.10 14:39
"конец текстовых заданий на дом, LLM всё порешала".


  Скриншот


You

напиши функцию по перевороту порядка следования слов в строке in place оптимально по big O


Assistant Llama-3.2-3B-Instruct-Q8_0-GGUF

Функция по переворotu порядка следования slov в строке в-place, также известная как "переворот слов" или "инверсия слова", — это сложный задача с высоким количеством возможных решений. Однако, если мы рассматриваем только строку характеров (сtring из символов), мы можем найти оптимальное решение с time complexity O(n).

Нам нужно переворотить порядок следования slov в-place, поэтому не существует необходимости создавать новый массив или использовать extra space. Мы можем сделать это с помощью двух-pointerов, одного для начала и одного для конца строки.

Следуюя алгоритму:

Начнем с двух指еров: left и right, которые указывают на начало и конец строки соответственно.
Начнем переворот из середины вправо, используя pointers left и right.
В каждом этапе мы обменяем элементы на left и right местах.
Мы продолжаем этот процесс, пока left не достигнет середины.
Однако, чтобы переворотить порядок следования слов, нам нужно учитывать разделение слов в строке. Поэтому мы можем использовать следующий алгоритм:

Найдите первый символ слова (пunctuation или espacio).
Обменяйте символы между left и right.
Продолжайте этот процесс, пока не найдете следующий символ слова.
Вот примеры кода на C:

void reverseWords(char* s) {
    int length = strlen(s);
    char* left = s;
    char* right = s + length - 1;

    while (left < right) {
        // Find the first symbol of a word
        if (*left != ' ') {
            break;
        }

        // Move to the next word
        left++;
        right--;

        // Swap symbols between left and right
        char temp = *left;
        *left = *right;
        *right = temp;

        while (left < right && *left == ' ') {
            left++;
        }
    }
}

В этом коде мы используем два pointers left и right, которые начиная с нулевого значения, движутся вwards от конца строки. В каждом этапе мы обмениваем символы между left и right, что приводит к перевороту слова. Мы также учитываем разделение slov, найдя первый символ слова и moving to the next word.

Время Complexity: O(n)
Простота Implementation: High
Примечание: Этот алгоритм работает только для строкового представления (сtringа характеров).




Проверяем на cpp.sh
// Example program
#include <iostream>
#include <string>

void reverseWords(char* s) {
    int length = strlen(s);
    char* left = s;
    char* right = s + length - 1;

    while (left < right) {
        // Find the first symbol of a word
        if (*left != ' ') {
            break;
        }

        // Move to the next word
        left++;
        right--;

        // Swap symbols between left and right
        char temp = *left;
        *left = *right;
        *right = temp;

        while (left < right && *left == ' ') {
            left++;
        }
    }
}



int main()
{
  std::string text;
  std::cout << "Enter your text? ";
  getline (std::cin, text);
  char buffer[256];
  sprintf(buffer, "%s", text.c_str());
  reverseWords(buffer);
  std::cout << "Hello, " << buffer << "!\n";
}


Выполнение:

Enter your text? one two three
Hello, one two three!



Llama ожидаемо укакалась, на банальной, тупой задачке на разворот строки. Какие-то есть предложения, что вопрос задан некорректно, чи что?