Сгенери мне чип QFP!
QFP - это тип форм-фактора для электрического компонента, в котором контакты выходят по бокам микросхемы. Вот изображение типичного компонента QFP:
Вы можете видеть, что общая формула состоит в том, чтобы иметь 4 стороны одинакового количества контактов.
Ваша задача - создать программу, которая принимает целое число, которое представляет количество выводов на одной стороне, и создает компонент ASCII QFP с пронумерованными выводами.
Входные данные:
одно целое число, которое представляет количество выводов на одной стороне
Выход:
Микросхема ASCII QFP с соответствующей распиновкой.
Пример:
ввод: 1
4 ┌┴┐ 1┤ ├3 └┬┘ 2
входной сигнал: 2
87 ┌┴┴┐ 1┤ ├6 2┤ ├5 └┬┬┘ 34
вход: 12
444444444333 876543210987 ┌┴┴┴┴┴┴┴┴┴┴┴┴┐ 1┤ ├36 2┤ ├35 3┤ ├34 4┤33 5┤ ├32 6┤31 7┤30 8┤29 9 ┤ 28 10┤27 11┤26 12┤25 └┬┬┬┬┬┬┬┬┬┬┬┬┘ 111111122222 345678901234
Правила:
- все чипы QFP должны быть закрыты и запечатаны, как это предусмотрено в ascii. Интервал имеет первостепенное значение. Пыль внутри микропроцессора - это плохо!
- нумерация выводов должна быть выполнена, как в примерах (чтение слева направо, сверху вниз, нумерация против часовой стрелки)
- Вы можете начать нумерацию с 0, но это не должно влиять на микросхему (для входа 12 все еще нужно 12 контактов на сторону)
- Единственными допустимыми символами в вашем выводе являются
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
пробелы и переводы строк. - все кодировки для языков разрешены, но ваш вывод ДОЛЖЕН соответствовать приведенным выше правилам.
Это Codegolf, и, как таковой, код с наименьшим количеством байтов выигрывает! Удачи!
Ответы:
Mathematica, 271 байт
Анонимная функция. Принимает число в качестве ввода и возвращает строку в качестве вывода. Unicode-символ для рисования без рамки - U + F3C7 (частное использование) для
\[Transpose]
.источник
Котлин ,
397393 байтаБезымянная лямбда.
Вы можете попробовать это здесь , но вам придется вставить исходный код в себя, потому что редактор, похоже, не сохраняет программы в кодировке UTF-8. Развернутая версия - это полноценная программа, поэтому вы сможете использовать ее полностью.
Golfed
(Вроде) Ungolfed
Спасла кучу байтов, перегрузив
%
оператор и использовав его для печати. Я, вероятно, вернусь к этому позже - я думаю, что смогу сохранить немало байтов, если я используюmod
или какой-либо другой оператор в качестве функции конкатенации. Больше интерполяции и меньше вызовов для печати.источник
Python 2,
352343331 байтПопробуй это здесь. Обратите внимание, что файл должен начинаться с спецификации UTF-8,
\xef\xbb\xbf
чтобы литералы Юникода работали в стандартном интерпретаторе CPython. Эти 3 байта здесь учитываются в размере.repl.it
уже использует Unicode, поэтому ссылка содержит код, показанный здесь.Спасибо @tuskiomi за идею кодирования, которая сохранила
921 байт.Частично негольфированный:
источник
# -*- coding: utf-8 -*-
плюс перевод строки наверх, чтобы переводчик принял его. Кодировка UTF-8 каждого из этих символов составляет 3 байта, поэтому этого было недостаточно для оплаты стоимости директивы кодирования. Я только что проверил PEP 263, и я могу сойти с рук просто#coding=utf-8
и новой строкой, чтобы сэкономить несколько байтов.JavaScript (ES6),
295284 байта (268 символов), неконкурентныйЭтот код не поддерживает номера выводов выше 99 и, следовательно, вероятно, не считается полностью действительной записью. Вот почему я отмечаю его как неконкурентный на данный момент.
Его можно легко модифицировать для поддержки произвольного большого количества выводов, используя более широкие статические поля вокруг чипа. Тем не менее, это может нарушать правила (не уверен в этом). Полностью динамические поля будут стоить значительно больше байтов.
демонстрация
Показать фрагмент кода
источник
Java 11,
451425393 байта-26 байт благодаря @ceilingcat .
Объяснение:
Попробуйте онлайн.
источник