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

Сообщение Re[10]: ChatGpt o1-preview - проверка на эрудицию от 19.09.2024 14:43

Изменено 19.09.2024 14:50 Shmj

Re[10]: ChatGpt o1-preview - проверка на эрудицию
Здравствуйте, inoremap, Вы писали:

I>Код рабочий, но на каждом шаге происходит три выделения памяти и одно копирование, без которых можно было бы обойтись, также результат — мало полезная позиция во временном буфере.


Я просто скопировал вашу реакцию и вот что получил:

def find_sequence_in_stream(stream, sequence, buffer_size=4096):
    seq_len = len(sequence)
    buffer = bytearray(buffer_size)
    tail = bytearray()

    position = 0  # Текущая позиция в потоке

    while True:
        # Читаем данные в буфер
        read_bytes = stream.readinto(buffer)
        if read_bytes == 0:
            # Если поток закончился, выходим
            break

        # Проверяем, не осталась ли часть последовательности на границе буфера
        if tail:
            data = tail + buffer[:read_bytes]
        else:
            data = buffer[:read_bytes]

        # Пытаемся найти последовательность
        index = data.find(sequence)
        if index != -1:
            # Если последовательность найдена, возвращаем её позицию в потоке
            return position + index - len(tail)

        # Если не нашли, обновляем позицию
        position += read_bytes

        # Оставляем хвост для проверки на следующем шаге
        if read_bytes >= seq_len - 1:
            tail = data[-(seq_len - 1):]
        else:
            tail = data

    # Если последовательность не найдена, возвращаем -1
    return -1


Тут получается загвоздка — кто-то должен проверить результат и сказать оно или нет. А оно или нет, смысл всего этого, инициатором — пока может быть только человек. Нужно лишь знать чего ты хочешь.
Re[10]: ChatGpt o1-preview - проверка на эрудицию
Здравствуйте, inoremap, Вы писали:

I>Код рабочий, но на каждом шаге происходит три выделения памяти и одно копирование, без которых можно было бы обойтись, также результат — мало полезная позиция во временном буфере.


Я просто скопировал вашу реакцию и вот что получил:

def find_sequence_in_stream(stream, sequence, buffer_size=4096):
    seq_len = len(sequence)
    buffer = bytearray(buffer_size)
    tail = bytearray()

    position = 0  # Текущая позиция в потоке

    while True:
        # Читаем данные в буфер
        read_bytes = stream.readinto(buffer)
        if read_bytes == 0:
            # Если поток закончился, выходим
            break

        # Проверяем, не осталась ли часть последовательности на границе буфера
        if tail:
            data = tail + buffer[:read_bytes]
        else:
            data = buffer[:read_bytes]

        # Пытаемся найти последовательность
        index = data.find(sequence)
        if index != -1:
            # Если последовательность найдена, возвращаем её позицию в потоке
            return position + index - len(tail)

        # Если не нашли, обновляем позицию
        position += read_bytes

        # Оставляем хвост для проверки на следующем шаге
        if read_bytes >= seq_len - 1:
            tail = data[-(seq_len - 1):]
        else:
            tail = data

    # Если последовательность не найдена, возвращаем -1
    return -1


Тут получается загвоздка — кто-то должен проверить результат и сказать оно или нет. А оно или нет, смысл всего этого, инициатором — пока может быть только человек. Нужно лишь знать чего ты хочешь.

Самому GPT ничего не нужно, т.е. у него нет способности наслаждаться и страдать — следовательно и желаний быть никаких не может.

По этому инициатор смысла — всегда человек. Человек хочет наслаждаться и/или избежать страдания, это заставляет его что-то делать. И только человек может сказать что именно он хочет получить, соответствует ли полученное тому что нужно. Возможно что с будущем начинать будем с той части, которая проверяет результат.