Проект “Учень як вчений” для реалізації в рамках курсу   інформатики
Як можна розв’язати головоломку “Судоку”?  Ця на вигляд проста задача дарує  своїм фанам багато годин  інтелектуальнольної  праці. Суть головоломки така.  У деяких клитинках квадратної  таблиці з 9 рядків та 9 стовпців  написані цифри:
Суть задачі:  У деяких клітинках квадратної таблиці з 9 рядків та 9 стовпців  написані цифри. Потрібно заповнити порожні клітинки цифрами так, щоб кожен рядок, кожен стовпець і кожен виділений на малюнку квадрат містили усі цифри від 1 до 9. Ідея:   потрібно написати програму, яка б допомогла б розв’язувати не тільки дану головоломку .
Аналізуємо: Поле для гри в судоку має розмір 9х9 клітинок і умовно розбите на 9 квадратів розміром 3х3. Кожна клітинка є або пустою, або містить число від 1 до 9. Приклад: 3 8 9 | 7 . . | 2 .  . 6 7 2 | . 5 . | . 1  . . 1 4  | 6 . 9| . .  3  - - - - - - - - - - - 2  3 . | 5 . . | 8 7 1 8  5 . | . 3 7| .  4 9 4 9 7 | 8 1 .| 3 .  5 - - - - - - - - - - - . 6  5 | 4 8 2 | 1 3 . 1 . 3 | . 7 . | 4 6 . 7 4 . | 1 . 3 | 5 9 .
Що потрібно??? розставити в порожні клітинки числа від 1 до 9 так, щоб:  в кожному рядку числа не повторювались  в кожному стовпчику числа не повторювались  в кожному з 9-ти умовних квадратів числа не повторювались. 3 8 9 | 7 4 1 | 2 5 6 6 7 2 | 3 5 8 | 9 1 4 5 1 4 | 6 2 9 | 7 8 3 - - - - - - - - - - - 2 3 6 | 5 9 4 | 8 7 1 8 5 1 | 2 3 7 | 6 4 9 4 9 7 | 8 1 6 | 3 2 5 - - - - - - - - - - - 9 6 5 | 4 8 2 | 1 3 7 1 2 3 | 9 7 5 | 4 6 8 7 4 8 | 1 6 3 | 5 9 2
Визначимо  вхідні і вихідні дані Приклад вхідних даних: 3 8 9 7 0 0 2 0 0 6 7 2 0 5 0 0 1 0 0 1 4 6 0 9 0 0 3 2 3 0 5 0 0 8 7 1 8 5 0 0 3 7 0 4 9 4 9 7 8 1 0 3 0 5 0 6 5 4 8 2 1 3 0 1 0 3 0 7 0 4 6 0 7 4 0 1 0 3 5 9 0 Приклад вихідних даних: 3 8 9 7 4 1 2 5 6 6 7 2 3 5 8 9 1 4 5 1 4 6 2 9 7 8 3 2 3 6 5 9 4 8 7 1 8 5 1 2 3 7 6 4 9 4 9 7 8 1 6 3 2 5 9 6 5 4 8 2 1 3 7 1 2 3 9 7 5 4 6 8 7 4 8 1 6 3 5 9 2
А ось ідея! Оберемо найпростіший спосіб - перебір можливих варіантів розстановки цифр. Якщо в процесі перебору буде знайдено розв'язок - просто виведемо його. Нехай при зчитуванні даних з файлу в клітинку на перетині рядка R і стовпця C записана цифра N. При цьому слід заблокувати інші клітинки рядка R, стовпця C і квадратика 3*3, який містить цю клітинку, так, щоб в них неможливо було записати число N.
А  тепер складемо алгоритм!!! перебираючи цифри по рядках, знайти нуль;  якщо нуля знайти не вдалося - задача розв'язана :). Кінець.  для кожної з цифр, від яких знайдена клітинка не заблокована:  записати в клітинку цю цифру;  заблокувати інші клітинки рядка R, стовпця C і квадратика 3*3, який містить цю клітинку, так, щоб в них неможливо було записати таку цифру;  перейти до пункту 1. Як бачимо,  повторний виклик алгоритму (перехід до пункту 1)  виникає до повного завершення циклу в пункті 3, тобто, алгоритм є рекурсивним.
Ваше завдання: Напишіть програму до даного алгоритму!
Джерела: Газета “Інформатика”, в-во Шкільний світ, №11, 2009р. Глинський Я.М., “Алгоритмізація і програмування”, 2008р. Цікаві задачі з програмування, в-во “Ранок”, 2007р.

