loading..
Русский    English
16:48
листать

Планета Торус стр. 2

С тех пор как среди участников соревнований на сайте sql-ex.ru появились торусианцы, стала доступной новая информация об их галактике Лорус (Lorus). Например, оказалось, что Torus 36x36 - не самая большая планета этой системы. В целях культурного обмена, немало фактологических данных из исторических хроник Torus было занесено в основные и проверочные базы сайта (Painting, Ships и прочих).

Из условий задач на sql-ex становится известным, что единицей длины на Торусе является торометр, а единой валютой – торобакс. Основой жизни там является вода и ее разновидность – лед. В условиях задач приводятся основные сведения о физико-химических характеристиках, экономических и политических системах планет Torus MxN.

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

Соседние страны на Торусе 3x7

Для каждой из стран планеты Торус 3x7:
T00    T01    …    T06
T10    T11    …    T16
T20    T21    …    T26
найти список всех соседних стран, с которыми она имеет границу ненулевой длины. Решение привести в виде таблицы из пяти колонок: [State] [NN] [WW] [SS] [EE].

Подсказка
. Вот как выглядит ответ для обычного (нетороидального) случая.

State NN WW SS EE
T00    NULL    NULL    T10    T01
T01    NULL    T00    T11    T02
T02    NULL    T01    T12    T03
T03    NULL    T02    T13    T04
T04    NULL    T03    T14    T05
T05    NULL    T04    T15    T06
T06    NULL    T05    T16    NULL
T10    T00    NULL    T20    T11
T11    T01    T10    T21    T12
T12    T02    T11    T22    T13
T13    T03    T12    T23    T14
T14    T04    T13    T24    T15
T15    T05    T14    T25    T16
T16    T06    T15    T26    NULL
T20    T10    NULL    NULL    T21
T21    T11    T20    NULL    T22
T22    T12    T21    NULL    T23
T23    T13    T22    NULL    T24
T24    T14    T23    NULL    T25
T25    T15    T24    NULL    T26
T26    T16    T25    NULL    NULL

Решение для тороидального случая.

Консоль
Выполнить
  1. SELECT
  2.  'T'+CAST(AS varchar)+CAST(AS varchar) [State]
  3. ,'T'+CAST(k1 AS varchar)+CAST(j1 AS varchar) [NN]
  4. ,'T'+CAST(i2 AS varchar)+CAST(k2 AS varchar) [WW]
  5. ,'T'+CAST(k4 AS varchar)+CAST(j4 AS varchar) [SS]
  6. ,'T'+CAST(i3 AS varchar)+CAST(k3 AS varchar) [EE]
  7. FROM (SELECT j=0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL
  8.          SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6)J
  9. CROSS JOIN (SELECT i=0 UNION ALL SELECT 1 UNION ALL SELECT 2)I
  10. CROSS APPLY(SELECT i1=i-1,j1=j,i2=i,j2=j-1,i3=i,j3=j+1,i4=i+1,j4=j)D
  11. CROSS APPLY(SELECT
  12.  k1=CASE WHEN i1<0 THEN 2 ELSE i1 END
  13. ,k2=CASE WHEN j2<0 THEN 6 ELSE j2 END
  14. ,k3=CASE WHEN j3>6 THEN 0 ELSE j3 END
  15. ,k4=CASE WHEN i4>2 THEN 0 ELSE i4 END
  16. )E;

Правильный ответ:

State NN WW SS EE
T00    T20    T06    T10    T01
T01    T21    T00    T11    T02
T02    T22    T01    T12    T03
T03    T23    T02    T13    T04
T04    T24    T03    T14    T05
T05    T25    T04    T15    T06
T06    T26    T05    T16    T00
T10    T00    T16    T20    T11
T11    T01    T10    T21    T12
T12    T02    T11    T22    T13
T13    T03    T12    T23    T14
T14    T04    T13    T24    T15
T15    T05    T14    T25    T16
T16    T06    T15    T26    T10
T20    T10    T26    T00    T21
T21    T11    T20    T01    T22
T22    T12    T21    T02    T23
T23    T13    T22    T03    T24
T24    T14    T23    T04    T25
T25    T15    T24    T05    T26
T26    T16    T25    T06    T20

Bookmark and Share
Страницы: 1 2
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
несколько дней назад
https://exchangesumo.com/obmen/BTC-PPEUR-sort
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.