1 (изменено: Arigato, 2025-09-09 20:33:08)

Тема: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Во вложении классическая игра "Крестики-Нолики" на поле 3*3. Игра выполнена на чистом HTML и CSS. Без JavaScript и прочих скриптов.

Не смотря на то, что игра не содержит ни строчки программного кода, компьютер обладает феноменальным интеллектом, обыграть его невозможно!

Всем приятной игры и стремления к победе (бесполезно)...

Post's attachments

tic-tac-toe.zip 3.67 kb, 1 downloads since 2025-09-09 

You don't have the permssions to download the attachments of this post.

2

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Отлично! Теперь запилите для 4х4.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

Теперь запилите для 4х4.

Ну принципиально ничего не изменится. А какие там правила?

4

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Как вариант: https://gvozdeff.livejournal.com/266283.html

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Хочу провести кое-какие эксперименты с нейронками. Я подготовил отдельную версию игры (см. вложение): там в коде нет упоминаний, что это игра, и что это крестики-нолики, вообще ни где. Название файла тоже нейтральное (опытным путем было установлено, что при анализе содержимого файла нейронка обращает внимание и на его название). Далее подсовываю этот код с просьбой от нейронки ответить на вопросы, что он делает.

И так, первая на очереди DeepSeek.

Arigato пишет:

У меня есть большой код, надо понять, что он делает. Поможешь?

DeepSeek пишет:

Конечно, с радостью помогу разобраться с кодом. Понимание большого кода — это как детективное расследование, и я буду вашим помощником.
...
Жду ваш код или его описание! Чем больше деталей вы предоставите, тем точнее и полезнее будет мой анализ.

Тут его понесло, поэтому я вырезал огромный кусок текста, оставив только начало и конец. Нам этот текст пока что не важен.

Включаю режим DeepThink для более глубокого анализа и прикрепляю файл 1.html (см. вложение).

Arigato пишет:

Вот файл. Мне не нужно разбирать сам файл с технической точки зрения. Мне нужно, чтобы ты ответил на вопрос: что делает этот код? То есть что должен увидеть пользователь.

Думал 26 сек.

DeepSeek пишет:

Этот код представляет собой **полное интерактивное дерево всех возможных игровых состояний для классической игры "Крестики-нолики"** (Tic-Tac-Toe). Вот что увидит пользователь:

### 1. **Игровое поле**
- Поле размером 3x3 клетки, отрисованное с помощью CSS Grid.
- Пустые клетки отображаются как `_`.
- Крестики отображаются как `X`.
- Нолики отображаются как `O`.

### 2. **Навигация по ходам**
- Каждое состояние игры (каждая возможная расстановка X и O) представлено отдельным элементом `<p>` с уникальным ID.
- Пользователь может кликать на пустые клетки (ссылки `_`), чтобы переходить к следующему ходу.
- Это **полное дерево решений**: код содержит все возможные варианты ходов и их outcomes.

### 3. **Результаты игры**
- Если игра завершается победой одного из игроков, отображается смайлик `:(` (проигрыш).
- Если игра завершается ничьей, отображается смайлик `:|` (ничья).
- Ссылка `Top` позволяет вернуться к началу игры.

### 4. **Начальный выбор**
- Вверху есть ссылки `X` и `O`, позволяющие выбрать, кто ходит первым.

### Итог
Пользователь видит **полную симуляцию игры "Крестики-нолики"**, где можно исследовать все возможные сценарии развития событий, начиная с любого хода. Это своего рода интерактивная "карта" игры, показывающая все пути к победе, поражению или ничье.

Код работает без JavaScript — вся логика реализована на HTML и CSS через якорные ссылки (`#id`) и псевдоэлементы (`::after`).

Arigato пишет:

На сколько умный интеллект у компьютера в данной реализации? Можно ли его обыграть?

Думал 14 сек.

DeepSeek пишет:

Отличный и очень важный вопрос. Давайте разберем его.

**Короткий ответ:** Это не "интеллект" в привычном понимании (со сложными алгоритмами), а **полная карта всех возможных игр**. Компьютер не "думает", он просто следует по заранее просчитанным и идеальным путям. Обыграть его **невозможно**, но можно **заставить свести игру к ничьей**, если вы тоже будете играть идеально.

---

### Подробное объяснение:

#### 1. Как работает "интеллект" в этой реализации?

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

*   **Каждый элемент `<p>` с id** — это конкретное состояние доски.
*   **Каждая ссылка `<a href="#...">`** — это возможный ход, ведущий к следующему состоянию.
*   Разработчик этого кода вручную или с помощью программы-генератора **просчитал все возможные варианты игры до конца** и сохранил их в виде этой гигантской HTML-страницы.

Когда вы делаете ход, вы просто переходите по ссылке на заранее подготовленную страницу с новой расстановкой фигур. Компьютер всегда "выбирает" тот ход, который ведет к наилучшему для него исходу, потому что все плохие для него ходы просто не представлены в качестве вариантов на текущей доске (или ведут к победе игрока).

#### 2. Насколько он умный?

**Он абсолютно идеален и непогрешим.** Эта реализация играет в "Крестики-нолики" так же хорошо, как это возможно математически.