презентація розв'язуємо судоку

  • 1.
    Проект “Учень яквчений” для реалізації в рамках курсу інформатики
  • 2.
    Як можна розв’язатиголоволомку “Судоку”? Ця на вигляд проста задача дарує своїм фанам багато годин інтелектуальнольної праці. Суть головоломки така. У деяких клитинках квадратної таблиці з 9 рядків та 9 стовпців написані цифри:
  • 3.
    Суть задачі: У деяких клітинках квадратної таблиці з 9 рядків та 9 стовпців написані цифри. Потрібно заповнити порожні клітинки цифрами так, щоб кожен рядок, кожен стовпець і кожен виділений на малюнку квадрат містили усі цифри від 1 до 9. Ідея: потрібно написати програму, яка б допомогла б розв’язувати не тільки дану головоломку .
  • 4.
    Аналізуємо: Поле длягри в судоку має розмір 9х9 клітинок і умовно розбите на 9 квадратів розміром 3х3. Кожна клітинка є або пустою, або містить число від 1 до 9. Приклад: 3 8 9 | 7 . . | 2 . . 6 7 2 | . 5 . | . 1 . . 1 4 | 6 . 9| . . 3 - - - - - - - - - - - 2 3 . | 5 . . | 8 7 1 8 5 . | . 3 7| . 4 9 4 9 7 | 8 1 .| 3 . 5 - - - - - - - - - - - . 6 5 | 4 8 2 | 1 3 . 1 . 3 | . 7 . | 4 6 . 7 4 . | 1 . 3 | 5 9 .
  • 5.
    Що потрібно??? розставитив порожні клітинки числа від 1 до 9 так, щоб: в кожному рядку числа не повторювались в кожному стовпчику числа не повторювались в кожному з 9-ти умовних квадратів числа не повторювались. 3 8 9 | 7 4 1 | 2 5 6 6 7 2 | 3 5 8 | 9 1 4 5 1 4 | 6 2 9 | 7 8 3 - - - - - - - - - - - 2 3 6 | 5 9 4 | 8 7 1 8 5 1 | 2 3 7 | 6 4 9 4 9 7 | 8 1 6 | 3 2 5 - - - - - - - - - - - 9 6 5 | 4 8 2 | 1 3 7 1 2 3 | 9 7 5 | 4 6 8 7 4 8 | 1 6 3 | 5 9 2
  • 6.
    Визначимо вхідніі вихідні дані Приклад вхідних даних: 3 8 9 7 0 0 2 0 0 6 7 2 0 5 0 0 1 0 0 1 4 6 0 9 0 0 3 2 3 0 5 0 0 8 7 1 8 5 0 0 3 7 0 4 9 4 9 7 8 1 0 3 0 5 0 6 5 4 8 2 1 3 0 1 0 3 0 7 0 4 6 0 7 4 0 1 0 3 5 9 0 Приклад вихідних даних: 3 8 9 7 4 1 2 5 6 6 7 2 3 5 8 9 1 4 5 1 4 6 2 9 7 8 3 2 3 6 5 9 4 8 7 1 8 5 1 2 3 7 6 4 9 4 9 7 8 1 6 3 2 5 9 6 5 4 8 2 1 3 7 1 2 3 9 7 5 4 6 8 7 4 8 1 6 3 5 9 2
  • 7.
    А ось ідея!Оберемо найпростіший спосіб - перебір можливих варіантів розстановки цифр. Якщо в процесі перебору буде знайдено розв'язок - просто виведемо його. Нехай при зчитуванні даних з файлу в клітинку на перетині рядка R і стовпця C записана цифра N. При цьому слід заблокувати інші клітинки рядка R, стовпця C і квадратика 3*3, який містить цю клітинку, так, щоб в них неможливо було записати число N.
  • 8.
    А теперскладемо алгоритм!!! перебираючи цифри по рядках, знайти нуль; якщо нуля знайти не вдалося - задача розв'язана :). Кінець. для кожної з цифр, від яких знайдена клітинка не заблокована: записати в клітинку цю цифру; заблокувати інші клітинки рядка R, стовпця C і квадратика 3*3, який містить цю клітинку, так, щоб в них неможливо було записати таку цифру; перейти до пункту 1. Як бачимо,  повторний виклик алгоритму (перехід до пункту 1)  виникає до повного завершення циклу в пункті 3, тобто, алгоритм є рекурсивним.
  • 9.
    Ваше завдання: Напишітьпрограму до даного алгоритму!
  • 10.
    Джерела: Газета “Інформатика”,в-во Шкільний світ, №11, 2009р. Глинський Я.М., “Алгоритмізація і програмування”, 2008р. Цікаві задачі з програмування, в-во “Ранок”, 2007р.