diff --git a/index.html b/index.html index e15f4dd..02ff61e 100644 --- a/index.html +++ b/index.html @@ -59,7 +59,7 @@ h1 { font-family: var(--font-display); font-weight: 800; font-size: clamp(28px, @media (max-width: 1100px) { .bench { grid-template-columns: minmax(0, 1fr); } } .pane { display: grid; gap: 10px; min-width: 0; } .pane-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 16px; } -.pane h2, .lower h2, .book h2 { font-family: var(--font-display); font-weight: 700; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin: 0; } +.pane h2, .lower h2 { font-family: var(--font-display); font-weight: 700; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin: 0; } svg.view { width: 100%; height: auto; display: block; user-select: none; -webkit-user-select: none; touch-action: manipulation; } svg#dlm { filter: drop-shadow(0 14px 22px rgba(10, 20, 50, .22)); } svg#inside { border-radius: 14px; background: var(--bp-bg); } @@ -93,8 +93,9 @@ svg .hit:focus-visible .focusring { stroke: var(--blue); stroke-width: 4; } @keyframes run { to { stroke-dashoffset: -18; } } @media (prefers-reduced-motion: reduce) { #inside .flow { animation: none; stroke-dasharray: none; } * { transition: none !important; } } -.lower { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; } -@media (max-width: 1100px) { .lower { grid-template-columns: minmax(0, 1fr); } } +.lower { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto 1fr; grid-template-areas: "progs tt cols" "progs book book"; gap: 24px; align-items: start; } +.progs-box { grid-area: progs; } .tt-box { grid-area: tt; } .cols-box { grid-area: cols; } .lower > .book { grid-area: book; } +@media (max-width: 1100px) { .lower { grid-template-columns: minmax(0, 1fr); grid-template-areas: "book" "progs" "tt" "cols"; } } .lower > div { display: grid; gap: 10px; min-width: 0; } .programs { display: grid; gap: 6px; } .prog { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; text-align: left; width: 100%; padding: 9px 12px; border-radius: 10px; @@ -105,6 +106,7 @@ svg .hit:focus-visible .focusring { stroke: var(--blue); stroke-width: 4; } .prog .t { font-weight: 700; } .prog .src { font-size: 12px; color: var(--muted); align-self: center; white-space: nowrap; } .prog .d { grid-column: 1 / -1; font-size: 13px; color: var(--muted); } +.prog-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; align-items: stretch; } .group-label { font-size: 12px; color: var(--muted); margin: 8px 0 2px; } .tt-wrap { overflow-x: auto; } table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size: 14px; width: 100%; font-variant-numeric: tabular-nums; } @@ -121,17 +123,13 @@ table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size: .exprs .n, .exprs .to { color: var(--muted); } .exprs .dead { color: var(--muted); font-style: italic; font-family: var(--font-body); } -.book { background: var(--surface); border: 1px solid var(--line); border-radius: 6px; padding-block: 36px 40px; padding-inline: clamp(18px, 5vw, 64px); display: grid; gap: 34px; } -.book-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 24px; align-items: baseline; } -.book-head p { margin: 0; color: var(--muted); max-width: 60ch; } +.book { background: var(--surface); border: 1px solid var(--line); border-radius: 6px; padding: 24px clamp(16px, 3vw, 36px); display: grid; gap: 16px; } .page { font-family: var(--font-book); max-width: 68ch; display: grid; gap: 12px; } .page h3 { font-family: var(--font-book); font-size: 20px; margin: 0; letter-spacing: .04em; } .page h3 .gn { letter-spacing: .3em; font-weight: 400; } .page p { margin: 0; text-indent: 1.6em; hyphens: auto; } .page p.noind { text-indent: 0; } .note { font-family: var(--font-body); font-size: 14px; color: var(--muted); border-left: 3px solid var(--line); padding-left: 12px; max-width: 68ch; margin: 0; } -.btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; background: var(--accent); color: var(--accent-ink); border: 0; font: 700 14px var(--font-body); cursor: pointer; justify-self: start; } -.btn:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; } .sources { font-size: 14px; color: var(--muted); } .sources a { color: var(--blue); } @@ -159,8 +157,9 @@ table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size: + -

Гнездо: вставить или вынуть штеккер. Пружина, затем вторая пружина: поставить перемычку. Перемычка: снять. Переключатель: щелчок по ручке или по «0» и «1».

+

Гнездо: вставить или вынуть штеккер. Пружина, затем вторая пружина: поставить перемычку. Перемычка: снять. Переключатель: щелчок по ручке или по «0» и «1». Свою программу можно сохранить: она останется в этом браузере.

@@ -173,80 +172,67 @@ table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size:
-
+

Программы

-
+

Что ответит машина

-
+

Столбцы программирования

    -
    - -
    -
    -

    Игры из руководства 1987 года

    -

    Правила сокращены по оригинальной брошюре. Кнопка под каждой игрой набирает программу с её рисунка: штеккеры и перемычки ставятся точно как на рисунке.

    -
    -
    -

    Как читать ответ

    +
    +

    О программе

    +
    +

    +

    Ввод — переключатели А (4), Б (2), В (1): числа от 0 до 7. Вывод — лампы V (8), X (4), Y (2), Z (1): горящая лампа означает «1», «Да», «Правильно». Сумма чисел над горящими лампами даёт ответ от 0 до 15.

    Штеккер в левом гнезде замыкает звено столбца, когда переключатель стоит на «1», в правом — на «0». Столбец срабатывает, если замкнуты все три его звена. Перемычки соединяют столбцы с лампами.

    -

    Игра 1. Какое число задумано?

    Играющий задумывает число от 0 до 7 и отвечает на три вопроса. «Да» — переключатель в «1», «Нет» — в «0».

    А: Задуманное число чётное? (Ноль — чётное.)
    Б: Сумма задуманного числа и следующего за ним меньше восьми?
    В: К задуманному числу прибавьте 10 и разделите на 6. Остаток 4 или 5?

    Лампы X, Y, Z показывают задуманное число. Пример: для 5 все ответы «Нет», горят X и Z: 101 = 5.

    -

    Игра 2. Честные и лгуны

    В стране живут честные (всегда говорят правду) и лгуны (всегда лгут). На вопрос «Вы честный или лгун?» житель x отвечает на непонятном языке.

    А: житель y: «Он сказал, что он честный» — «1», «…что он лгун» — «0».
    Б: житель z о жителе x: «честный» — «1», «лгун» — «0».
    В: житель z о жителе y: «честный» — «1», «лгун» — «0».

    Горящие X, Y, Z означают, что x, y, z честные. Пример: Дима (x) честный, Витя (y) и Коля (z) лгуны. Ответы 0, 0, 1 — горит только X.

    -

    Игра 3. Сумма трёх чисел

    Играющий тайком бросает кубик и запоминает число. Его ответы на вопросы игры 1 фиксируются планками А, Б, В. Затем он бросает ещё раз, запоминает верхнее число и число на противоположной грани и складывает все три.

    Нажмите кнопку: лампы покажут сумму. Пример: 5, затем 4 и 3, сумма 12. Ответы «Нет, Нет, Нет», горят V и X: 1100 = 12.

    -

    Игра 4. Двенадцать — выигрыш!

    Противник бросает кубик первым. Дальше игроки по очереди поворачивают кубик на одну из боковых граней и прибавляют её число к сумме. Кто первым наберёт ровно 12, тот выиграл.

    Введите текущую сумму (если она больше 7, вычтите 8). Лампы X, Y, Z покажут число, которое нужно поставить наверх. Если такой грани сбоку нет, берите ближайшее меньшее. Пример: выпало 2, машина говорит 2, но двойка сверху, ставим 1 (сумма 3). Противник делает 5, машина 4 (сумма 9). Противник делает 10, вводим 2, машина 2, сумма 12.

    -

    Игра 5. Какой предмет выбран?

    Возьмите 24 спички. Игроки № 1, 2, 3 берут 1, 2 и 3 спички и тайком делят фишки А, Б, В. Затем владелец А добирает столько же, сколько взял, владелец Б — вдвое больше, владелец В — вчетверо.

    Введите число оставшихся спичек. Пара V X — игрок № 1, пара Y Z — игрок № 2. Код: 00 — фишка А, 01 — Б, 10 — В. Если все лампы погашены, правила нарушены. Пример: осталось 5, горят X и Y. Игрок № 1 — Б, игрок № 2 — В, игроку № 3 досталась А.

    -

    Игра 6. ДЛМ превосходит себя!

    Всё как в игре 5, но оператор не узнаёт, сколько спичек осталось. Он задаёт одному из игроков вопросы игры 1 про это число и читает ответ по коду игры 5.

    -

    Игра 7. Семь спичек

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

    Вводите число спичек, уже взятых (во второй половине — уже положенных). Лампы покажут, сколько их должно стать после вашего хода. Во второй половине вместо 2 вводите 111, вместо 5 — 110.

    -

    Игра 8. Зоологические карточки

    Двенадцать карточек (по 4 птицы, зверя, насекомых) лежат тремя стопками рубашкой вверх, возле стопок в любом порядке — надписи. Берите верхнюю карточку стопки «Птицы» и кладите к нужной надписи. Затем берите карточку из той стопки, куда положили, и так далее.

    А: нижняя карточка у надписи «Насекомые» — насекомое?
    Б: нижняя карточка у надписи «Звери» — зверь?
    В: среди двух просмотренных карточек есть птица?

    V, X, Y — возможен полный успех. Только X — сойдутся птицы или насекомые. Только Y — птицы или звери. Только Z — птицы, вероятно, и остальные. Ничего не горит — сойдутся только птицы.

    -

    Игра 9. ДЛМ — экзаменатор

    @@ -256,7 +242,6 @@ table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size: 3. В каком виде идёт обработка? 100 — в двоичном коде; 101 — на языке программирования.
    4. Почему ВМ и считает, и выполняет логические операции? 110 — она обрабатывает аналоговые данные; 111 — она построена на логических схемах, имитирующих алгебру Буля.

    Комментарии: 000 — Да (алгебра Буля); 001 — Нет (нужна программа); 010 — Нет (обработка цифровая); 011 — Да (ВМ работает по программе); 100 — Да (двоичный код); 101 — Нет (это внешние устройства); 110 — Нет (язык программирования нужен для общения с машиной); 111 — Да (центральный блок и внешние устройства).

    -

    Игра 10. Ваш характер

    @@ -266,18 +251,17 @@ table.tt { border-collapse: collapse; font-family: var(--font-mono); font-size: III. Нравится ли тебе, когда тебя хвалят? Доволен ли ты собой? Любишь ли ты говорить о себе?
    IV. Доводишь ли ты начатое дело до конца? Настойчиво ли ты добиваешься своей цели? Проявляешь ли ты инициативу в работе?

    Шестнадцать характеристик, от «0000 — замкнутый, скромный, целеустремлённый, но ленивый» до «1111 — деятельный, откровенный, но беспринципный и себялюбивый», приведены в полном тексте руководства.

    -

    Игра 11. Автоматическое управление лифтом

    А — направление до вызова (1 — вверх). Б — вызов вверх. В — вызов вниз.

    X — дверь разблокирована. Y — мотор работает. Z — лифт поедет вверх. При двух вызовах сразу лифт сохраняет прежнее направление.

    -
    Источник: «Игрушка Детская логическая машина ДЛМ. Руководство по эксплуатации». ВНИИ «Электронстандарт», Гатчина, 1987 — скачать PDF (сканы, набранный текст и расшифровка рисунков программ). Логические элементы взяты из статьи «Криптография и другие вычисления на детских логических машинах» (Хабр).
    -
    +
    +