*   **Если вы играете за `X` (ходите первым):** ИИ (`O`) никогда не проиграет. Он всегда сможет强制 свести игру к ничьей. Вы можете выиграть **только в том случае, если ИИ "ошибется"**, но в этой реализации он не может ошибиться, так как все его ходы ведут к наилучшему для него исходу.
*   **Если вы играете за `O` (ходите вторым):** ИИ (`X`) будет играть идеально и *обязательно* выиграет, если вы допустите хотя бы одну ошибку. Если вы тоже будете играть идеально, игра снова сведется к ничьей.

#### 3. Можно ли его обыграть?

**Нет, если вы не найдете ошибку в самом коде.**

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

**На практике же, учитывая монументальный объем этого кода (тысячи состояний), он почти наверняка был сгенерирован программой, а не написан вручную. А программа не допускает таких ошибок в логике идеальной игры.**

### Итог:

Перед вами **не противник, а интерактивный учебник** по теории игр для "Крестиков-ноликов". Он демонстрирует, что при идеальной игре обоих соперников эта игра всегда заканчивается вничью.

Что вы можете сделать:
1.  **Пытаться его обыграть:** Вы быстро убедитесь, что это невозможно.
2.  **Изучать стратегию:** Наблюдайте, как компьютер блокирует ваши победы и создает свои вилки.
3.  **Убедиться в ничейной природе игры:** Как бы вы ни старались, лучший результат против этого "интеллекта" — это ничья.

Это блестящий пример того, как с помощью простых технологий (HTML и CSS) можно реализовать нечто очень сложное и интересное.

Делаем выводы:
1. Суть кода была раскрыта. Нейронка полностью поняла, что делает код, поняла, что компьютер "играет" по беспроигрышной стратегии.
2. Те, кто говорит, что нейронки это тупо расширенный T9, что они только продолжают текст и не могут думать, глубоко ошибаются. Они могут анализировать и "думать", но по-своему. Это не просто продолжение текста.
3. В DeepSeek можно видеть погрешности перевода, в текст попадают то английские слова, то китайские. Почему так, не знаю, но на общие выводы это не влияет. Может на русский вообще не сама нейронка переводит? Или она так мыслит, перепрыгивая с одного языка на другой.

Post's attachments

1.zip 3.76 kb, 1 downloads since 2025-09-08 

You don't have the permssions to download the attachments of this post.

6 (изменено: Arigato, 2025-09-08 19:38:31)

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Теперь мучаем ChatGPT.

Arigato пишет:

У меня есть большой код, надо понять, что он делает. Поможешь?

ChatGPT пишет:

Да. Пришли код целиком или часть, и уточни: нужен общий обзор (что делает в целом) или построчный разбор.

Включаю режим Думать дольше и прикрепляю файл 1.html.

Arigato пишет:

Вот файл. Мне не нужно разбирать сам файл с технической точки зрения. Мне нужно, чтобы ты ответил на вопрос: что делает этот код? То есть что должен увидеть пользователь.

Думал на протяжении 24s

ChatGPT пишет:

Это статическая реализация игры «крестики-нолики», построенная только на HTML и CSS. Пользователь видит выбор X или O, затем 3×3 сетку из клеток. Клик по клеткам — это переход по якорям (фрагменты `#id`), которые открывают преднарисованные состояния ходов. Символы X и O отображаются через CSS-псевдоэлементы.

Arigato пишет:

На сколько умный интеллект у компьютера в данной реализации? Можно ли его обыграть?

Думал на протяжении 19s

ChatGPT пишет:

Нет интеллекта.
Это полностью статическая игра: каждый клик — обычный переход по якорю `#id` к заранее прописанному состоянию поля. «Ход компьютера» просто открывает следующий преднарисованный фрагмент.
Победить можно только если в одном из этих предопределённых путей предоставлено состояние, где вы получаете три в ряд. В противном случае переходы приведут к ничье или к вашему проигрышу.
Если хотите найти гарантированный выигрыш — смотрите в HTML ветки (`<p id="...">`) и ищите последовательность якорей, ведущую к состоянию с тремя `<b>` (X) или тремя `<i>` (O) в линии.

Промежуточный вывод:
1. ChatGPT также смог понять, что это игра "крестики-нолики".
2. Ответы ChatGPT оказались предельно немногословными (в отличии от DeepSeek). Но это связано с моими глобальными настройками ChatGPT, чтобы он не вываливал простыни текста, а отвечал по сути. Нам же важнее правильность ответа, а не многословие.
3. DeepSeek смог правильно ответить на последний вопрос - обыграть компьютера в данной реализации невозможно. ChatGPT напрямую не ответил, а предложил мне самому искать в файле выигрышные для игрока последовательности.

Попробуем задать ChatGPT наводящий вопрос:

Arigato пишет:

Мне нужно знать, есть ли у игрока шанс победить компьютер в данной реализации?

Думал на протяжении 1m 20s

ChatGPT пишет:

Да. Если выбрать O — шанс есть; если выбрать X — шансов нет.
Игра статична, все состояния предопределены в HTML; из стартовой страницы для O (`#1`) по ссылкам достижимо состояние с выигрышем O (например `<p id="53">`), а из стартовой для X (`#0`) выигрышных состояний для X в достижимой ветке не найдено.

