Me gera um chip QFP!
QFP é um tipo de fator de forma para um componente elétrico no qual os pinos saem pelas laterais de um chip. Aqui está uma imagem de um componente QFP típico:
você pode ver que a fórmula geral é ter 4 lados de igual número de pinos.
Seu desafio é criar um programa que inclua um número inteiro, que represente o número de pinos de um lado e crie um componente ASCII QFP com pinos numerados.
Entrada:
um único inteiro que representa o número de pinos de um lado
Saída:
Um chip ASCII QFP com uma pinagem apropriada.
Exemplo:
entrada: 1
4 ┌┴┐ 1┤ ├3 └┬┘ 2
entrada: 2
87 ┌┴┴┐ 1┤ ├6 2┤ ├5 └┬┬┘ 34
entrada: 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
Regras:
- todos os chips QFP devem ser fechados e selados, assim como o ASCII fornece. o espaçamento é de extrema importância. Poeira dentro de um microprocessador é uma coisa ruim!
- a numeração dos pinos deve ser feita como nos exemplos (leia da esquerda para a direita, de cima para baixo, numerado no sentido anti-horário)
- Você pode começar a numerar em 0, mas isso não deve afetar o chip (uma entrada de 12 ainda precisa de 12 pinos por lado)
- Os únicos caracteres válidos na sua saída são
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
espaços e novas linhas. - todas as codificações para idiomas são permitidas, mas sua saída DEVE ser consistente com as regras acima.
Este é um codegolf e, como tal, vence o código com o menor número de bytes! Boa sorte!
code-golf
string
ascii-art
kolmogorov-complexity
tuskiomi
fonte
fonte
Respostas:
Mathematica, 271 bytes
Função anônima. Pega um número como entrada e retorna uma string como saída. O caractere Unicode sem desenho de caixa é U + F3C7 (uso privado) para
\[Transpose]
.fonte
KOTLIN ,
397393 bytesLambda sem nome.
Você pode experimentá-lo aqui , mas precisará colar a fonte em si mesmo, porque o editor não parece salvar programas na codificação UTF-8. A versão não-gasta é um programa completo, portanto você deve poder usá-lo na íntegra.
Golfe
(Mais ou menos) Ungolfed
Economizou um monte de bytes sobrecarregando o
%
operador e usando-o para imprimir. Provavelmente revisitarei isso mais tarde - acho que posso salvar alguns bytes se usarmod
algum outro operador como uma função de concatenação. Mais interpolação e menos chamadas de impressão.fonte
Python 2,
352343331 bytesExperimente aqui. Observe que o arquivo deve começar com a UTF-8 BOM
\xef\xbb\xbf
para que os literais unicode funcionem no interpretador CPython padrão. Esses 3 bytes são contados em relação ao tamanho aqui.repl.it
já está usando unicode, então o link tem apenas o código mostrado aqui.Obrigado @tuskiomi pela idéia de codificação que salvou
921 bytes.Parcialmente sem golfe:
fonte
# -*- coding: utf-8 -*-
uma nova linha no topo para que o intérprete o aceitasse. A codificação UTF-8 de cada um desses caracteres é de 3 bytes, portanto não foi suficiente para pagar o custo da diretiva de codificação. Acabei de verificar o PEP 263 e posso usar apenas#coding=utf-8
uma nova linha para que ele economize alguns bytes.JavaScript (ES6),
295284 bytes (268 caracteres), não concorrenteEsse código não suporta números de pinos acima de 99 e, portanto, provavelmente não se qualifica como uma entrada totalmente válida. É por isso que eu o marquei como não competitivo por enquanto.
Poderia ser facilmente modificado para suportar um grande número arbitrário de pinos usando margens estáticas mais amplas ao redor do chip. No entanto, isso também pode infringir as regras (não tenho certeza disso). Margens totalmente dinâmicas custariam significativamente mais bytes.
Demo
Mostrar snippet de código
fonte
Java 11,
451425393 bytes-26 bytes graças a @ceilingcat .
Explicação:
Experimente online.
fonte