Reconnaissez-vous le logo PPCG? cela ressemble à ceci, quand vous en faites un art ascii.
+---+
|PCG|
+---+
v
Maintenant, dans ce code Golf, vous allez créer un code qui crée des logos pour d'autres sites, similaire au logo PPCG.
Ce que tu devrais faire
La chaîne "raccourcie" sera la chaîne, avec toutes les lettres majuscules et les chiffres dans la chaîne d'entrée (ce qui serait le cas PPCG
lorsque la chaîne d'entrée est Programming Puzzles & Code Golf
).
La boîte" (
+---+
| |
+---+
v
) devrait parfaitement s'adapter à la chaîne raccourcie (ni plus grande ni plus petite)
De plus, la v
pièce doit être exactement 1 en bas et 1 à gauche en bas à droite +
.
Ensuite, affichez la boîte contenant la chaîne raccourcie.
Exemple
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
Règles
Vous pouvez supposer que l'entrée contient au moins un chiffre ou une lettre majuscule.
Les règles de code-golf standard s'appliquent.
^
n'ajoutent pas grand-chose par rapport au deuxième défi que j'ai lié, mais je ne lancerai pas de dupe à ce sujet, mais je laisserai le communitz décider s'il le considère comme dupe ou ne pas.99 Bottles Of Beer
, ce serait99BOB
.Réponses:
Vim, 42 coups
Remplacez
<DOWN>
par ↓,<LEFT>
par ←,<ESC>
par escet<C-V>
par CTRL+ V.Voici une animation de ce script en cours d'exécution (ancienne version qui utilise un
V
au lieu d'unv
):Explication du script:
la source
i+↓←|␛␖ky$p
parA+↓|␛␖ky0P
pour enregistrer un octet.I|<END>|␛
V 34 octets
Notez que cela fonctionnait dans une ancienne version, mais ne fonctionne pas dans la version actuelle sur l'essayer en ligne. J'ai changé
Ä
pourYP
lequel est fonctionnellement équivalent.Essayez-le en ligne!
Explication:
Supprimez tout sauf les chiffres et les majuscules.
Maintenant, le tampon ressemble à ceci:
Et notre curseur se trouve dans la première colonne de la dernière ligne.
Version non concurrente: (31 octets)
la source
Programming Puzzles & Code Golf
produit la chaîne incorrectePP&CG
dans la sortie. Le&
devrait être suppriméCode machine x86 16 bits, 72 octets
En hex:
Paramètres:
SI
= chaîne d'entrée,DI
- tampon de sortie.Génère une chaîne terminée par NULL avec des lignes délimitées par une nouvelle ligne. Utilise la chaîne d'entrée comme tampon temporaire.
la source
3c 41 cmp al,a'
ne devrait-il pas en être ainsi3c 41 cmp al,'a'
?Rétine , 43 octets
Essayez-le en ligne!
C'est le défi parfait pour démontrer Retina, le langage du golf de Martin Ender.
Cette solution est divisée en deux étapes (ce que nous appelons des étapes), les deux étapes étant une étape de remplacement.
Le premier stade:
Cela correspond aux sous-chaînes qui correspondent
[^A-Z\d]
, c'est-à-dire les caractères qui ne sont pas en majuscules et non aux chiffres, puis les remplacent par rien, ce qui signifie les supprimer.La deuxième étape:
Le
.+
correspond à l'ensemble du résultat, puis le remplace par la deuxième ligne.Sur la deuxième ligne:
$&
fait référence à l'ensemble du match$.&
se réfère à la longueur de l'ensemble du match$*
signifie prendre le nombre entier précédent, répéter le caractère suivant autant de fois. Ici, il$.&$*-
faut répéter la-
durée du match.¶
fait référence à une nouvelle ligne.la source
T`dLp`dL_
mais c'est la même longueur, malheureusement.C #,
183 177165 octetsmultiplier les caractères est terrible en C #. suggestions appréciées
merci beaucoup à aloisdg pour -18 octets
la source
| |
par|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
parstring.Concat(
return
Excel VBA,
375359358 octets:Ça marche, j'abandonne d'essayer de le raccourcir ...
Modifier: basculé vers l'instruction case à partir des instructions if, -16 octets
Edit2: Débarrassé de u et remplacé par Len (b), -1 octet
la source
Lua,
14599 octetsPas grand chose à dire, manipuler des cordes est toujours verbeux en lua :). Prend un argument de ligne de commande et une sortie via STDOUT
Merci à @LeakyNun de m'avoir sauvé 45 octets!
100 octets proposés par @LeakyNun
VIEUX 145 octets
Non golfé
la source
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
est de 100 octets%u
nous gagnons encore plus d'octets. Quoi qu'il en soit, merci :) (mettra à jour le non-golfé plus tard)2sable ,
3634333231 octetsPrésentation de 2sable :). Bien qu'il ait beaucoup en commun avec 05AB1E, celui-ci rejoint en fait automatiquement la pile plutôt que de sortir le haut de la pile. Code:
Utilise l' encodage CP-1252 .
la source
JavaScript (ES6), 99 octets
la source
Haskell, 107 octets
Cette réponse est largement basée sur la réponse de Zylviij et les commentaires de nimi . J'aurais ajouté plus de commentaires à cette réponse, mais hélas, je n'ai pas assez de représentants.
Astuces supplémentaires utilisées:
intersect
par son implémentation afin que l'importation puisse être supprimée. (Note latérale: l'implémentation est presque textuellement celle de la bibliothèque, je n'ai pas pu trouver de version plus courte.)where
clause afin que les fonctions puissent utiliser len
paramètre en interne.(#)
était assez court pour être aligné.la source
Python 3.5,
11493112 octets:Un programme complet. Fondamentalement, utilise une expression régulière pour faire correspondre toutes les occurrences de lettres et de chiffres en majuscules, puis crée la boîte de la taille exacte en fonction de la longueur de la liste des correspondances et place enfin la liste des correspondances "à l'intérieur".
Essayez-le en ligne! (Ideone)
la source
Python 3,
121124 octetsCorrection d'une erreur stupide
n'importe pas de bibliothèques comme les autres réponses python.
la source
Java 8, 149 octets
Essayez-le en ligne.
Explication:
la source
Pyke, 39 octets
Essayez-le ici!
12 octets de création de mini-chaîne, 20 octets de formatage. Joie!
la source
Pyth,
3837 octetsEssayez-le en ligne.
Notez la nouvelle ligne au début.
la source
Python 2, 113 octets
la source
47<x<58|64<x<91
:)char
type intégral - tous les caractères des chaînes Python sont eux-mêmes des chaînes et ne peuvent pas être directement comparés aux entiers. Il faudrait que ce soit47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
est un octet plus court quefilter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Jolf, 35 octets
J'ai besoin d'un moyen plus court pour supprimer tout sauf les majuscules et les chiffres ...
la source
C,
171163La fonction
f()
modifie son entrée et imprime le résultat.Programme de test
Nécessite un paramètre, la chaîne à utiliser dans le favicon:
la source
Haskell, 161
Usage
la source
replicate
,length
etf
exclusivement dans cette combinaison, vous pouvez donc les fusionner en une seule fonction:r=replicate.length.f
et l'appeler commer n '-'
. Vous pouvez économiser encore plus d'octets en utilisant un opérateur d'infixe:(#)=replicate.length.f
etn#'-'
/n#' '
.replicate.length
Est en outre>>
(avec une chaîne singleton au lieu d'un char), donc c'est:(#)=(>>).f
etn#"-"
/n#" "
, les deux sans( )
autour.( )
tourt n
etf n
."|"++
est'|':
. Dans l' ensemble:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Bash,
9974 octetsUtilisation: Exécutez la commande ci-dessus, saisissez le nom du site, appuyez sur Entrée, puis sur Ctrl+ D(envoyer «fin de fichier»).
la source
CJam, 41
Essayez-le en ligne
la source
R, 108 octets
Explication
Aller de l'intérieur (car qui n'aime pas assigner des variables globales de l'intérieur d'une expression régulière), en supposant
s
notre chaîne d'entrée:y<-gsub("[^A-Z0-9]","",s)
conserve les majuscules et les nombres, attribue la valeur résultante à y.gsub(".","-",y<-...)
remplace tous les caractères par des tirets dans ce qui précède.x<-gsub("(.*)","+\\1+\n",gsub(...))
jette un+
à chaque extrémité de la rangée de traits d'union, et une nouvelle ligne, et nous stockons cela en tant que x.Le reste est assez simple, produit dans l'ordre approprié et utilise le fait que le nombre d'espaces avant le
v
sera le même que la longueur de y.la source
Brachylog , 61 octets
Lié au référentiel le 7 juillet pour assurer la compatibilité descendante.
Non concurrent, 53 octets
Essayez-le en ligne!
la source
APL,
5249 octets(jusqu'à 49 grâce au commentaire).
la source
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(Vous ne mettez jamais entre parenthèses l'un des arguments dans une fonction d'argument inversé lorsque vous jouez au golf. Il peut toujours être dans l'ordre normal pour enregistrer un octet.)Perl, 57 octets
Code de 56 octets + 1 pour
-p
.À l'origine, j'ai essayé de faire cela uniquement en utilisant des expressions rationnelles, mais c'était beaucoup plus grand que je l'espérais, j'ai donc utilisé une répétition de chaîne à la place.
Essayez-le en ligne!
la source
MATL , 34 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 119 octets
la source
J , 52 octets
Essayez-le en ligne!
la source
Ruby, 81 octets (78 +
-p
drapeau)la source
Lisp commun (Lispworks), 159 octets octets
non golfé:
Usage:
la source