Basierend auf dieser Frage von Code Review
Geben Sie bei einer nicht leeren Zeichenfolge aus druckbaren ASCII-Zeichen das zweite nicht wiederholende Zeichen aus. Zum Beispiel für Eingabe DEFD
, Ausgabe F
.
Eingang
- Eine einzelne Zeichenfolge in einem beliebigen geeigneten Format .
Ausgabe
- Das zweite Zeichen, das beim Lesen von links nach rechts in einem geeigneten Format nicht wiederholt wird.
- Das Ausgabezeichen unterscheidet nicht zwischen Groß- und Kleinschreibung.
- Wenn kein solches Zeichen vorhanden ist (z. B. wenn sich alle Zeichen wiederholen), geben Sie eine leere Zeichenfolge aus.
Regeln
- Der Algorithmus sollte Groß- und Kleinschreibung ignorieren. Das heißt,
D
undd
zählen als das gleiche Zeichen. - Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Die Eingabezeichenfolge ist garantiert nicht leer (dh mindestens ein Zeichen lang).
- Die Eingabezeichenfolge ist ASCII. Jedes gültige Zeichen kann wiederholt werden, nicht nur alphanumerisch (einschließlich Leerzeichen).
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
Die Eingabe erfolgt in der ersten Zeile, die Ausgabe in der zweiten Zeile.
DEFD
F
FEED
D
This is an example input sentence.
x
...,,,..,,!@
@
ABCDefgHijklMNOPqrsTuVWxyz
B
AAAAAABBBBB
Thisxthis
This this.
.
Antworten:
MATL , 11 Bytes
Dies wird mit einem Fehler beendet (standardmäßig zulässig), wenn kein zweites nicht wiederholtes Zeichen vorhanden ist.
Probieren Sie es online!
Erläuterung
quelle
Retina , 25 Bytes
Probieren Sie es online! (In der ersten Zeile kann der Code für eine Testsuite mit mehreren Eingaben ausgeführt werden.)
Erläuterung
Dies ist nur ein einziger regulärer Ausdruck, der reguläre Ausdruck ist:
Vergleichen Sie ein Zeichen und stellen Sie sicher, dass es an keiner anderen Stelle in der Eingabe angezeigt wird. Der Rest ist Konfiguration:
i
Aktiviert die Groß- und Kleinschreibung.!
weist Retina an, die Übereinstimmungen zu drucken, anstatt sie zu zählen.2=
weist Retina an, nur das zweite Match zu drucken, im Gegensatz zu allen.quelle
2=
.05AB1E,
1512 BytesErklärt
Probieren Sie es online aus
3 Bytes gespart dank @Adnan
quelle
l©v®y¢iy}}1@
:).Python 2,
5958 BytesGibt eine Liste mit einem einzelnen Zeichen oder eine leere Liste zurück, wenn keine Ausgabe erfolgt. (Dumme Groß- / Kleinschreibung ...)
Probieren Sie es online aus
quelle
Jelly , 11 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Batch, 171 Bytes
Alternative Formulierung, auch 171 Bytes:
quelle
Pyth,
1615 Bytes1 Byte danke an @ mbomb007
Testsuite.
quelle
[1:2]
Trick.t<…2
anstelle von speichern:…1 2
. Sie können ein anderes Byte speichern , indem die Bewegungs=rz1
zu seinem ersten Einsatz, wenn Sie auch ändern ,1
umZ
(für Klein statt Groß Ausgabe):t<fq1/zT=rzZ2
.Eigentlich 19 Bytes
Probieren Sie es online!
Erläuterung:
quelle
C #,
129128 Bytesfunktioniert gut. Ich wünschte, ich müsste nicht alles klein schreiben
quelle
C # Lambda mit Linq, 63 Bytes
quelle
.Skip(1).First()
durch.ElementAt(1)
.ToList()[1]
C #, 141 Bytes
Ohne Pause (kleinste), 135 Bytes
Mit für (;;) 150 Bytes
Ungolfed mit Kommentaren
12 Bytes, die von TuukkaX gespeichert wurden (Zählung in c ändern).
3 Bytes, die von TuukkaX gespeichert wurden (String in var ändern).
4 Bytes, die von TuukkaX in "With for (;;)" gespeichert wurden (geändert, während (true) in for (;;)).
2 Bytes, die von TuukkaX gespeichert wurden (geändert von c ++; if (c == 2) in if (++ c == 2)).
Von Bryce Wagner gespeicherte 14 Byte (x.ToCharArray () in x geändert).
quelle
var
anstelle von verwendenstring
und etwas wiec
anstelle von habencount
.x86-Maschinencode, 43 Byte
In hex:
Function nimmt einen Zeiger auf die Eingabezeichenfolge in (E) SI und eine Ganzzahl in (E) DX und gibt das (E) DX-te nicht wiederholende Zeichen oder Null zurück, wenn es kein solches Zeichen gibt. Als Nebeneffekt konvertiert es die Zeichenfolge in Großbuchstaben.
Demontage:
quelle
APL, 32 Bytes
Probieren Sie es aus || Alle Testfälle
Erläuterung:
Ich wollte es gerade mit 16 Bytes posten, aber als ich merkte, dass es zwischen Groß- und Kleinschreibung nicht unterschieden werden musste ...
quelle
(⎕UCS ⍵)+32×⍵∊⎕A
→819⌶⍵
⌶
allgemein und für Service 819 ("819" ≈ "BIg"). Probieren Sie es online!Retina,
4336 BytesProbieren Sie es online!
quelle
Mathematica, 49 Bytes
Anonyme Funktion. Nimmt eine Liste von Zeichen als Eingabe. Ignorieren Sie alle generierten Fehler.
quelle
JavaScript (Firefox 48 oder früher), 60 Byte
Gibt zurück,
undefined
wenn es nur null oder ein sich nicht wiederholendes Zeichen gibt. Löscht alle Vorkommen von Zeichen, die mehr als einmal in der Zeichenfolge vorkommen. Stützt sich auf eine nicht standardmäßige Firefox-Erweiterung, die in Firefox 49 entfernt wurde.11991-Byte-ES6-Version:Sucht rekursiv nach allen Zeichen, die in der Zeichenfolge mindestens zweimal vorkommen. Wenn das Zeichen genau zweimal vorkommt, werden beide Vorkommen gelöscht, andernfalls wird nur das erste Vorkommen gelöscht (die anderen Vorkommen werden später gelöscht). Dies ermöglicht es den Ereignissen, einen Differenzfall zu haben.
quelle
m[1]
mitnew RegExp(`${m[1]}`,"gi")
J, 25 Bytes
Verwendung
Erläuterung
quelle
Bash, 58 Bytes
Vorsicht: Dadurch wird eine temporäre Datei mit dem Namen t erstellt . Wenn es bereits existiert, wird es überschrieben.
quelle
C 174 Bytes
Dies ist nicht die kürzeste, aber sehr effiziente Implementierung. Im Wesentlichen wird eine doppelt verknüpfte Liste verwendet, um den geordneten Satz von Kandidatenzeichen zu verwalten und die Eingabezeichenfolge nur einmal zu scannen. Gibt den Zeichencode oder Null zurück, wenn keine gefunden wurde.
Ein bisschen ungolfed version:
quelle
C # 143 Bytes
quelle
TSQL, 128 Bytes
Golf gespielt:
Ungolfed:
Geige
quelle
Ruby, 53 Bytes
Eingang ist STDIN, Ausgang ist STDOUT. In Ruby werden nicht indexierte Positionen in einem Array oder einer Zeichenfolge zurückgegeben
nil
, die nicht gedruckt werden.String#count
ist eine seltsame Funktion in Ruby, da sie nicht die Anzahl der Vorkommen für die übergebene Zeichenfolge zählt, sondern die Anzahl der Vorkommen für jeden Buchstaben in dieser Zeichenfolge. Es ist normalerweise ärgerlich, aber diesmal können wir es zu unserem Vorteil nutzen.String#swapcase
vertauscht Groß- und Kleinbuchstaben.Alte Version, die gegen Sonderzeichen wie
.
- 46 Bytes nicht sicher warquelle
Java 8,
172157 Bytes-15 Bytes. Mist, ich war damals schlecht im Golfen. ;)
Erläuterung:
Probieren Sie es hier aus.
quelle
R , 79 Bytes
Probieren Sie es online!
Ich habe definitiv das Gefühl, dass hier draußen etwas gespielt werden kann. Aber ich habe diese Herausforderung wirklich genossen.
Diese Antwort teilt die Zeichenfolge in einen Vektor von Zeichen auf, ändert sie alle in Kleinbuchstaben und tabelliert sie (zählt sie). Einmal vorkommende Zeichen werden ausgewählt und mit Zeichen innerhalb des oben genannten Vektors verglichen. Dann wird der zweite Wert, der wahr ist, als Ausgabe zurückgegeben. Eine leere Zeichenfolge oder eine Zeichenfolge ohne sich wiederholende Zeichen gibt NA aus.
quelle
Perl 6 ,
3832 Bytes-6 Byte dank nwellnhof durch Umstellung
.comb
auf Regex ohne Berücksichtigung der Groß- und KleinschreibungProbieren Sie es online!
quelle
m:g:i/$^a/
für 32 Bytes .K (oK) / K4 , 11 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
quelle
Gelee, 15 Bytes
Probieren Sie es online!
Überprüfen Sie alle Testfälle. (Leicht modifiziert, um allen Testfällen gerecht zu werden)
quelle
Perl, 75 Bytes
quelle
Javascript (mit externer Bibliothek) (107 Bytes)
Crushed dies mit einer Bibliothek, die ich geschrieben habe. Ich bin mir nicht sicher, ob ich die Deklaration der Variablen "s" zählen muss, bei der es sich um die fragliche Zeichenfolge handelt.
Dies behandelt eine leere Zeichenfolge-Eingabe, eine Eingabe mit nur einem sich nicht wiederholenden Zeichen und eine Eingabe mit 2+ sich nicht wiederholenden Zeichen
quelle
s=> ...
)Clojure, 109 Bytes
Ich hoffe, es gibt einen prägnanteren Weg.
quelle