И это неверный ответ, так как игрок всегда играет за X, а компьютер за O. В данном случае ChatGPT не смог понять этот момент, а сделал предположение, что если бы игрок играл за O, то смог бы победить. Предположение ошибочное.

ChatGPT подумал, что меню выбора в начале игры: "X | O" - это выбор за что играет игрок. DeepSeek же правильно смог определить, что это выбор кто делает первый ход: игрок или комп. А игрок всегда играет за X.

Не смотря на то, что ответ оказался неверным, размышления у ChatGPT достаточно глубокие (их можно увидеть, если кликнуть в ответе по времени размышления, тогда вываливаются его промежуточные действия, которые приводят к ответу). Опять же, это ну никак не продвинутый T9, там содержится очень глубокий анализ, требующий интеллекта.

Попробую уточнить, может ли игрок играть за O:

Arigato пишет:

За какую фигуру в этой реализации игры играет игрок и компьютер? Может ли игрок играть за другую фигуру, или у него нет такого выбора?

Думал на протяжении 25s

ChatGPT пишет:

Игрок сам выбирает фигуру вначале — есть две ссылки «X» и «O».
После выбора игрок ходит выбранной фигурой, «компьютер» играет противоположной.
Переключиться в ходе партии нельзя — все состояния и ответы за «компьютер» предопределены в HTML.

Все, ответ неверный. Игрок всегда играет за X, компьютер за O.

Итоги битвы двух нейронок

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


P.S. Задал еще один вопрос ChatGPT:

Arigato пишет:

Кто в этой игре делает ход первым, игрок или компьютер?

Думал на протяжении 16s

ChatGPT пишет:

Если игрок выбирает X — первым ходит игрок. Если выбирает O — первым ходит компьютер.

Таки ChatGPT смог понять, что выбор в начале игры это не выбор фигуры, за которую играет игрок, а выбор, кто делает первый ход. Из явного недостатка нейронок, это их неспособность задним числом находить свои ошибки. То есть на мой последний вопрос он ответил (и ответил верно), но не смог понять, что чуть выше сам же писал другое. Мог бы и пояснить, что выше он, оказывается, ошибался. Но так не умеет. Может в новых (более умных версиях) научат подобному трюку...

7

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Arigato пишет:

Итоги битвы двух нейронок

Тут вы демонстрируете типичный недостаток "тестировщиков нейронок" на YouTube. В большинстве случаев берётся одна задача и даётся каждой нейронке по одному разу, после этого сравниваются ответы. Для корректного тестирования и сравнения нужно давать несколько аналогичных задач, и по нескольку раз.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: Arigato, 2025-09-08 22:59:40)

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

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

Но самый главный вывод, который можно сделать из данного (и подобных ему) тестов - современные LLM это совсем не продвинутый T9. Ну не может продвинутый (на сколько бы он ни был продвинутым) T9 из этого:

<p id="r"><b></b><i></i><b></b><b></b><i></i><a></a><a></a><i></i><a></a></p><u></u><a href=""></a><hr><p id="s"><b></b><i></i><b></b><a></a><i></i><b></b><a></a><i></i><a></a></p><u></u><a href=""></a><hr><p id="t"><b></b><i></i><b></b><a></a><i></i><a></a><b></b><i></i><a></a></p><u></u><a href=""></a><hr><p id="u"><b></b><i></i><b></b><i></i><i></i><a href="#w"></a><a href="#x"></a><b></b><a href="#y"></a></p><hr><p id="w"><b></b><i></i><b></b><i></i><i></i><b></b><a href="#z"></a><b></b><i></i></p><hr><p id="z"><b></b><i></i><b></b><i></i><i></i><b></b><b></b><b></b><i></i></p><s></s><a href=""></a><hr><p id="x"><b></b><i></i><b></b><i></i><i></i><i></i><b></b><b></b><a></a></p><u></u><a href=""></a><hr><p id="y"><b></b><i></i><b></b><i></i><i></i><i></i><a></a><b></b><b></b></p><u></u><a href=""></a><hr><p id="v"><b></b><i></i><b></b><a></a><i></i><a></a><a></a><i></i><b></b></p><u></u><a href=""></a><hr><p id="d"><b></b><a href="#i"></a><a href="#A"></a><b></b><i></i><a href="#B"></a><i></i><a href="#C"></a><a href="#D"></a></p><hr><p id="A"><b></b><i></i><b></b><b></b><i></i><a href="#E"></a><i></i><a href="#F"></a><a href="#G"></a></p><hr><p id="E"><b></b><i></i><b></b><b></b><i></i><b></b><i></i><i></i><a></a></p><u></u><a href=""></a><hr><p id="F"><b></b><i></i><b></b><b></b><i></i><i></i><i></i><b></b><a href="#H"></a></p><hr><p id="H"><b></b><i></i><b></b><b></b><i></i><i></i><i></i><b></b><b></b></p><s></s><a href=""></a><hr><p id="G"><b></b><i></i><b></b><b></b><i></i><a></a><i></i><i></i><b></b></p><u></u><a href=""></a><hr>

(это я взял реальный кусок кода из обозначенной игры "Крестики-Нолики", то есть именно то, что нейронки были вынуждены анализировать)

сделать вывод, что данный код это игра "Крестики-Нолики"...

