introduction
Je pense que tout le monde convient que les belles photos doivent avoir un joli cadre. Mais la plupart des défis sur ce site concernant ASCII-Art veulent juste l'image brute et ne se soucient pas de sa conservation.
Ne serait-ce pas bien si nous avions un programme qui prend de l'ASCII-Art et l'entoure d'un joli cadre?
Le défi
Écrivez un programme qui prend de l'ASCII-Art en entrée et le sort entouré d'un joli cadre.
Exemple:
***** *** * *** *****
devient
╔═══════╗ ║ ***** ║ ║ *** ║ ║ * ║ ║ *** ║ ║ ***** ║ ╚═══════╝
- Vous devez utiliser exactement les mêmes caractères pour le cadre que dans l'exemple:
═ ║ ╔ ╗ ╚ ╝
- Le haut et le bas du cadre sont insérés avant la première et après la dernière ligne de l'entrée.
- Les parties gauche et droite du cadre doivent avoir exactement un espace de remplissage sur la ligne la plus large de l'entrée.
- Il ne doit pas y avoir d'espaces blancs de début ou de fin dans la sortie. Seule une nouvelle ligne de fin est autorisée.
- Vous pouvez supposer que l'entrée n'a pas d'espaces blancs de début inutiles.
- Vous pouvez supposer que l'entrée n'a aucun espace de fin sur aucune ligne.
- Vous n'avez pas besoin de gérer une entrée vide.
- L'entrée ne contiendra que des caractères ASCII imprimables et des retours à la ligne.
Règles
- Fonction ou programme complet autorisé.
- Règles par défaut pour les entrées / sorties.
- Des échappatoires standard s'appliquent.
- C'est le golf de code , donc le nombre d'octets le plus bas l'emporte. Tiebreaker est une soumission antérieure.
Codage heureux!
En utilisant un grand ASCII-Art, qui a été produit dans n'importe quel défi sur ce site, comme entrée dans votre programme et le montrer avec un joli cadre est fortement encouragé!
#
quatre fois. L'adaptation d'une telle approche ici sera au mieux délicate , et pas viable au pire.)Réponses:
CJam, 45 caractères / 52 octets
Essayer d'éviter ces caractères coûteux de 3 octets était ... intéressant.
Essayez-le en ligne
Explication
la source
Haskell, 139 octets
Par exemple, j'encadre le bonhomme de neige "12333321" .
Comment ça marche:
la source
JavaScript (ES6), 138 octets
Il s'agit de 138 octets dans le codage IBM866, qui au moment de l'écriture est toujours pris en charge dans Firefox, mais 152 en UTF-8.
la source
Bash,
173171150148147 octets,157136134133 caractèresMultiligne:
Exemple d'exécution:
Exemple d'exécution à partir du script:
la source
...?${#2}+2:n))
au lieu de+1
, déposez 2 espaces etprintf -v z %${n}s;
au lieu deprintf -v z " %*.s" $n
.AWK, 159 octets
Apparemment,
awk
peut imprimer Unicode si vous pouvez trouver comment l'obtenir dans le code.la source
Perl, 111 caractères
(le score inclut +5 pour les drapeaux d'interprète)
Tout d'abord, nous trouvons la longueur de ligne la plus longue
$n
, en triant numériquement les longueurs de toutes les lignes.Nous définissons
$l
la barre d'en-tête / pied de page comme des$n
répétitions du caractère de cadre horizontal.Ensuite, nous imprimons chaque ligne formatée pour être alignée à gauche dans un champ de largeur
$n
, prise en sandwich entre les caractères du cadre.Résultat:
la source
Pyth, 44 caractères (58 octets)
Explication
Essayez-le ici.
la source
PHP 5.3, 209 octets
Cela ne fonctionne qu'avec le codage OEM 860 . Il s'agit d'un sur-ensemble ASCII étendu, utilisé dans les versions DOS portugaises. Comme je suis portugais (et j'aimais faire ces "frames" en Pascal) et que c'est un encodage standard, j'ai continué avec ceci:
Voici le base64:
Cette réponse était basée sur ma réponse sur: https://codegolf.stackexchange.com/a/57883/14732 (le gros du travail a été fait là-bas, juste eu à tordre un peu).
la source
22+58+11+5+11+24+66+12=209
Les 12 derniers sont des sauts de ligne et comme c'est DOS qui signifie CRLF, ou deux octets par saut de ligne. Le site charactercountonline ne compte pas les sauts de ligne. Chacun des glyphes non ASCII fait 1 octet dans l'OEM 860.\n
en\r\n
, lors de l'ouverture du fichier en mode ASCII / texte.Python 3, 119 octets
126 octetsContribution:Sortie:
la source
print"╔"+h+"╗\n"+"".join(o)+"╚"+h+"╝"
.def f(x):
n='\n';s="║ ";e=" ║";h=(x.find(n)+2)*"═";return"╔"+h+"╗"+n+s+x.replace(n,e+n+s)+e+n+"╚"+h+"╝"
<s>...</s>
). Vous pouvez également ajouter<!-- language-all: lang-python -->
avant votre bloc de code pour ajouter une coloration syntaxique à votre code.Python 2, 115 octets
Semble plus court que 115 ici, mais le fichier de travail comprend une signature de marque de nomenclature UTF-8 de 3 octets, augmentant ainsi jusqu'à 115 octets. Si vous l'exécutiez en Python 3, vous n'auriez pas besoin de la nomenclature et elle descendrait à 112 octets.
la source
sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' codeGolf.py
C, 290 octets
Fonction golf
B
, avec dépendances; prend l'entrée en tant que caractère terminé par un caractère nul *Fonction assez peu jouée dans le programme complet
contribution
sortie
Conseils de golf C appréciés!
la source