Скопируйте этот промпт в нашу Консоль разработчика, чтобы попробовать самостоятельно!

Content
SystemВаша задача - создавать функции Python на основе предоставленных запросов на естественном языке. Запросы будут описывать желаемую функциональность функции, включая входные параметры и ожидаемое возвращаемое значение. Реализуйте функции в соответствии с заданными спецификациями, обеспечивая обработку крайних случаев, выполнение необходимых проверок и следование лучшим практикам программирования на Python. Пожалуйста, включите соответствующие комментарии в код для объяснения логики и помощи другим разработчикам в понимании реализации.
UserМне нужна функция, которая может решать головоломку Судоку. Функция должна принимать сетку Судоку 9x9 в качестве входных данных, где пустые ячейки представлены значением 0. Функция должна решать головоломку с использованием алгоритма поиска с возвратом и возвращать решенную сетку. Если головоломка нерешаема, она должна вернуть None. Функция также должна проверять входную сетку, чтобы убедиться, что это допустимая головоломка Судоку.

Пример вывода

Python
def solve_sudoku(grid):
   def is_valid(row, col, num):
       # Проверяем, допустимо ли число в текущей строке и столбце
       for i in range(9):
           if grid[row][i] == num or grid[i][col] == num:
               return False

       # Проверяем, допустимо ли число в текущей подсетке 3x3
       start_row, start_col = (row // 3) * 3, (col // 3) * 3
       for i in range(3):
           for j in range(3):
               if grid[start_row + i][start_col + j] == num:
                   return False

       return True

   def backtrack(row, col):
       # Если мы заполнили все ячейки, головоломка решена
       if row == 9:
           return True

       # Переходим к следующей строке, если достигли конца текущей строки
       if col == 9:
           return backtrack(row + 1, 0)

       # Если текущая ячейка уже заполнена, переходим к следующей ячейке
       if grid[row][col] != 0:
           return backtrack(row, col + 1)

       # Пробуем заполнить текущую ячейку числами от 1 до 9
       for num in range(1, 10):
           if is_valid(row, col, num):
               grid[row][col] = num
               if backtrack(row, col + 1):
                   return True
               grid[row][col] = 0

       # Если не найдено допустимое число, возвращаемся назад
       return False

   # Проверяем входную сетку
   if not all(len(row) == 9 and all(0 <= cell <= 9 for cell in row) for row in grid):
       return None

   # Запускаем алгоритм поиска с возвратом
   if backtrack(0, 0):
       return grid
   else:
       return None


API-запрос

import anthropic

client = anthropic.Anthropic(  # по умолчанию использует os.environ.get("ANTHROPIC_API_KEY")
    api_key="my_api_key",
)
message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1000,
    temperature=0,
    system="Ваша задача - создавать функции Python на основе предоставленных запросов на естественном языке. Запросы будут описывать желаемую функциональность функции, включая входные параметры и ожидаемое возвращаемое значение. Реализуйте функции в соответствии с заданными спецификациями, обеспечивая обработку крайних случаев, выполнение необходимых проверок и следование лучшим практикам программирования на Python. Пожалуйста, включите соответствующие комментарии в код для объяснения логики и помощи другим разработчикам в понимании реализации.",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Мне нужна функция, которая может решать головоломку Судоку. Функция должна принимать сетку Судоку 9x9 в качестве входных данных, где пустые ячейки представлены значением 0. Функция должна решать головоломку с использованием алгоритма поиска с возвратом и возвращать решенную сетку. Если головоломка нерешаема, она должна вернуть None. Функция также должна проверять входную сетку, чтобы убедиться, что это допустимая головоломка Судоку.",
                }
            ],
        }
    ],
)
print(message.content)