Используя только пригодный для печати ASCII (шестнадцатеричные коды от 20 до 7E), напишите квадратную базовую программу N × N без комментариев, которая окружена еще 4 слоями , создав квадратную программу (N + 8) × (N + 8) (N> 0) , Для N = 3 макет (который будет заменен реальным кодом) выглядит следующим образом:
44444444444
43333333334
43222222234
43211111234
4321CCC1234
4321CCC1234
4321CCC1234
43211111234
43222222234
43333333334
44444444444
- C представляют основную программу 3 × 3.
- 1 представляют первый слой, 2 представляют второй слой и т. Д.
Программа всегда принимает строку целых чисел, разделенных пробелом, например, 0 -1 31 -1 2 2 2
через stdin или аналогичные (это должны быть просто числа, без кавычек, скобок или чего-либо еще). Вывод зависит от того, какие части макета были запущены.
Существует пять способов запуска программы (новые строки включены в прогон). Каждый делает что-то свое в списке:
Запустите только ядро:
CCC CCC CCC
Это вычисляет максимум абсолютных значений элементов входного списка и печатает
CORE
на новой строке много раз. Если максимальное значение равно 0, ничего не выводится (новая строка в порядке).Выход для
0 -1 31 -1 2 2 2
будетCORE CORE ...
31 раз
Запустите ядро со слоем 1:
11111 1CCC1 1CCC1 1CCC1 11111
Это выводит среднее ( среднее арифметическое ) значений списка в стандартную точность с плавающей запятой.
- Выход для
0 -1 31 -1 2 2 2
35/7 =5
(5.0
в порядке).
- Выход для
Запустите ядро со слоями 1 и 2:
2222222 2111112 21CCC12 21CCC12 21CCC12 2111112 2222222
Это выводит разделенный пробелами список перевернутого списка ввода.
- Выход для
0 -1 31 -1 2 2 2
будет2 2 2 -1 31 -1 0
.
- Выход для
Запустите ядро со слоями 1, 2 и 3 (рисунок должен быть очевидным).
Это выводит разделенный пробелами список отсортированного списка ввода.- Выход для
0 -1 31 -1 2 2 2
будет-1 -1 0 2 2 2 31
.
- Выход для
Запустите ядро со слоями 1, 2, 3 и 4.
Это выведет разделенный пробелами список входного списка с удаленными дубликатами, порядок не имеет значения.- Выход для
0 -1 31 -1 2 2 2
может быть-1 0 2 31
.
- Выход для
Весь вывод - это стандартный вывод или аналогичная альтернатива.
Только эти 5 комбинаций макетов имеют указанное поведение.
Заметки
- Комментарии не допускаются в ядре или слоях или их комбинациях. Код, который не работает или не делает ничего конструктивного, не считается комментарием.
- Помните, что ядро может иметь любые (положительные) размеры N × N, но слои имеют толщину всего один символ.
- Вы можете предположить, что у ввода нет начальных или конечных пробелов и ровно один пробел между числами. Он всегда будет содержать хотя бы одно число. (Списки вывода тоже должны быть отформатированы.)
- Вы можете предположить, что список и вычисления, необходимые для вывода, не будут иметь значений, которые переполняют (или уменьшают) ваши целые числа (если их максимум равен чему-то разумному, например, 2 16 ).
счет
Написание этой программы обычно было бы легко. Писать его с небольшим ядром сложно.
Программа с наименьшим размером ядра (наименьшим N) побеждает. В случае связей победителем является полная программа (квадрат (N + 8) × (N + 8)) с наименьшим количеством различных символов (не считая перевода строки).
Пожалуйста, укажите ваше значение N в верхней части вашего ответа.