DigitableCourses
Настройки портала
Показать возможности портала

Локально и без аккаунта. Аккаунта нет, регистрация не нужна: введённое в инструменты остаётся в localStorage браузера и на сервер не уходит.

Свой счётчик считает открытия страниц и дочитывания: уезжает адрес и десятая доля текста. Без cookies и чужих счётчиков, IP не хранится, Do Not Track уважается. Как это проверить

Репозиторий портала не выложен, «открытым кодом» мы его не зовём. Открыто это:

Живёт портал на донатах, платных консультациях и разборах по запросу и покупке Workbench.

Планов делать курсы платными нет.

Практикум по flang

Каждое задание проверяет компилятор flang 0.7.32 прямо во вкладке. К вашему коду проверка добавляет утверждения задания и считает задание решённым, если всё доказано (код 0).

1. Первая функция

Функция «Квадрат» сейчас всегда отвечает 0. Напишите тело так, чтобы она возвращала н, умноженное на само себя.

Что добавит проверка
утверждение «квадрат трёх — девять»
  утверждаем («Квадрат» от 3) равно 9

утверждение «квадрат минус четырёх — шестнадцать»
  утверждаем («Квадрат» от -4) равно 16
Подсказка

Умножение пишется словами: н умножить на н.

2. Ветвление и обещание

«Модуль» обещает результат не меньше нуля, но сейчас просто возвращает х. Добавьте ветвление, чтобы ответ был верным и обещание доказывалось.

Что добавит проверка
утверждение «модуль минус пяти — пять»
  утверждаем («Модуль» от -5) равно 5

утверждение «модуль семи — семь»
  утверждаем («Модуль» от 7) равно 7
Подсказка

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

3. Тип с вариантами

Светофор переключается так: красный → зелёный → жёлтый → красный. Напишите «Следующий» через разбор по вариантам.

Что добавит проверка
утверждение «после красного — зелёный»
  утверждаем («Следующий» от вариант Красный) равно вариант Зелёный

утверждение «после зелёного — жёлтый»
  утверждаем («Следующий» от вариант Зелёный) равно вариант Жёлтый

утверждение «после жёлтого — красный»
  утверждаем («Следующий» от вариант Жёлтый) равно вариант Красный
Подсказка

разбор сигнал, затем «случай Красный» и «то вариант Зелёный» для каждого варианта.

4. Свёртка списка

Посчитайте сумму элементов списка. Циклов в языке нет — нужна свёртка.

Что добавит проверка
утверждение «сумма пустого списка — ноль»
  утверждаем («Сумма» от пустой список) равно 0

утверждение «один, два, три — шесть»
  утверждаем («Сумма» от [1, 2, 3]) равно 6
Подсказка

свёртка элементы начиная с 0 как акк и эл → акк плюс эл

5. Бизнес-правило с обещанием

Скидка 500 положена заказу от 10 000, меньшим заказам скидки нет. Скидка не может быть больше суммы — это обещание должно доказываться.

Что добавит проверка
утверждение «с 12 000 скидка 500»
  утверждаем («Скидка» от 12000) равно 500

утверждение «с 2 000 скидки нет»
  утверждаем («Скидка» от 2000) равно 0
Подсказка

Ветка по условию «сумма не меньше 10000»; в ветке «то» компилятор знает, что 500 не больше суммы.

6. Функция, которая не завершается

Компилятор отказывается принять «Сумма до»: рекурсия не уменьшает аргумент, и функция зациклится. Исправьте вызов.

Подсказка

Рекурсивно звать нужно с меньшим числом: («Сумма до» от (н минус 1)).

7. Обещание, на которое можно сослаться

Проверка добавит функцию «Через удвоение» и теорему, которая ссылается на свойство «удвоение длины не меняет» функции «Удвоить все». Объявите это свойство.

Что добавит проверка
тотальная функция «Через удвоение»
  принимает элементы: список числа
  возвращает список числа
  для всех элементы обеспечивает «через удвоение длина та же» (длина результат) равен (длина элементы)
  «Удвоить все» от элементы

теорема «через удвоение длина та же»
  дано элементы: список числа
  утверждаем (длина результат) равен (длина элементы)
  по свойству «удвоение длины не меняет»
  следовательно доказано
Подсказка

для всех элементы обеспечивает «удвоение длины не меняет» (длина результат) равен (длина элементы)

8. Доказательство индукцией

Допишите тело индукционного шага в теореме «шаг растит счёт на один».

Подсказка

В случае «Следующий» запишите «то по предположению».