Ceci est censé être un défi de golf de code à l'extrémité la plus simple du spectre. Mais je pensais que ce serait bien de faire ressortir une micro-optimisation ici.
Il existe trois types de connecteurs DVI de base : DVI-A (analogique), DVI-D (numérique) et DVI-I (intégré). De plus, il existe des versions à liaison simple et à double liaison des connecteurs DVI-D et DVI-I. Chacun de ces cinq connecteurs différents utilise un jeu de broches différent.
Compte tenu de l' un des A
, D1
, D2
, I1
, I2
comme identificateur pour le type de connecteur, imprimer la représentation ASCII correspondant des broches du connecteur:
A:
# # # # # # #
===== # # #
# # # # # #
D1:
# # # # # #
===== # # # # # #
# # # # # #
D2:
# # # # # # # #
===== # # # # # # # #
# # # # # # # #
I1:
# # # # # # # #
===== # # # # # #
# # # # # # # #
I2:
# # # # # # # # # #
===== # # # # # # # #
# # # # # # # # # #
(Les X:
lignes ne font pas partie de la sortie, vous ne devez imprimer que 3 lignes.)
Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN, ARGV ou un argument de fonction. La sortie doit être imprimée sur STDOUT, avec un saut de ligne en option.
Vous pouvez ou non inclure des espaces de fin dans la deuxième ligne du A
connecteur. Vous ne devez pas utiliser d’ espaces de début ou de fin supplémentaires ailleurs.
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.
la source
"I1"
au lieu deI1
?Réponses:
CJam,
7970 octetsInspiré de la réponse de Nutki . Cela garantit également qu'il n'y a pas d'espaces blancs à la fin (sauf pour la deuxième ligne)
Utilisation ce lien pour copier le code pendant que SE supprime les caractères non imprimables.
Il y a 5 caractères dans la plage ASCII non imprimable mais bien dans un octet (code ASCII 255)
Comment ça marche :
Essayez-le en ligne ici
la source
Perl -
10091 (dont 1 drapeau)Utilise les idées d'utilisation de nutki
-p
et de réduire les espaces doubles. Élimination également simplifiée des espaces de fuite.L'entrée provient de stdin et doit contenir uniquement le type de connecteur sans nouvelle ligne de fin.
Précédent:
Prend un argument de ligne de commande. Non golfé:
la source
$x=shift|" qb"
et en remplaçant 3 occurrences d'espace double avecb
dans le modèle. Changer également le traitement d'entrée en «-p» donne 7 supplémentaires (moins l'indicateur):$x=$_|""
et pas besoin de finalsay
.x
à#
. Mais la deuxième ligne a toujours des espaces de fin dans tous les cas. CarA
, l'espace s'étend au-delà de la finale#
des autres lignes (ce qui, je suppose, est techniquement autorisé). Mais pour leI1
,I2
, etc. Dans certains cas, il reste un espace de fuite qui doit être pris en charge. Je pense que je peux jouer au golf avec quelques personnages supplémentaires.Python, 168 caractères
Semble être une nouvelle approche. J'ai la chaîne:
Je remplace le
G
,H
et2
basé sur l'entrée.la source
J,
Minified153 121119 caractèresUne troisième approche: regrouper tous les
'et
Non minifié#
' dans un énorme entier sous forme de bits. Ajouter le=
s par la suite. Cependant, ne fait toujours pas usage de la symétrie de la plupart des variantes de connecteurs.Minifié (153)
Aussi en fonction. Celui-ci utilise un codage binaire de longueur variable, en comptant ceux en binaire et en les séparant par des zéros. 0 un dans une rangée signifie
, 1 un signifie
Non golfé#
, 2 un signifie=
, 3 uns signifie nouvelle ligne et 4 uns séparent les cinq chaînes les unes des autres.la source
Marbelous, 281 octets / caractères
Minifié:
Cela prend
D1
,D2
,I1
,I2
ouA
de STDIN. Les sauts de ligne en entrée sont facultatifs. La sortie est vers STDOUT.Ce programme appelle des sous-cartes qui impriment des parties de connecteurs, soit en remplissant
#
s ou en laissant des espaces en fonction des entrées.Essayez cette réponse ici ; des planches cylindriques sont nécessaires.
avec commentaires:
la source
Perl 5: 105 (dont 1 drapeau)
Encore une autre solution Perl. Utilise stdin pour le paramètre.
la source
GNU sed, 116 octets
Sortie:
la source
J,
Minified198 194157 caractèresMis en œuvre en tant que fonction. Notez que la fonction est un train, ce qui signifie qu'il faudrait l'entourer de parenthèses ou l'attribuer à un nom pour l'utiliser (peut-être devrais-je compter les parens dans le cadre de la fonction, même si techniquement ils ne le sont pas).
Non golféL'idée est de stocker la partie commune de la chaîne séparément des caractères qui diffèrent entre les types de connecteurs.
S1
stocke les caractères uniques etS2
agit comme un modèle avecx
's agissant comme des espaces réservés à remplir.la source
Python -
167 166 164 161 161159la source
JavaScript (ES6) 178
186Modifier Ayant 7 blocs de base, utilisez la base 7 de
façon directe, en utilisant la construction de chaînes avec replace et 7 blocs de construction.
Sortie vers stdout en utilisant une alerte comme demandé par OP.
Je vais maintenant essayer quelques micro-optimisations ...
Tester dans la console FireFox / FireBug - supprimer «alerte» pour simplifier le test
Sortie
la source
APL (115)
Tester:
la source
JavScript ES6, 186 octets
Afficher l'extrait de code
Le code est rapide et sale, mais il fait le travail. Généralement, les
#
et les espaces sont mis en binaire puis en base 36. Je cherche une solution plus élégante et, espérons-le, plus courte.la source
Perl 5-150 (149 + 1 pour
n
)Golfé:
Entrée depuis STDIN, sortie vers STDOUT. Fonctionne en remplissant certains caractères avec
#
oufonction de l'entrée.
Non golfé:
la source