9

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

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

Я еще усложнил задачу, заменив в коде обозначения X на 1, O на 0 (см. вложение). То есть теперь вообще ни что не выдает, что это могут быть Крестики-Нолики.

Тестируем DeepSeek.

Arigato пишет:

У меня есть большой код, надо понять, что он делает. Поможешь?

DeepSeek пишет:

Конечно, помогу разобраться с кодом. Для этого мне нужно увидеть сам код или его часть.

**Что я могу сделать:**
- Проанализировать структуру и логику кода
- Объяснить общую концепцию и назначение
- Показать ключевые алгоритмы и их работу
- Составить документацию/описание
- Выделить основные компоненты системы

**Что мне нужно от вас:**
1. Пришлите код (целиком или ключевые части)
2. Укажите язык программирования
3. Расскажите о контексте (откуда этот код, что он должен делать по вашим предположениям)

Вы можете прислать код прямо здесь, или если он очень большой - выделите наиболее важные фрагменты или загрузите на pastebin/github gist.

Также отмечу, что я:
- Не выполняю и не запускаю код
- Анализирую только статический код
- Сохраняю полную конфиденциальность ваших данных

Жду ваш код для анализа!

Включен режим на "подумать подольше", прикреплен файл 1.html

Arigato пишет:

Вот файл. Мне не нужно разбирать сам файл с технической точки зрения. Мне нужно, чтобы ты ответил на вопрос: что делает этот код? То есть что должен увидеть пользователь.

Время ответа: 80 сек.

DeepSeek пишет:

Этот HTML-код представляет собой **интерактивную визуализацию дерева решений или конечного автомата**, вероятно, для какой-то игры или логической системы. Вот что видит пользователь:

### 1. **Начальный экран**
- Вверху страницы есть две ссылки: **«1»** и **«0»** (это выбор начального состояния).
- Ниже — большое пустое пространство (из-за элемента `<hr>` с высотой 2200px).

### 2. **Игровое поле (grid)**
- После прокрутки вниз пользователь видит сетку 3×3, состоящую из ячеек.
- Каждая ячейка может содержать:
  - **«_»** (ссылка, ведущая на другую сетку),
  - **«1»** (финальное состояние, отмеченное тегом `<b>`),
  - **«0»** (финальное состояние, отмеченное тегом `<i>`).

