¡Generame un chip QFP!
QFP es un tipo de factor de forma para un componente eléctrico donde los pines salen de los lados de un chip. Aquí hay una imagen de un componente típico de QFP:
puede ver que la fórmula general es tener 4 lados de igual número de pines.
Su desafío es crear un programa que tome un número entero, que represente el número de pines en un lado, y cree un componente ASCII QFP con pines numerados.
Entrada:
Un número entero que representa el número de pines en un lado
Salida:
Un chip ASCII QFP con un pinout apropiado.
Ejemplo:
entrada: 1
4 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
Reglas:
- Todos los chips QFP deben estar encerrados y sellados, así como ASCII proporciona. el espacio es de suma importancia. El polvo dentro de un microprocesador es algo malo.
- la numeración del pin debe hacerse como en los ejemplos (Leer de izquierda a derecha, de arriba a abajo, numerados en sentido antihorario)
- Puede comenzar a numerar en 0, pero esto no debe afectar el chip (una entrada de 12 todavía necesita 12 pines por lado)
- Los únicos caracteres válidos en su salida son
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
espacios y líneas nuevas. - todas las codificaciones para idiomas están permitidas, pero su salida DEBE ser coherente con las reglas anteriores.
Este es un codegolf, y como tal, ¡gana el código con el menor número de bytes! ¡Buena suerte!
code-golf
string
ascii-art
kolmogorov-complexity
tuskiomi
fuente
fuente
Respuestas:
Mathematica, 271 bytes
Función anónima. Toma un número como entrada y devuelve una cadena como salida. El carácter Unicode sin dibujo de caja es U + F3C7 (uso privado) para
\[Transpose]
.fuente
Kotlin ,
397393 bytesLambda sin nombre.
Puedes probarlo aquí , pero tendrás que pegar la fuente en ti mismo porque el editor no parece guardar programas en codificación UTF-8. La versión sin golf es un programa completo, por lo que debería poder usarlo en su totalidad.
Golfed
(Más o menos) Sin golf
Ahorró un montón de bytes al sobrecargar el
%
operador y usarlo para imprimir. Probablemente volveré a visitar esto más tarde; creo que puedo ahorrar bastantes bytes si usomod
o algún otro operador como función de concatenación. Más interpolación y menos llamadas impresas.fuente
Python 2,
352343331 bytesPruébalo aquí. Tenga en cuenta que el archivo debe comenzar con la lista de materiales UTF-8
\xef\xbb\xbf
para que los literales unicode funcionen en el intérprete estándar de CPython. Estos 3 bytes se cuentan contra el tamaño aquí.repl.it
ya está utilizando Unicode, por lo que el enlace solo tiene el código que se muestra aquí.Gracias @tuskiomi por la idea de codificación que guardó
9 921 bytes.Parcialmente no golfista:
fuente
# -*- coding: utf-8 -*-
más una nueva línea en la parte superior para que el intérprete lo aceptara. La codificación UTF-8 de cada uno de esos caracteres es de 3 bytes, por lo que no fue suficiente para pagar el costo de la directiva de codificación. Sin embargo, acabo de comprobar PEP 263 y puedo salir con solo#coding=utf-8
y una nueva línea para que ahorre algunos bytes.JavaScript (ES6),
295284 bytes (268 caracteres), no competidorEste código no admite números de pin superiores a 99 y, por lo tanto, probablemente no califica como una entrada totalmente válida. Es por eso que lo marco como no competitivo por ahora.
Se podría modificar fácilmente para admitir una gran cantidad arbitraria de pines utilizando márgenes estáticos más amplios alrededor del chip. Sin embargo, eso también puede infringir las reglas (no estoy seguro de eso). Los márgenes totalmente dinámicos costarían significativamente más bytes.
Manifestación
Mostrar fragmento de código
fuente
Java 11,
451425393 bytes-26 bytes gracias a @ceilingcat .
Explicación:
Pruébalo en línea.
fuente