Для тех, кто любит шахматы и SQL Теперь вы можете играть в шахматы на SQL. Да, этот язык настолько могуч, что позволяет собрать таблицу-шахматную доску и двигать по ней фигуры. Чтобы доска была похожа на доску, надо трансформировать строки в колонки с помощью условной агрегации: ```--Создаем таблицу и расставляем на ней фигуры — белые в двух верхних рядах, черные в нижних DROP TABLE IF EXISTS board; CREATE TABLE board (rank INTEGER, file INTEGER, piece TEXT); INSERT INTO board (rank, file, piece) VALUES (1, 1, '♖'), (1, 2, '♘'), (1, 3, '♗'), (1, 4, '♕'), (1, 5, '♔'), (1, 6, '♗'), (1, 7, '♘'), (1, 8, '♖'), (2, 1, '♙'), (2, 2, '♙'), (2, 3, '♙'), (2, 4, '♙'), (2, 5, '♙'), (2, 6, '♙'), (2, 7, '♙'), (2, 8, '♙'), (7, 1, '♟'), (7, 2, '♟'), (7, 3, '♟'), (7, 4, '♟'), (7, 5, '♟'), (7, 6, '♟'), (7, 7, '♟'), (7, 8, '♟'), (8, 1, '♜'), (8, 2, '♞'), (8, 3, '♝'), (8, 4, '♛'), (8, 5, '♚'), (8, 6, '♝'), (8, 7, '♞'), (8, 8, '♜'); -- Превращаем таблицу в расчерченную доску 8х8 WITH full_board AS ( SELECT r.rank, f.file, b.piece FROM (SELECT 1 AS rank UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8) r CROSS JOIN (SELECT 1 AS file UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8) f LEFT JOIN board b ON r.rank = b.rank AND f.file = b.file ) SELECT rank, MAX(CASE WHEN file = 1 THEN COALESCE(piece, '·') END) AS a, MAX(CASE WHEN file = 2 THEN COALESCE(piece, '·') END) AS b, MAX(CASE WHEN file = 3 THEN COALESCE(piece, '·') END) AS c, MAX(CASE WHEN file = 4 THEN COALESCE(piece, '·') END) AS d, MAX(CASE WHEN file = 5 THEN COALESCE(piece, '·') END) AS e, MAX(CASE WHEN file = 6 THEN COALESCE(piece, '·') END) AS f, MAX(CASE WHEN file = 7 THEN COALESCE(piece, '·') END) AS g, MAX(CASE WHEN file = 8 THEN COALESCE(piece, '·') END) AS h FROM full_board GROUP BY rank ORDER BY rank DESC;``` Чтобы передвинуть фигуру, надо удалить ее из старой клетки и вставить в новую: ```DELETE FROM board WHERE rank = 2 AND file = 5; -- Пешка с е2… INSERT INTO board VALUES (4, 5, '♙'); -- …перемещается на е4.``` Готово, у вас есть SQL-шахматы, а значит, вам никогда не будет скучно на работе. Если играть не с кем, то можно разыграть в соло какую-нибудь классическую партию — автор идеи привел в своем блоге несколько примеров.
Для тех, кто любит шахматы и SQL Теперь вы можете играть в шахматы на SQL. Да,…
Из этого канала
- #2017В Японии ИИ не отнимает работу у людей… …потому что отнимать не у кого. Страна…
В Японии ИИ не отнимает работу у людей… …потому что отнимать не у кого. Страна стареет, рождаемость падает, и работоспособного населения становится все меньше.
- #2018DOOM в DNS Неисчислимы способы запустить DOOM на всех возможных языках…
DOOM в DNS Неисчислимы способы запустить DOOM на всех возможных языках программирования и устройствах. И вот к ним добавился еще один.
- #2019Магазин на SQLite Без ~~мам, пап и кредитов~~ вездесущего PostgeSQL. Команда…
Магазин на SQLite Без ~~мам, пап и кредитов~~ вездесущего PostgeSQL. Команда магазина, которым полностью управляют ИИ-агенты, рассказала, как обходится один…
- #2015Тяните карту Устали принимать решения на основе данных и аналитики? Не можете…
Тяните карту Устали принимать решения на основе данных и аналитики? Не можете больше смотреть на дашборды и обсуждать планы на бесконечных совещаниях? Тогда…
- #2014Что бы мы делали, если бы сейчас выбирали STEM-вуз? Думаем, в первую очередь…
Что бы мы делали, если бы сейчас выбирали STEM-вуз? Думаем, в первую очередь поменяли бы сам подход к выбору.