Erkennen Sie das PPCG-Logo? es sieht so aus, wenn man eine ascii-kunst davon macht.
+---+
|PCG|
+---+
v
In diesem Code Golf erstellen Sie einen Code, der Logos für andere Sites erstellt, ähnlich dem PPCG-Logo.
Was du machen solltest
Die "verkürzte" Zeichenfolge ist die Zeichenfolge mit allen Großbuchstaben und Zahlen in der Eingabezeichenfolge. (Dies wäre, PPCG
wenn die Eingabezeichenfolge ist Programming Puzzles & Code Golf
)
Die Kiste" (
+---+
| |
+---+
v
) sollte perfekt zur verkürzten Saite passen (nicht größer oder kleiner)
Auch das v
Teil sollte genau 1 nach unten und 1 nach links nach rechts nach unten sein +
.
Geben Sie dann das Feld aus, in dem sich die verkürzte Zeichenfolge befindet.
Beispiel
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
Regeln
Sie können davon ausgehen, dass die Eingabe mindestens eine Ziffer oder einen Großbuchstaben enthält.
Es gelten die Standardregeln für Code-Golf .
^
Vergleich zu der zweiten Herausforderung, die ich verknüpft habe, nicht viel bringt, aber ich werde darauf keinen blöden Hammer werfen, sondern die Kommunitz entscheiden lassen, ob sie es für einen blöden oder einen blöden halten nicht.99 Bottles Of Beer
so wäre, würde es so sein99BOB
.Antworten:
Vim, 42 Schläge
Ersetzen Sie
<DOWN>
mit ↓,<LEFT>
mit ←,<ESC>
mit escund<C-V>
mit CTRL+ V.Hier ist eine Animation dieses Skripts (alte Version, die a
V
anstelle von a verwendetv
):Erklärung des Skripts:
quelle
i+↓←|␛␖ky$p
mitA+↓|␛␖ky0P
einem Byte zu speichern.I|<END>|␛
V 34 Bytes
Beachten Sie, dass dies in einer älteren Version funktioniert hat, in der aktuellen Version jedoch nicht, wenn Sie es online ausprobieren. Ich habe geändert
Ä
,YP
was funktional äquivalent ist.Probieren Sie es online!
Erläuterung:
Entfernen Sie alles außer Ziffern und Großbuchstaben.
Der Puffer sieht nun so aus:
Und unser Cursor befindet sich in der ersten Spalte der letzten Zeile.
Nicht konkurrierende Version: (31 Bytes)
quelle
Programming Puzzles & Code Golf
die falsche ZeichenfolgePP&CG
in der Ausgabe erzeugt. Das&
sollte entfernt werden16-Bit-x86-Maschinencode, 72 Byte
In hex:
Parameter:
SI
= Eingabezeichenfolge,DI
- Ausgabepuffer.Gibt eine NULL-terminierte Zeichenfolge mit Zeilen aus, die durch Zeilenvorschub getrennt sind. Verwendet die Eingabezeichenfolge als temporären Puffer.
quelle
3c 41 cmp al,a'
sollte es nicht sein3c 41 cmp al,'a'
?Retina , 43 Bytes
Probieren Sie es online!
Dies ist die perfekte Herausforderung, um Retina, die Golfsprache von Martin Ender, zu demonstrieren.
Diese Lösung ist in zwei Schritte (sogenannte Stufen) unterteilt, wobei beide Stufen eine Ersatzstufe sind.
Die erste Stufe:
Dies entspricht den übereinstimmenden Teilzeichenfolgen
[^A-Z\d]
, dh den Zeichen, die keine Großbuchstaben und keine Ziffern sind, und ersetzt sie dann durch nichts, was bedeutet, dass sie gelöscht werden.Die zweite Stufe:
Das
.+
stimmt mit dem gesamten Ergebnis überein und ersetzt es dann durch die zweite Zeile.In der zweiten Zeile:
$&
bezieht sich auf das ganze Spiel$.&
bezieht sich auf die Länge des gesamten Spiels$*
Bedeutet, dass Sie die vorherige Ganzzahl nehmen und das nächste Zeichen so oft wiederholen müssen. Hier$.&$*-
bedeutet zu wiederholen,-
wie lange das Spiel ist.¶
verweist auf eine neue Zeile.quelle
T`dLp`dL_
leider die gleiche Länge.C #,
183 177165 BytesZeichen zu multiplizieren ist in C # furchtbar. Vorschläge geschätzt
vielen dank an aloisdg für -18 bytes
quelle
| |
mit|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
mitstring.Concat(
return
Excel VBA,
375359358 Bytes:Es funktioniert, ich gebe es auf, es kürzer zu machen ...
Bearbeiten: Von if -Anweisungen auf case -Anweisung umgestellt, -16 Byte
Edit2: Wurde u los und durch Len (b), -1 Byte ersetzt
quelle
Lua,
14599 BytesNicht viel zu sagen, das Manipulieren von Strings ist in lua immer wortreich :). Übernimmt ein Befehlszeilenargument und gibt es über STDOUT aus
Vielen Dank an @LeakyNun für die Rettung von 45 Bytes!
100 Bytes von @LeakyNun vorgeschlagen
ALTE 145 Bytes
Ungolfed
quelle
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
ist 100 Bytes%u
gewinnen wir noch ein paar Bytes. Wie auch immer, danke :) (wird die ungolfed später aktualisieren)2sable ,
3634333231 BytesPresenting 2sable :). Obwohl es viele Gemeinsamkeiten mit 05AB1E hat, wird dieser automatisch dem Stapel hinzugefügt, anstatt den oberen Teil des Stapels auszugeben. Code:
Verwendet die CP-1252- Codierung.
quelle
JavaScript (ES6), 99 Byte
quelle
Haskell, 107 Bytes
Diese Antwort basiert stark auf der Antwort von Zylviij und den Kommentaren von nimi . Ich hätte dieser Antwort weitere Kommentare hinzugefügt, aber leider habe ich nicht genug Repräsentanten.
Zusätzliche Tricks:
intersect
durch seine Implementierung ersetzt, sodass der Import abgebrochen werden kann. (Randnotiz: Die Implementierung ist fast wörtlich wie in der Bibliothek, ich konnte keine kürzere Version finden.)where
Klausel verschoben , damit Funktionen denn
Parameter intern verwenden können.(#)
war kurz genug, um inliniert zu werden.quelle
Python 3.5,
11493112 Bytes:Ein volles Programm. Verwendet im Allgemeinen einen regulären Ausdruck, um alle Vorkommen von Großbuchstaben und Zahlen abzugleichen, erstellt dann das Feld mit der exakten Größe basierend auf der Länge der Übereinstimmungsliste und fügt schließlich die verknüpfte Übereinstimmungsliste "hinein".
Probieren Sie es online! (Ideone)
quelle
Python 3,
121 -124 BytesFehler behoben
importiert keine Bibliotheken wie andere Python-Antworten.
quelle
Java 8, 149 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
Pyke, 39 Bytes
Probieren Sie es hier aus!
12 Bytes für die Erstellung von Mini-Strings, 20 Bytes für die Formatierung. Freude!
quelle
Pyth,
3837 BytesProbieren Sie es online aus.
Beachten Sie den Zeilenumbruch am Anfang.
quelle
Python 2, 113 Bytes
quelle
47<x<58|64<x<91
:)char
Typ. Alle Zeichen in Python-Strings sind selbst Strings und können nicht direkt mit ganzen Zahlen verglichen werden. Es müsste sein47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
ist ein Byte kürzer alsfilter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Jolf, 35 Bytes
Ich brauche einen kürzeren Weg, um alle bis auf Groß- und Kleinschreibung zu entfernen ...
quelle
C
171163Die Funktion
f()
ändert ihre Eingabe und gibt das Ergebnis aus.Testprogramm
Erfordert einen Parameter, den String, der im Favicon verwendet werden soll:
quelle
Haskell, 161
Verwendung
quelle
replicate
,length
undf
ausschließlich in dieser Kombination, so dass Sie sie in einer Funktion zusammenführen können:r=replicate.length.f
und nennen Sie es wier n '-'
. Sie können noch mehr Bytes speichern, indem Sie einen Infix-Operator verwenden:(#)=replicate.length.f
undn#'-'
/n#' '
. Zusätzlichreplicate.length
ist>>
(mit einer Singleton-Zeichenfolge anstelle eines Zeichens), also ist es:(#)=(>>).f
undn#"-"
/n#" "
, beide ohne( )
um ihn herum.( )
umt n
undf n
."|"++
ist'|':
. Alles in allem:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Bash,
9974 BytesVerwendung: Führen Sie den obigen Befehl aus, geben Sie den Site-Namen ein, drücken Sie die Eingabetaste und dann Ctrl+ D(senden Sie 'Dateiende').
quelle
CJam, 41
Probieren Sie es online aus
quelle
R, 108 Bytes
Erläuterung
Von innen nach außen gehen (denn wer es nicht mag, globale Variablen innerhalb eines regulären Ausdrucks zuzuweisen)
s
:y<-gsub("[^A-Z0-9]","",s)
behält Groß- und Kleinschreibung bei und weist y den resultierenden Wert zu.gsub(".","-",y<-...)
Ersetzt alle Zeichen durch Bindestriche.x<-gsub("(.*)","+\\1+\n",gsub(...))
chucks a+
an jedem Ende der Reihe von Bindestrichen und eine neue Zeile, und wir speichern das als x.Der Rest ist ziemlich unkompliziert, wird in der richtigen Reihenfolge ausgegeben und verwendet die Tatsache, dass die Anzahl der Leerzeichen vor
v
dem gleich der Länge von y ist.quelle
Brachylog , 61 Bytes
Wird am 7. Juli mit dem Repository verknüpft, um die Abwärtskompatibilität sicherzustellen.
Nicht konkurrierend, 53 Bytes
Probieren Sie es online!
quelle
APL,
5249 Bytes(bis zu 49 dank des Kommentars).
quelle
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(Sie setzen beim Golfen niemals einen der Argumente in Klammern, wenn Sie eine umgekehrte Argumentationsfunktion verwenden. Das Speichern eines Bytes kann immer in der normalen Reihenfolge erfolgen.)Perl, 57 Bytes
56 Byte Code + 1 für
-p
.Ich habe ursprünglich versucht, dies nur mit regulären Ausdrücken zu machen, aber es war viel größer als ich gehofft hatte, also habe ich stattdessen einige Zeichenfolgenwiederholungen verwendet.
Probieren Sie es online!
quelle
MATL , 34 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 119 Byte
quelle
J , 52 Bytes
Probieren Sie es online!
quelle
Ruby, 81 Bytes (78 +
-p
Flag)quelle
Common Lisp (Lispworks), 159 Bytes Bytes
ungolfed:
Verwendung:
quelle