Gegeben nur eine Eingabezeichenfolge die Zeichen enthält A-Z
, a-z
und Leerzeichen, entfernen Sie alle Vorkommen der Groß- und Klein Versionen des ersten Zeichens der Zeichenkette (wenn das erste Zeichen A
entfernen Sie alle A
s und a
s, wenn das erste Zeichen (Leerzeichen) entfernen alle Räume), und drucken Sie die Ausgabe.
Beispielfälle:
Testing Testing One Two Three
->esing esing One wo hree
Programming Puzzles and Code Golf
->rogramming uzzles and Code Golf
How much wood would a woodchuck chuck if a woodchuck could chuck wood
->ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
{space}hello world
->helloworld
welcome to WATER WORLD
->elcome to ATER ORLD
Das ist Code-Golf , der kürzeste Code in Bytes gewinnt!
Anmerkungen:
- Die Eingabe besteht immer aus 2 oder mehr gültigen Zeichen.
- Die Ausgabe wird niemals eine leere Zeichenfolge sein.
Antworten:
Pyth, 7 Bytes
Probieren Sie es online aus: Demo oder Test Suite
Nett. Der neue Gabeloperator (nur 8 Tage alt) hilft hier, ein Zeichen zu sparen. Ich denke, dies ist der erste Code, der diese Funktion verwendet.
Erläuterung
quelle
Brainfuck, 219 Bytes
(Benötigt ein Band, bei dem der Zeiger entweder auf das Negativ zeigt oder in einer Schleife zum Ende zeigt, wenn dies versucht wird. Erfordert auch
,
die Rückgabe von 0 bei EOF. Nach meiner Erfahrung erfüllen die meisten Interpreter diese Anforderungen standardmäßig.)Das stellte sich tatsächlich als ziemlich einfach heraus! Es würde mich nicht wundern, wenn es golffähig ist (ich habe eine Vorstellung davon, wo es verschwendete Bytes geben könnte, aber ich bin mir nicht sicher, ob es herauskommt). Trotzdem war es keine wirkliche Herausforderung, es zum Laufen zu bringen.
In diesem Code wird alles mit einem ASCII-Wert unter 97 als Großbuchstabe behandelt. Wenn das erste Zeichen ein Leerzeichen ist, wird versucht, alle Vorkommen eines "Leerzeichens in Kleinbuchstaben" (
chr(32+32)
dh@
) aus der Zeichenfolge zu entfernen . Dies ist in Ordnung, da immer nur Buchstaben und Leerzeichen vorhanden sein werden.Mit Kommentaren:
quelle
Perl, 13 Bytes
Zählt man den Shebang als einen, wird die Eingabe von stdin übernommen.
Beispielnutzung
quelle
substr
aber Sie haben sich natürlich einen viel besseren Weg ausgedacht!perl -p script.pl
. Befehlszeilenoptionen werden normalerweise als jeweils ein Byte gezählt, zumindest auf dieser Site.CJam, 8 Bytes
Versuchen Sie es online in dem CJam Dolmetscher .
Wie es funktioniert
quelle
~
aber.)Pyth, 8 Bytes
Probieren Sie es online aus
Verwendet Pyths Version von Python
str.title
, um eine Zeichenfolge des ersten Buchstabens zweimal in das Formular zu konvertieren"<Upper><Lower>"
. Anschließend wird jedes Element aus der Eingabe in dieser Zeichenfolge entfernt. Leerzeichen funktionieren einwandfrei, da sie davon nicht betroffen sindstr.title
.quelle
MATLAB, 28 Bytes
quelle
JavaScript (ES6),
3836 BytesDies hängt nicht von dem
flags
Parameter ab, der Mozilla-spezifisch ist.CoffeeScript,
3937 BytesDiesmal ist es in JS kürzer als in CoffeeScript!
quelle
new
ist das optional,RegExp(x[0],'gi')
ist also kürzer.PHP, 41 Bytes
Nimmt ein Befehlszeilenargument an . Kurze offene Tags müssen für PHP <5.4 aktiviert sein.
quelle
$argv[1]
:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Perl, 27 Bytes
Dies ist ein vollständiges Programm, obwohl es nur auf 2 regulären Ausdrücken basiert, die wahrscheinlich in ein Retina-Programm kopiert werden könnten, um Bytes bei der E / A zu sparen.
Bearbeiten: Sieht so aus, als wäre dies mit jemandem, der die
-p
Option verwendet, bereits besiegt worden . Oh, und$&
stattdessen verwenden$1
.quelle
#!perl -p
sind immer noch zwei Bytes kürzer als$_=<>;print
.-p
Option macht. Es gibt eigentlich keine Änderungen, die ich an meiner Antwort vornehmen könnte, ohne sie nur mit Ihrer identisch zu machen.Minkolang 0,9 ,
2333 BytesAuf keinen Fall wird das gewinnen, aber es macht Spaß!
Probieren Sie es hier aus.
Erläuterung
(Dies kann in einigen Randfällen fehlschlagen, z. B. wenn das erste Zeichen ein Symbol ist.)
quelle
TABG ,
1514 BytesText bearbeiten? Verwenden Sie im Zweifelsfall den Texteditor und den Korrektor!
Nach vielem Ausprobieren (meistens Fehler) denke ich, dass dies das kürzeste generische TECO-Programm ist, das die Arbeit erledigen wird.
Oder in lesbarer Form
$
repräsentiert die Escape-Taste und^E
repräsentiert die SequenzCTRL
+E
. Abhängig von der verwendeten TECO-Version werden diese ASCII-Ersetzungen möglicherweise erkannt oder nicht.Laut Handbuch akzeptieren einige Dialekte von TECO diese 13-Byte-Version (mit einem Such- und Löschbefehl anstelle von separaten Befehlen "Suchen" und "Löschen"):
quelle
Pip, 8 Bytes
Nimmt die Zeichenfolge als Befehlszeilenargument (muss in Anführungszeichen gesetzt werden, wenn sie Leerzeichen enthält). Erläuterung:
Diese Lösung hat den zusätzlichen Bonus auf Saiten Arbeits enthält alle druckbaren ASCII - Zeichen. (Der
X
Operator-Backslash maskiert alles, was nicht alphanumerisch ist.)quelle
Python, 66 Zeichen
quelle
Julia, 34 Bytes
Dadurch wird eine unbenannte Funktion erstellt, die eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt. Es erstellt aus dem ersten Zeichen in der Eingabe einen regulären Ausdruck, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, und ersetzt alle Vorkommen durch eine leere Zeichenfolge.
quelle
Mathematica, 47 Bytes
quelle
R, 43 Bytes
Dies ist ein vollständiges Programm, das eine Zeile aus STDIN liest und das geänderte Ergebnis in STDOUT schreibt.
Ungolfed:
quelle
Ruby, 25 Bytes
Anonyme Funktion:
Volles Programm, 29 Bytes:
quelle
Python, 61 Bytes (viel zu viele)
Ich stelle mir vor, es gibt einen besseren Weg, dies zu tun, aber ich kann ihn scheinbar nicht finden. Irgendwelche Ideen zum Entfernen der
"".join(...)
?quelle
x[0]+x[0].swapcase()
.(x[0]*2).title()
.lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')
- 60 BytesOuroboros , 61 Bytes
Hey, es ist kürzer als C ++! Ha.
Auf Ouroboros repräsentiert jede Programmzeile eine Schlange mit dem Schwanz im Maul. Der Kontrollfluss wird durch Essen oder Aufstoßen von Schwanzabschnitten mit einem gemeinsamen Stapel zur Synchronisation zwischen Schlangen erreicht.
Schlange 1
i.
Liest ein Zeichen aus der Eingabe und dupliziert es..91<\64>*32*
drückt,32
wenn das Zeichen ein Großbuchstabe war,0
ansonsten.+
Wenn Sie diese Option auf das Zeichen anwenden, werden Großbuchstaben in Kleinbuchstaben umgewandelt, Kleinbuchstaben und Leerzeichen bleiben unverändert. All dies hat auf dem Stapel von Schlange 1 stattgefunden, daher verschieben wir den Wert nun auf den gemeinsamen Stapel (m
), damit Schlange 2 ihn verarbeitet. Endlich,1(
isst der letzte Charakter von Schlange 1's Schwanz. Da sich dort der Befehlszeiger befindet, stirbt die Schlange.Schlange 2
)
hat beim ersten mal keine wirkung durch.L!34*
drückt,34
wenn der gemeinsam genutzte Stapel leer ist,0
ansonsten. Wir.
dupfen und(
essen dann so viele Charaktere.(
gerade ausgeführten gesetzt. Aus diesem Grund)
kehrt die Steuerung zum Zeilenanfang zurück, wo die Zeichen, die wir gerade gegessen haben (nachdem wir zuvor eine zusätzliche Kopie von gepusht haben34
), wieder aufflammen und den Stapellängentest wiederholen.0
und die Ausführung wird fortgesetzt:Si
wechselt zum gemeinsamen Stapel und gibt ein anderes Zeichen ein..1+!24*
drückt,24
wenn das Zeichen -1 / EOF war,0
sonst. Schluckt auf EOF(
24 Zeichen - einschließlich der IP - und die Schlange stirbt. Andernfalls wird die Ausführung fortgesetzt.Y
Zerrt eine Kopie des oberen Teils des gemeinsam genutzten Stapels (des gerade gelesenen Zeichens), um den eigenen Stapel von 2 für die spätere Verwendung zu sichern. Dann.@@.@=@.@32-=\@+2*
berechnet , ob das neue Zeichen auf das erste Zeichen oder gleich auf das ersten Zeichen minus 32, Schieben ,2
wenn so und0
wenn nicht. Wir.
duplizieren und(
essen so viele Zeichen:(
die 2 Zeichen, die wir gerade gegessen haben, wieder aufflammen und die Ausführung mit dem nächsten Zeichen fortgesetzt wird.y
den Charakter vom Stapel von Schlange 2 zurück,o
geben ihn aus und wiederholen die Schleife.Sehen Sie es in Aktion
Code-Snippet anzeigen
quelle
C 60 Bytes
n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}
Bearbeiten: Ein Fehler wurde behoben, der dazu führte, dass am Anfang ein Null-Byte gedruckt wurde
quelle
Python 2, 43
Dies basiert in gewisser Weise auf meiner Pyth-Antwort, hat aber auch mit einigen Kommentaren von ThomasKwa und xnor von hier zu tun . Meistens Posten, weil ich diese Antwort haben wollte.
quelle
Vim, 30 Tastenanschläge
Es tut mir leid, aber ich sehe keine Antwort von Vim D:
Erläuterung:
If<Right>xh@x.<Esc>
Schreiben Sie ein (rekursives) Makro um das erste Zeichen.
Nach links bewegen (
h
) ist erforderlich, um links vom nächsten ungelesenen Zeichen zu bleiben.Das Hinzufügen eines beliebigen Zeichens (
.
) am Ende ist erforderlich, falls das zweite Zeichen entfernt werden muss"xy0
Kopieren Sie das Makro in das Registerx
7|
Gehe zum 7. Zeichen@x
Führen Sie den Makro ausx
2|~
Schalten Sie den Fall des ersten Zeichens (tatsächlich an der 2. Position)0"xd7|
Schneiden Sie das Makro im Register ausx
@x
Führen Sie den Makro ausx
0x
Entfernen Sie den Platzhalter.
quelle
:D
Ich stimme immer vim zu!Haskell, 52 Bytes
quelle
r(h:s)=[c|c<-s,t c/=t h]
.TI-BASIC, 164 Bytes
Für Grafikrechner der Serie TI-83 + / 84 +.
TI-BASIC ist eindeutig das falsche Werkzeug für den Job.
Ich bin nicht zu 100% sicher, aber ich habe über sechs Stunden damit verbracht, und es scheint die kürzestmögliche Lösung zu sein.
Um dies mit Eingaben ohne Großbuchstaben zu testen (oder in Ihren Taschenrechner einzugeben), erstellen Sie ein anderes Programm mit dem Inhalt
AsmPrgmFDCB24DEC9
und führen Sie es ausAsm([whatever you named it]
, um den Kleinbuchstabenmodus zu aktivieren.quelle
Lua,
9378 Bytesquelle
Common Lisp, 77
Verfluche diese langen Funktionsnamen (und Klammern (aber ich liebe sie trotzdem (: 3))).
quelle
C,
6561 BytesKompiliert mit Warnungen. Liest einen String aus
argv[1]
. Online-Beispielquelle
main(int c,char**v)
nachmain(c,v)char**v;
und(**v-c)%32
nach kürzen**v-c&31
.C ++,
1009998 BytesNur noch ein Byte unter 100 erhalten
getchar()
Rückkehr-1
wenn das Ende des Streams gelesen wird. Deshalb~
befindet sich das imfor
Zyklus. (~-1 == 0
)Ungolfed
quelle
&&putchar(c)
statt verwenden?putchar(c):0
?f-c&31
wie in der C antworten?AppleScript,
209201 BytesMein einziger Trost ist, dass ich Brainfuck besiegt habe.
Wie das funktioniert, ist, dass ich Eingaben durchführe
a
, die Länge vona
und das Markieren alsn
, und eine Ausgabevariable setzeo
. Für jedes Zeichen, das ich finde und das nicht das erste Zeichen von a (a's character 1
) enthält, verkette ich es mito
. Die letzte Zeile wird gedruckto
.Hinweis: Dies unterstützt automatisch alle Unicode. c:
quelle
My only consolation is that I beat Brainfuck.
sieht so aus, als würde ich besser Golf spielen;)Retina , 16 Bytes
Speichern Sie den Code mit einem nachfolgenden Zeilenumbruch und führen Sie ihn mit dem
-s
Flag aus.Wie es funktioniert: Der nachfolgende Zeilenvorschub macht dies zu einer Ersetzungsphase, sodass alle Übereinstimmungen mit dem angegebenen regulären Ausdruck durch eine leere Zeichenfolge ersetzt werden. Der
i
Modus "Groß- und Kleinschreibung wird nicht berücksichtigt" aktiviert, wodurch auch die Groß- und Kleinschreibung nicht berücksichtigt wird. Schließlich vergleicht und erfasst der reguläre Ausdruck einfach ein einzelnes Zeichen und prüft dann anhand eines Rückverweises, ob das erste Zeichen in der Zeichenfolge dasselbe ist (bis auf Groß- / Kleinschreibung).quelle