Se supone que este es un desafío de código de golf en el extremo más simple del espectro. Pero pensé que podría ser bueno sacar algo de micro-optimización aquí.
Hay tres tipos básicos de conectores DVI : DVI-A (analógico), DVI-D (digital) y DVI-I (integrado). Además, hay versiones de enlace simple y enlace doble de los conectores DVI-D y DVI-I. Cada uno de esos cinco conectores diferentes utiliza un conjunto diferente de pines.
Dada una de A
, D1
, D2
, I1
, I2
como un identificador para el tipo de conector, imprimir la correspondiente representación ASCII de los terminales del conector:
A:
# # # # # # #
===== # # #
# # # # # #
D1:
# # # # # #
===== # # # # # #
# # # # # #
D2:
# # # # # # # #
===== # # # # # # # #
# # # # # # # #
I1:
# # # # # # # #
===== # # # # # #
# # # # # # # #
I2:
# # # # # # # # # #
===== # # # # # # # #
# # # # # # # # # #
(Las X:
líneas no son parte de la salida, solo debe imprimir 3 líneas).
Puede escribir un programa o función, tomando entrada a través de STDIN, ARGV o argumento de función. La salida debe imprimirse en STDOUT, con un avance de línea final opcional.
Puede incluir o no espacios finales en la segunda línea del A
conector. No debe utilizar espacios iniciales o finales adicionales en ningún otro lugar.
Este es el código de golf, por lo que gana la respuesta más corta (en bytes).
fuente
"I1"
lugar deI1
?Respuestas:
CJam,
7970 bytesInspirado en la respuesta de nutki . Esto también asegura que no haya espacios en blanco al final (excepto la segunda línea)
Use este enlace para copiar el código ya que SE elimina los caracteres no imprimibles.
Hay 5 caracteres en el rango ASCII no imprimible pero dentro de un byte (código ASCII 255)
Cómo funciona :
Pruébalo en línea aquí
fuente
Perl -
10091 (incluyendo 1 bandera)Utiliza las ideas de nutki de usar
-p
y reducir espacios dobles. Eliminación también simplificada de espacios finales.La entrada proviene de stdin y debe contener solo el tipo de conector sin nueva línea final.
Anterior:
Toma un argumento de línea de comandos. Sin golf:
fuente
$x=shift|" qb"
y reemplazando 3 ocurrencias de doble espacio conb
en la plantilla. También cambiar el procesamiento de entrada a '-p' da 7 adicionales (menos el indicador):$x=$_|""
y no es necesario el finalsay
.x
a#
. Pero la segunda línea todavía tiene espacios finales en todos los casos. ParaA
, el espacio se extiende más allá del final#
de las otras líneas (que supongo que está técnicamente permitido). Pero para elI1
,I2
, etc. casos, todavía hay un espacio final que debe ser atendido. Sin embargo, creo que puedo jugar un par de personajes más.Python, 168 caracteres
Parece ser un nuevo enfoque. Tengo la cadena:
Puedo reemplazar el
G
,H
y2
en base a la entrada.fuente
J,
Minified153121119caracteresUn tercer enfoque: empacar todos
y cada uno
No minificado#
en un número entero enorme como bits. Agregue el=
's después. Sin embargo, todavía no hace uso de la simetría de muchas de las variantes de conector.Minificado (153)
También como una función. Éste usa una codificación binaria de longitud variable, al contar las que están en binario y separarlas por ceros. 0 unidades seguidas significa
, 1 una significa
Sin golf#
, 2 unidades significa=
, 3 unidades significa nueva línea y 4 unidades separan las cinco cadenas entre sí.fuente
Maravilloso, 281 bytes / caracteres
Minified:
Esto lleva
D1
,D2
,I1
,I2
oA
de STDIN. Las nuevas líneas finales en la entrada son opcionales. La salida es STDOUT.Este programa llama a subpaneles que imprimen partes de conectores, rellenando
#
s o dejando espacios dependiendo de las entradas.Prueba esta respuesta aquí ; Se necesitan tableros cilíndricos.
con comentarios:
fuente
Perl 5: 105 (incluyendo 1 bandera)
Otra solución más de Perl. Utiliza stdin para el parámetro.
fuente
GNU sed, 116 bytes
Salida:
fuente
J,
Minified198194157caracteresImplementado como una función. Tenga en cuenta que la función es un tren, lo que significa que uno tendría que rodearla entre paréntesis o asignarle un nombre para usarla (tal vez debería contar los padres como parte de la función, aunque técnicamente no lo son).
Sin golfLa idea es almacenar la parte común de la cadena por separado de los caracteres que difieren entre los tipos de conector.
S1
almacena los caracteres únicos yS2
actúa como un patrón conx
los que actúan como marcadores de posición para completar.fuente
Pitón -
167 166 164 161159fuente
JavaScript (ES6) 178
186Editar Teniendo 7 bloques de base, use la base 7 de
manera recta, usando la construcción de cadenas con reemplazo y 7 bloques de construcción.
Salida a stdout usando alerta según lo solicitado por OP.
Ahora intentaré algunas micro optimizaciones ...
Prueba en la consola FireFox / FireBug - eliminando 'alerta' para simplificar la prueba
Salida
fuente
APL (115)
Prueba:
fuente
JavScript ES6, 186 bytes
Mostrar fragmento de código
El código es rápido y sucio, pero hace el trabajo. En su mayoría, los
#
espacios y los espacios se colocan en binario y luego en base 36. Estoy buscando una solución más elegante y con suerte más corta.fuente
Perl 5 - 150 (149 + 1 para
n
)Golfizado:
Entrada de STDIN, salida a STDOUT. Funciona rellenando ciertos caracteres con
#
odependiendo de la entrada.
Sin golf:
fuente