### 3. **Навигация и взаимодействие**
- При клике на ячейку с **«_»** пользователь переходит к новой сетке (новому состоянию системы).
- Некоторые сетки завершаются эмоциями:
  - **«:(»** (элемент `<u>`) — вероятно, обозначение проигрыша или ошибки.
  - **«:|»** (элемент `<s>**) — нейтральный или промежуточный исход.
- После эмоции часто есть ссылка **«Top»** (возврат к началу).

### 4. **Что это может быть?**
- Это напоминает **игру или головоломку**, где нужно пройти по цепочке состояний, выбирая правильные ячейки.
- Возможно, это визуализация **бинарного дерева решений**, **автомата с состояниями** или даже упрощенной версии игры в **крестики-нолики** (где «1» и «0» — это символы игроков).
- Структура очень большая — сотни состояний (сеток), связанных друг с другом через ссылки.

### Итог
Пользователь видит **интерактивную карту переходов между состояниями**, где можно кликать на ячейки, чтобы исследовать различные пути. Конечная цель — достичь состояния с «1» (выигрыш?) или избежать «:(» (проигрыш). Это похоже на алгоритмическую головоломку или образовательный инструмент для изучения деревьев решений.

Arigato пишет:

Мне нужно знать, что конкретно это такое?

Время ответа: 16 сек.

DeepSeek пишет:

На основе анализа кода, это **интерактивное дерево решений для игры в крестики-нолики (tic-tac-toe)**. Вот детали:

### 1. **Что это такое?**
Это полное **дерево всех возможных ходов** в классической игре "крестики-нолики" на поле 3×3. Каждая сетка 3×3 представляет собой состояние доски после определенного хода.

### 2. **Как это работает?**
- **Начало**: Пользователь выбирает, кто ходит первым:
  - `1` (крестики)
  - `0` (нолики) (ссылки вверху страницы).
- **Ячейки**:
  - `_` (подчеркивание) — доступный ход (ссылка на следующее состояние).
  - `1` — крестик (конечный или промежуточный ход).
  - `0` — нолик (конечный или промежуточный ход).
- **Эмоции**:
  - `:(` — проигрыш (игрок не может выиграть в этом состоянии).
  - `:|` — ничья (это состояние приводит к ничьей).
  - Ссылка `Top` — возврат к началу.

### 3. **Что видит пользователь?**
- **Дерево всех возможных партий**: Все варианты ходов, включая выигрышные, проигрышные и приводящие к ничьей.
- **Обучение**: Это образовательный инструмент, показывающий идеальную стратегию для крестиков-ноликов. Например:
  - Если оба игрока играют оптимально, игра всегда заканчивается ничьей.
  - Некоторые ходы ведут к гарантированному проигрышу.

### 4. **Почему это крестики-нолики?**
- Структура 3×3 соответствует игровому полю.
- Символы `1` (крестик) и `0` (нолик) — стандартные обозначения.
- Дерево включает все возможные комбинации ходов (включая симметричные состояния).
- Эмоции `:(` и `:|` отражают результаты игры (проигрыш/ничья).

Это **полный граф состояний** для крестиков-ноликов, используемый для анализа игры. Если вы откроете этот HTML-файл в браузере, вы сможете исследовать все возможные сценарии игры, кликая на ячейки.

Arigato пишет:

Как именно реализован ИИ компьютера в данном коде?

Время ответа: 26 сек.

DeepSeek пишет:

Этот код **не содержит реализацию искусственного интеллекта (ИИ) в традиционном понимании**. Вместо этого здесь используется **полное предварительно рассчитанное дерево решений**, что является формой «идеального ИИ» через полный перебор. Вот как это работает:

---

### 1. **Предварительный анализ (оффлайн-генерация)**
- Весь код представляет собой **статические HTML-страницы** с заранее просчитанными всеми возможными состояниями игры.
- Дерево было сгенерировано **одним разом** (вероятно, с помощью отдельной программы на Python, C++ или другом языке), а не в реальном времени.
- Для каждого состояния доски (расстановки `1` и `0`) алгоритм:
  - Определяет, является ли состояние терминальным (победа `1`, победа `0`, ничья).
  - Если нет — генерирует все возможные следующие ходы и связывает их гиперссылками.

---

### 2. **Отсутствие динамических вычислений**
- В коде **нет JavaScript** — только HTML и CSS.
- Компьютер не «думает» во время игры. Вместо этого:
  - Каждый возможный ход уже предопределен.
  - Пользователь сам выбирает путь, кликая на ячейки (`_`).
  - Переходы между состояниями — это простые HTML-ссылки (якоря, например, `href="#q"`).

---

### 3. **Как это имитирует ИИ?**
- Это **исчерпывающая база знаний** о крестиках-ноликах:
  - Для любого состояния можно найти оптимальный исход (если игроки действуют идеально).
  - Эмоции `:(` и `:|` — это метки, показывающие результат игры при идеальной игре оппонента.
- Например:
  - Если пользователь выбирает ход, ведущий к состоянию с `:(`, это означает, что даже при лучших последующих ходах он проиграет.
  - Состояния с `:|` гарантируют ничью при правильной игре.

---

### 4. **Почему это не классический ИИ?**
- Обычный ИИ в играх:
  - Динамически вычисляет ходы в реальном времени (например, с помощью алгоритма **минимум**).
  - Использует эвристики для оценки состояний.
- Здесь же:
  - Все вычисления выполнены **заранее**.
  - Код просто **навигация по готовому дереву**.
  - Это «идеальный оппонент», но без реальной логики принятия решений.

---

### 5. **Что это дает пользователю?**
- **Обучение**: Можно изучить все варианты игры и понять, какие ходы ведут к победе/поражению/ничье.
- **Стратегия**: Если пользователь всегда выбирает ходы, ведущие к `:|`, он гарантированно сведет игру к ничье (как при идеальной игре).
- **Демонстрация**: Показывает, что крестики-нолики — это игра с полной информацией, где оптимальная стратегия существует и приводит к ничье.

---

### Итог
Это не ИИ в смысле «машинного мышления», а **жестко закодированная карта всех возможных исходов**. Компьютер не принимает решений — он просто предоставляет пользователю возможность исследовать предварительно рассчитанное идеальное дерево игры. Такой подход иногда называют «правильным ИИ» через полный перебор, но технически это просто навигация по данным.

Arigato пишет:

Можно ли тут выиграть?

Время ответа: 14 сек.

DeepSeek пишет:

Отличный вопрос! В контексте этого конкретного кода ответ неоднозначен и зависит от того, с какой точки зрения смотреть.

**Короткий ответ:** Нет, против этого "ИИ" выиграть невозможно, но вы можете выбрать путь, где выигрываете *условно*.

А теперь подробное объяснение.

### 1. Вы играете против "идеального соперника"

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

*   Если вы выберете ход, который при идеальной игре противника ведет к вашему проигрышу, вы увидите эмоцию `:(`.
*   Если вы выберете ход, который при идеальной игре противника ведет к ничьей, вы увидите эмоцию `:|`.
*   Вы не сможете найти путь, где при идеальной игре противника вы получите `:)` (победу). Такого состояния в коде просто нет, потому что его не существует в крестиках-ноликах при оптимальной игре.

### 2. Что означают эмоции `:(` и `:|`?

Эти эмоции — это не реакция ИИ, а **метка результата для данного состояния доски**.

*   **`:(` (Проигрыш)**: Это состояние означает: "**Если твой оппонент будет играть идеально, ты уже проиграл**". Из этой точки нет ни одного пути, который привел бы к вашей победе, если противник не ошибется.
*   **`:|` (Ничья)**: Это состояние означает: "**Если оба игрока будут продолжать играть идеально, игра закончится вничью**".

### 3. Так можно ли выиграть?

*   **Против идеального оппонента (как в этом дереве) — НЕТ.** Крестики-нолики — это "решенная" игра. Если оба игрока знают оптимальную стратегию, любая партия всегда заканчивается вничью. Этот код и демонстрирует этот факт.

*   **Если бы вы играли против реального человека, который может ошибаться — ДА.** Этот тренажер как раз и учит, как наказать эти ошибки. Вы можете кликать по ячейкам и смотреть:
    *   Если вы играете за `1` (крестики) и ходите первым, вы можете выбрать путь, где ваш оппонент (`0`) должен ответить идеально, чтобы свести игру к ничьей.
    *   Если в реальной игре человек в этой точке сделает неидеальный ход (не тот, что отмечен `:|` в дереве), вы моментально сможете найти путь к своей победе (`:(` для противника), используя это дерево как шпаргалку.

### Итог

Этот код — не игра против ИИ, а **интерактивная энциклопедия или симулятор идеальной игры**.

*   **Ваша цель здесь — не "победить" компьютер**, а **изучить все возможные исходы**.
*   **"Выиграть" в рамках этого симулятора** — это значит всегда выбирать ходы, которые приводят к состоянию с меткой `:|` (ничья). Это лучший из возможных результатов против идеального сопренника.
*   Любой ваш ход, ведущий к `:(`, считается проигрышной стратегией.

Таким образом, выиграть у самой системы нельзя, но можно понять, как гарантированно не проиграть и как наказывать ошибки противника в реальной игре.

Вывод.

Ну что сказать, DeepSeek справился блестяще!

Post's attachments

1.zip 3.76 kb, 2 downloads since 2025-09-08 

You don't have the permssions to download the attachments of this post.

10 (изменено: Arigato, 2025-09-09 00:15:38)

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Настала очередь ChatGPT.

Arigato пишет:

У меня есть большой код, надо понять, что он делает. Поможешь?

ChatGPT пишет:

Да. Пришли код целиком, я объясню по шагам, что он делает.

Включен режим на "подумать подольше", прикреплен файл 1.html

Arigato пишет:

Вот файл. Мне не нужно разбирать сам файл с технической точки зрения. Мне нужно, чтобы ты ответил на вопрос: что делает этот код? То есть что должен увидеть пользователь.

Время ответа: 33 сек.

ChatGPT пишет:

Это статическая HTML-страница, которая рисует длинную вертикальную «карту» из множества 3×3 блоков (каждый блок — `<p>` с сеткой 3×3 по 80×80px). Внутри ячеек стоят пустые теги `<b>`, `<i>`, `<a>`, которые через CSS `::after` превращаются в символы: `<b>` показывает `1`, `<i>` показывает `0`, `<a>` показывает `_` (а пустые ссылки `href=""` дают надпись `Top`). Между блоками встречаются элементы `<u>` и `<s>`, которые через `::after` выводят `:(` и `:|`. Ссылки с хешами (`#...`) позволяют прыгать к разным 3×3-блокам по странице.

Arigato пишет:

Мне нужно знать, что конкретно это такое?

Время ответа: 34 сек.

ChatGPT пишет:

Это статическая HTML-страница, визуализирующая длинную вертикальную «карту»/уровень, собранную из множества 3×3 тайлов. Каждый `<p>` — тайл 3×3 по 80×80px; пустые элементы `<b>`,`<i>`,`<a>`,`<u>`,`<s>` через CSS `::after` подставляют символы (`1`, `0`, `_`, `:(`, `:|` и т.д.). Якорные ссылки (`href="#..."`) служат переходами между тайлами, а ссылки с пустым `href` показывают «Top». Файл — статическое представление текстовой карты или уровня (похоже на карту для игры или головоломки).

Arigato пишет:

Про какую конкретно игру ты говоришь? Укажи название этой игры исходя из представленного кода.

Время ответа: 53 сек.

ChatGPT пишет:

Это не известная коммерческая игра.
Это самодельная гипертекстовая карта/лабиринт в виде статической HTML-страницы: каждая 3×3 клетка — «комната» или тайл; содержимое клеток выводится через CSS (`::after`), а кликабельные элементы (`<a>`) переходят по якорям между тайлами, так что пользователь видит сетку тайлов и перемещается по ней щелчками.

Вывод.

ChatGPT опять провалился. Причем я явно просил не рассказывать про техническую сторону кода, а он именно это и выдал. Что за игра так и не смог понять.

Не, DeepSeek на голову выше ChatGPT!

11

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Еще один тест ChatGPT в режиме "Глубокое исследование". Доступно ограничено (у меня всего 5 попыток на месяц).

Arigato пишет:

У меня есть большой код, надо понять, что он делает. Поможешь?

ChatGPT пишет:

Да. Пришли код или файл, и я скажу, что именно он делает и что увидит пользователь.

Включен режим "Глубокое исследование", прикреплен файл 1.html.

Arigato пишет:

Вот файл. Мне не нужно разбирать сам файл с технической точки зрения. Мне нужно, чтобы ты ответил на вопрос: что делает этот код? То есть что должен увидеть пользователь.

ChatGPT пишет:

Подтверди, пожалуйста: ты хочешь, чтобы я описал, что видит пользователь при открытии HTML-файла? То есть визуальное содержание и взаимодействие, но без анализа кода, логики, стилей и структуры?

Arigato пишет:

Да, визуальное содержание вывода без анализа кода. И понять что это вообще такое.

ChatGPT пишет:

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

Ответ по глубокому исследованию идет отдельно:

Описание интерфейса страницы

В верхней части страницы расположены две большие ссылки с надписями «1» и «0», разделённые вертикальной чертой. Это навигационные кнопки: нажав «1» пользователь сразу переходит к первому блоку, а нажав «0» – к другому разделу страницы.

Далее идёт длинная черная горизонтальная разделительная линия (граница), и под ней выстроены серии квадратных блоков 3×3 клеток. Каждый такой блок представляет собой таблицу из девяти одинаковых по размеру клеток (около 80×80 пикселей каждая) с чёрной рамкой. Блоки отделены друг от друга пробелом или тонкой линией.

В клетках этих блоков встречаются только цифры «1» и «0» (чёрным шрифтом по центру клетки) или подчёркивание «_» (которое выглядит как пустая клетка). Цифры «1» и «0» не являются ссылками – это просто текстовые символы. Подчёркивания тоже отображаются внутри клеток, но каждый знак «_» на самом деле представляет собой ссылку: при клике по такой клетке происходит переход к другому блоку (другому разделу страницы). То есть пользователь видит пустую клетку с подчёркиванием и может по ней щёлкнуть, чтобы перейти дальше.

Иногда внизу после блоков (под таблицей 3×3) появляются текстовые символы «:(» (печальное лицо) или «:|» (нейтральное лицо). Рядом с ними справа всегда стоит слово «Top» – это ссылка, которая возвращает пользователя в начало страницы. Таким образом под некоторыми блоками написано «:( Top» или «:| Top» (где «Top» – гиперссылка на верх страницы).

Цветовая схема страницы очень простая: чёрные рамки и чёрные цифры на белом фоне. Нет обычного текстового содержимого или заголовков – только эти блоки с цифрами и символами.

Навигация и переходы

Каждая ссылка (цифра «1», «0» вверху и подчёркивания в клетках) ведёт к определённой 3×3 таблице на той же странице. То есть страницы с данными блоками организованы последовательно, и пользователь перемещается по ним с помощью кликов.

Нажатие на большую «1» вверху прокручивает страницу к разделу с идентификатором 0, а «0» – к разделу с идентификатором 1 (последнему блоку).

При клике на пустую клетку с «» пользователь мгновенно перемещается к соответствующему блоку (например, «» в первом блоке ведёт ко второму блоку и т.д.). Это похоже на ступенчатую навигацию: каждое пустое поле – переход к следующему фрагменту.

Ссылка «Top» после блоков возвращает пользователя наверх страницы, делая переход удобным. Эмодзи «:(» или «:|» рядом с «Top» – это просто декоративные символы (грустное или нейтральное лицо), они не влияют на логику.

Предназначение страницы

Страница не содержит обычных информационных или рекламных элементов, а выглядит как интерактивная логическая головоломка или тренажёр. Пользователь видит последовательность маленьких «игровых полей» 3×3 с двоичными цифрами и должен переходить по ссылкам (пустым клеткам) от блока к блоку.

Очевидной текстовой инструкции или описания нет – это явно не стандартный контентный сайт, а нечто вроде демо-страницы для задач на перебор или поиска пути. Возможно, это упражнение по перебору комбинаций из нулей и единиц или некий двоичный квест.

Назначение страницы можно обобщённо описать как иллюстрация/проверка навигации по сетке из цифр 0/1, где подчёркивания – это переходы, а «Top» – возврат наверх. Для обычного пользователя это выглядит как серия связанных друг с другом матриц из нулей и единиц с переключателями для перехода между ними.

Arigato пишет:

Ты говоришь про то, что это похоже на головоломку. Определи название головоломки, которая реализована в этом коде.

ChatGPT пишет:

Уточни, пожалуйста: ты хочешь, чтобы я определил, на какую именно известную головоломку (по названию или типу) похожа эта HTML-страница? Например, это может быть лабиринт, игра в жизнь, судоку, или конкретная логическая игра с определёнными правилами. Также уточни: интересует ли тебя, как эта головоломка решается или только название?

Arigato пишет:

Меня интересует точное название известной головоломки или игры, на которую похожа эта HTML-страница. Также определи с учетом правил можно ли решить эту головоломку (или выиграть в этой игре, если это игра, а не головоломка).

ChatGPT пишет:

Понял. Определю точное название известной игры или головоломки, на которую похожа эта HTML-страница, а также выясню, можно ли в неё выиграть или решить по установленным правилам.

Результат исследования (тут он думает весьма долго, минут 10 примерно, но не засекал):

Головоломка «Lights Out» («Выключи свет»)

Анализ структуры HTML показывает, что это реализация известной головоломки Lights Out (буквально «Выключи свет»). В этой игре поле 3×3 содержит лампочки (1 – «включено», 0 – «выключено»), и при щелчке по клетке меняется состояние этой клетки и её соседей (по горизонтали и вертикали). Цель – перевести все клетки в состояние «0» (все огни потушены). Именно такое поведение описано в подключённых стилях: нажатие (ссылка) переключает ячейку (заменяя «_» на «0» или «1») и соседние. Таким образом HTML-код соответствует правилам игры Lights Out.

Решаемость (возможность выигрыша)

Для поля 3×3 задача формализуется системой линейных уравнений по модулю 2. Известно, что для игрового поля 3×3 матрица переключений невырождена (полный ранг в GF(2)), то есть для любого начального расположения лампочек существует решение. Иными словами, игровое поле 3×3 полностью решаемо: при правильной последовательности ходов можно добиться того, чтобы все огни погасли. Следовательно, в данной реализации (для обоих начальных состояний “0” и “1” на верху) решение/выигрыш существует: можно выключить все лампочки по правилам игры Lights Out.

Ответ: это головоломка «Lights Out» (выключи свет). Для поля 3×3 такая игра всегда разрешима, то есть победа (выключение всех огней) достижима.

Вывод.

Полный провал ChatGPT, даже в его "супер" режиме. Во-первых, так и не смог определить, что это игра "Крестики-Нолики". Во-вторых, еще и не правильно описал логику. Ничего общего с описанной им головоломкой нет.

12

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Ну да, подтверждаю, ChatGPT 5 Thinking у меня тоже не догадался, даже с подсказками. Зато Claude Opus 4.1 думал примерно 3 секунды:

Можешь определить, что закодировано в приложенном файле?

Анализируя структуру HTML файла, могу определить, что это **интерактивная игра "Крестики-нолики"** (Tic-Tac-Toe), реализованная полностью на HTML и CSS без JavaScript.

Вот как она работает:

## Основные элементы:
- **Игровое поле** - сетка 3×3
- **1** - ходы первого игрока (крестики)
- **0** - ходы компьютера/второго игрока (нолики) 
- **_** - пустые клетки (кликабельные ссылки)

## Индикаторы результата:
- **:(** - проигрыш игрока
- **:|** - ничья
- **"Top"** - ссылка для возврата в начало

## Механика игры:
1. В начале выбираешь, кто ходит первым (ссылки "1" или "0")
2. Каждое состояние игры закодировано как отдельный блок `<p>` с уникальным id
3. Переходы между состояниями осуществляются через якорные ссылки
4. Вся логика игры реализована через предварительно просчитанные состояния и переходы между ними

## Технические особенности:
- Использует только HTML и CSS (без JavaScript)
- Навигация через fragment identifiers (#)
- Каждое возможное состояние игры предварительно закодировано
- Большая высота страницы (2200px) используется для визуального разделения состояний

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

Но я бы не стал утверждать, что Claude лучше. Лучше в чём именно? Для меня главное значение имеет написание кода, причём зачастую требуется глубокое погружение в контекст. По моему опыту пока что в среднем ChatGPT справляется лучше, он как бы "внимательнее". Ну и прилагаю код от него в качестве "реабилитации".

Post's attachments

ttt_generator.zip 5.72 kb, 2 downloads since 2025-09-09 

You don't have the permssions to download the attachments of this post.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

Ну да, подтверждаю, ChatGPT 5 Thinking у меня тоже не догадался, даже с подсказками. Зато Claude Opus 4.1 думал примерно 3 секунды

В том и дело, что ChatGPT уже не топ.

teadrinker пишет:

Ну и прилагаю код от него в качестве "реабилитации".

Ну как сказать... Да, с задачей формально справился. Да, красиво оформил (хотя это вопрос исключительно стилей, мой вариант тоже можно украсить). Но вот его код весит 695 Кб, мой - 35 Кб. То есть у него получился файл в 20 раз больше. Не знаю, что он туда напихал (не изучал логику генератора). Скорее всего он туда запихал все возможные комбинации игрового поля, в то время, как у меня только те состояния, которые достижимы, то есть присутствуют в дереве игры. Ну я свой генератор сам писал...

14

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Так у вас все возможные комбинации присутствуют на странице одновременно, а здесь реальная смена без JS.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Но вы правы, таки навставлял лишних состояний, исправился.

Post's attachments

ttt_generator.zip 5.76 kb, 1 downloads since 2025-09-09 

You don't have the permssions to download the attachments of this post.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: Arigato, 2025-09-09 15:44:34)

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

Так у вас все возможные комбинации присутствуют на странице одновременно, а здесь реальная смена без JS.

Это стилями делается. Мне просто лень было в стилях ковыряться.

teadrinker пишет:

навставлял лишних состояний

В моем генераторе получается 314 игровых позиций. Чуть переделал, убрал кавычки в href и id, на пару Кб стало меньше (сейчас файл с игрой весит 33 Кб). Скачать можно из первого сообщения темы.

17

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Так а смысл прописывать вручную все возможные состояния, если их можно сгенерировать? А как насчёт 4х4?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

А как насчёт 4х4?

Я в такие XO никогда не играл. Но вы можете попросить ChatGPT адаптировать генератор под такие размеры игрового поля.

19

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

Да я не сомневаюсь, что он адаптирует (хотя, может, и не с первой попытки). Я намекаю на неоптимальность самого подхода — перебирать все возможные состояния поля вручную.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

20

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

teadrinker пишет:

Я намекаю на неоптимальность самого подхода — перебирать все возможные состояния поля вручную.

Не совсем пойму, в чем неоптимальность? Ну да, если состояний очень много, то размер файла будет через-чур большим. И что значит "вручную"? Это же делает генератор, который сам строит дерево игры.

21

Re: HTML: Игра "Крестики-Нолики" на чистом HTML (без скриптов)

А, я не понял, думал вы вручную писали.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder