Рекомендованные экспертами подсказки ChatGPT для разработчиков

Для разработчика программного обеспечения наличие набора хорошо продуманных подсказок в вашем арсенале имеет решающее значение для улучшения ваших навыков решения проблем и обеспечения качества вашего кода. Эти подсказки служат сложными упражнениями, которые подталкивают вас к критическому и творческому мышлению, помогая вам стать более опытным разработчиком.

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

Преимущества использования подсказок

Использование подсказок ChatGPT предлагает множество преимуществ для разработчиков программного обеспечения:

  1. Эффективность. Подсказки позволяют разработчикам быстро находить нужную информацию и фрагменты кода без длительного поиска или ручной реализации.
  2. Производительность. Используя подсказки, разработчики могут сократить время, затрачиваемое на повторяющиеся задачи, что позволит им сосредоточиться на более сложных аспектах своих проектов.
  3. Расширение знаний. Подсказки дают возможность изучать новые концепции программирования и учиться на ответах модели, расширяя базу знаний разработчиков.
  4. Расширение творческих возможностей. ChatGPT может предлагать альтернативные точки зрения и творческие решения проблем, побуждая разработчиков мыслить нестандартно.
  5. Отладка ошибок. Подсказки могут помочь в выявлении и устранении ошибок, предоставляя пошаговые инструкции по отладке.

Подсказка 1: перевернуть строку

Пожалуйста, создайте функцию, которая может изменить заданную строку. Например, если введено «привет», ожидаемым результатом будет «olleh».

Пример:

def reverse_string(s):
    return s[::-1]

print(reverse_string("hello"))  # Output: olleh

Подсказка 2: проверьте наличие палиндрома

Убедительно прошу вас создать функцию, определяющую, является ли данная строка палиндромом. Палиндром — это последовательность символов, например, слово, фраза, число или любая другая комбинация, которая остается идентичной при чтении вперед и назад. Например, мадам — это палиндром.

Пример:

def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome("madam"))  # Output: True

Подсказка 3: Найдите самое длинное слово в предложении

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

Пример:

def find_longest_word(sentence):
    words = sentence.split()
    return max(words, key=len)

print(find_longest_word("The quick brown fox jumps over the lazy dog"))  # Output: jumps

Подсказка 4: вычислить последовательность Фибоначчи

Напишите функцию для вычисления последовательности Фибоначчи до заданного числа членов. Последовательность Фибоначчи — это последовательность чисел, в которой каждое число представляет собой сумму двух предшествующих ему чисел. Ряд начинается с цифр 0 и 1.

Пример:

def fibonacci_sequence(n):
    sequence = [0, 1]
    while len(sequence) < n:
        sequence.append(sequence[-1] + sequence[-2])
    return sequence

print(fibonacci_sequence(10))  # Output: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Подсказка 5: реализовать стек

Создайте класс с именем `Stack`, который реализует функциональность структуры данных стека. Стек должен поддерживать следующие операции: push, pop и peek. Операция push добавляет элемент на вершину стека, операция pop удаляет верхний элемент из стека и возвращает его, а операция peek возвращает верхний элемент, не удаляя его.

Пример:

Stack:
    def __init__(self):
        self.stack = []

    def push(self, item):
        self.stack.append(item)

    def pop(self):
        if self.is_empty():
            return None
        return self.stack.pop()

    def peek(self):
        if self.is_empty():
            return None
        return self.stack[-1]

    def is_empty(self):
        return len(self.stack) == 0

stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek())  # Output: 3
print(stack.pop())  # Output: 3
print(stack.pop())  # Output: 2

Подсказка 6: проверьте скобки

Напишите функцию, которая принимает строку, содержащую скобки, и определяет, сбалансированы ли скобки и правильно ли они вложены друг в друга. Для каждой открывающей скобки должна быть соответствующая закрывающая скобка.

Пример:

def validate_parentheses(s):
    stack = []
    for char in s:
        if char == '(':
            stack.append(char)
        elif char == ')':
            if not stack or stack.pop() != '(':
                return False
    return len(stack) == 0

print(validate_parentheses("((()))"))  # Output: True
print(validate_parentheses("(()))"))  # Output: False

Подсказка 7: Сортировка массива

Напишите функцию, которая берет массив чисел и сортирует его по возрастанию. Пожалуйста, включите алгоритм сортировки на основе ваших предпочтений.

Пример:

def sort_array(nums):
    return sorted(nums)

print(sort_array([3, 1, 4, 2, 5]))  # Output: [1, 2, 3, 4, 5]

Подсказка 8: объединить два отсортированных массива

Напишите функцию, которая берет два отсортированных массива и объединяет их в один отсортированный массив. Объединенный массив должен содержать все элементы из обоих входных массивов в порядке возрастания.

Пример:

def merge_arrays(nums1, nums2):
    merged = []
    i = j = 0
    while i < len(nums1) and j < len(nums2):
        if nums1[i] < nums2[j]:
            merged.append(nums1[i])
            i += 1
        else:
            merged.append(nums2[j])
            j += 1
    merged.extend(nums1[i:])
    merged.extend(nums2[j:])
    return merged

print(merge_arrays([1, 3, 5], [2, 4, 6]))  # Output: [1, 2, 3, 4, 5, 6]

Подсказка 9: найдите недостающее число

Дан массив целых чисел от 1 до n, в котором пропущено одно число, напишите функцию для поиска пропущенного числа.

Пример:

def find_missing_number(nums):
    n = len(nums) + 1
    return (n * (n + 1)) // 2 - sum(nums)

print(find_missing_number([1, 2, 4, 5, 6]))  # Output: 3

Подсказка 10: удалить дубликаты из массива

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

Пример:

def remove_duplicates(nums):
    return list(set(nums))

print(remove_duplicates([1, 2, 2, 3, 4, 4, 5]))  # Output: [1, 2, 3, 4, 5]

Если вам нужны более 250 мощных кейсов, ориентированных на разработчиков, обратите внимание на эти:

Кроме того, вы также получите скидку 10 % на продукт, если воспользуетесь этим кодом: “CLX1TZ2”.



Подсказка 11: определить простые числа

Создайте функцию, которая принимает целое число в качестве входных данных и проверяет, является ли оно простым числом. Простое число — это положительное целое число больше 1, которое не может быть представлено как произведение двух меньших положительных целых чисел.

Пример:

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

print(is_prime(7))  # Output: True
print(is_prime(10))  # Output: False

Подсказка 12. Реализуйте бинарный поиск

Напишите функцию, которая выполняет двоичный поиск в отсортированном массиве целых чисел, чтобы найти индекс заданного целевого элемента. Если цель не найдена, вернуть -1.

Пример:

def binary_search(nums, target):
    left, right = 0, len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

print(binary_search([1, 2, 3, 4, 5], 4))  # Output: 3
print(binary_search([1, 2, 3, 4, 5], 6))  # Output: -1

Подсказка 13: подсчитайте вхождения символа

Напишите функцию, которая принимает строку и символ в качестве входных данных и подсчитывает, сколько раз символ появляется в строке.

Пример:

def count_occurrences(s, char):
    return s.count(char)

print(count_occurrences("hello", "l"))  # Output: 2

Подсказка 14: обратный связанный список

Учитывая заголовок односвязного списка, переверните список и верните новый заголовок.

Пример:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def reverse_linked_list(head):
    prev = None
    curr = head
    while curr:
        next_node = curr.next
        curr.next = prev
        prev = curr
        curr = next_node
    return prev

 Example usage:
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
reversed_head = reverse_linked_list(head)
print(reversed_head.val)  # Output: 3

Подсказка 15: проверьте наличие анаграмм

Напишите функцию, которая принимает две строки и определяет, являются ли они анаграммами. Анаграмма — это слово или фраза, образованная перестановкой букв другого слова или фразы.

Пример:

def is_anagram(s1, s2):
    return sorted(s1) == sorted(s2)

print(is_anagram("listen", "silent"))  # Output: True
print(is("hello", "world")) # Output: False

Подсказка 16: реализовать очередь

Создайте класс с именем Queue, который реализует функциональность структуры данных очереди. Очередь должна поддерживать следующие операции: «постановка в очередь», «удаление из очереди» и «просмотр». Операция enqueue добавляет элемент в конец очереди, операция dequeue удаляет передний элемент из очереди и возвращает его, а операция peek возвращает передний элемент, не удаляя его.

def __init__(self):
        self.queue = []

    def enqueue(self, item):
        self.queue.append(item)

    def dequeue(self):
        if self.is_empty():
            return None
        return self.queue.pop(0)

    def peek(self):
        if self.is_empty():
            return None
        return self.queue[0]

    def is_empty(self):
        return len(self.queue) == 0

queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print(queue.peek())  # Output: 1
print(queue.dequeue())  # Output: 1
print(queue.dequeue())  # Output: 2

Подсказка 17. Найдите медиану двух отсортированных массивов

Имея два отсортированных массива nums1 и nums2 размером m и n соответственно, верните медиану двух отсортированных массивов.

Пример:

def find_median_sorted_arrays(nums1, nums2):
    merged = sorted(nums1 + nums2)
    n = len(merged)
    if n % 2 == 0:
        return (merged[n // 2 - 1] + merged[n // 2]) / 2
    else:
        return merged[n // 2]

print(find_median_sorted_arrays([1, 3], [2]))  # Output: 2.0
print(find_median_sorted_arrays([1, 2], [3, 4]))  # Output: 2.5

Подсказка 18: определить, является ли число степенью двойки

Напишите функцию, которая принимает на вход целое число и определяет, является ли оно степенью двойки.

Пример:

def is_power_of_two(n):
    return n > 0 and (n & (n - 1)) == 0

print(is_power_of_two(4))  # Output: True
print(is_power_of_two(5))  # Output: False

Подсказка 19: удалить N-й узел из конца списка

При наличии заголовка связанного списка удалите узел, расположенный n-м от конца списка, и верните обновленный заголовок.

Пример:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def remove_nth_from_end(head, n):
    dummy = ListNode(0)
    dummy.next = head
    slow = fast = dummy
    for _ in range(n + 1):
        fast = fast.next
    while fast:
        slow = slow.next
        fast = fast.next
    slow.next = slow.next.next
    return dummy.next

# Example usage:
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head = remove_nth_from_end(head, 2)
print(head.val)  # Output: 1
print(head.next.val)  # Output: 3

Подсказка 20: генерировать скобки

Учитывая целое число n, сгенерируйте все допустимые комбинации скобок длины 2n.

Пример:

def generate_parentheses(n):
    result = []
    backtrack(result, "", 0, 0, n)
    return result

def backtrack(result, current, open_count, close_count, max_count):
    if len(current) == max_count * 2:
        result.append(current)
        return
    if open_count < max_count:
        backtrack(result, current + "(", open_count + 1, close_count, max_count)
    if close_count < open_count:
        backtrack(result, current + ")", open_count, close_count + 1, max_count)

print(generate_parentheses(3))  # Output: ["((()))", "(()())", "(())()", "()(())", "()()()"]

Заключение

Наличие коллекции проверенных подсказок имеет неоценимое значение для каждого разработчика программного обеспечения. Эти подсказки дают возможность попрактиковаться в написании кода, отточить навыки решения проблем и изучить различные концепции программирования. Работая с этими 50 проверенными подсказками и изучая сопровождающие примеры, вы можете улучшить свои способности и стать более опытным разработчиком программного обеспечения. Не забывайте подходить к каждой подсказке с любопытством, принимайте вызовы и получайте удовольствие от процесса решения проблем с кодом.

Повысьте уровень написания кода с помощью ChatGPT: изучите более 250 мощных линий для достижения максимальной производительности!💻📖 Раскройте потенциал ChatGPT с помощью практических рекомендаций и инновационных идей.

Надеюсь, вам было интересно читать. Если вы хотите поддержать меня как писателя, подпишитесь на стать участником Medium. Это всего 5 долларов США в месяц, поскольку вы получаете неограниченный доступ к Medium.

Стань профессионалом в области чат-ботов всего за 30 дней с ChatGPT Mastery! В этом подробном руководстве представлены стратегии и методы, которые помогут вам раскрыть потенциал ChatGPT и получать ощутимый доход, не полагаясь на уловки или алгоритмы социальных сетей. Получите свою копию сегодня всего за 99 долларов США!

Хотите получить максимальную отдачу от ChatGPT? Ознакомьтесь с нашей коллекцией из более чем 400 мощных строк для ChatGPT! Он полон идей и практической информации, которые помогут вам раскрыть весь потенциал ChatGPT.

"Хотели бы вы продвинуться по карьерной лестнице?" Я делюсь всеми деталями, методами и предложениями по надежному применению!» В этой электронной книге вы узнаете, как освоить DDD в Laravel.

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .