Bei einer früheren Herausforderung habe ich Codegolfer gebeten, Zeichenfolgen zu erstellen, die jedes Zeichen in einer Zeichenfolge kopieren. Zum Beispiel:
TThhiiss iiss ddoouubbllee ssppeeaakk!!
Diese Herausforderung besteht einfach darin, festzustellen, ob ein Text die Definition einer Doppelsprechzeichenfolge erfüllt.
- Es gibt eine gerade Anzahl von Zeichen.
- Bei der Aufteilung in Paare besteht jedes Paar aus zwei gleichen Zeichen.
Die Herausforderung
- Es ist Codegolf, machen Sie es in wenigen Bytes.
- Verwenden Sie eine beliebige Sprache.
- Bitte fügen Sie einen Link zu einem Online-Dolmetscher bei.
- Der Code akzeptiert Text.
- Der Einfachheit halber besteht die Eingabe nur aus druckbaren ASCII-Zeichen
- Es wird eine Anzeige zurückgegeben, ob der Eingang Doppelsprache ist oder nicht. Es könnte sein:
- Ein Boolescher
- Zeichenfolgen ('true', 'false', 'yes', 'no' usw.)
- Ganzzahlen 0 oder 1
Testfälle:
- aba - falsch
- abba - falsch
- aabb - wahr
- aaabb - falsch
- tthhiiss - wahr
- ttthhhiiisss - falsch
code-golf
string
decision-problem
AJFaraday
quelle
quelle
abba
sollte falsch seinaabbbb
0
sollte falsch sein.Antworten:
Python 3 , 24 Bytes
Probieren Sie es online!
quelle
Brainfuck , 20 Bytes
Dank Jo King 1 Byte gespeichert.
Probieren Sie es online!
Lesbare Ausgabe!
Nimmt die Eingabe von zwei Zeichen gleichzeitig vor und entfernt sich von der 1 auf dem Band, wenn ein Paar nicht übereinstimmt. EOF wird als 0 behandelt und somit automatisch behandelt.
Die Ausgabe ist ein Null-Byte, wenn der String nicht doppelt gesprochen wird, und 0x01, wenn dies der Fall ist. Die lesbare Version gibt diese als Zeichen zum Preis von 14 Byte aus.
quelle
MATL , 4 Bytes
Die Eingabe ist eine Zeichenfolge, die von einzelnen qoutes eingeschlossen wird. Die Ausgabe ist
0
für Doppelsprache,1
ansonsten.Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
'TThhiiss iiss ddoouubbllee ssppeeaakk!!'
als Beispiel.quelle
05AB1E ,
652 BytesEingabe als Liste von Zeichen.
-3 Bytes, indem Sie @ Shaggy's Japt-Antwort portieren , also stellen Sie sicher, dass Sie ihn unterstützen!
Probieren Sie es online aus oder überprüfen Sie ein paar weitere Testfälle .
Erläuterung:
quelle
Japt , 4 Bytes
Versuch es
Alternative
Versuch es
quelle
Netzhaut , 9 Bytes
Probieren Sie es online aus.
Erläuterung:
Entferne alle Paare der gleichen Charaktere:
Überprüfen Sie, ob keine Zeichen mehr vorhanden sind:
quelle
^$
als letzte Stufe verwenden.false
als wahr undtrue
als falsch auszugeben (aber wenn es ein Byte speichert und es erlaubt ist, werde ich es immer noch verwenden). ;) Da dies jedoch eine Lösung mit gleichen Bytes ist, die die erwarteten Ergebnisse ausgibt, ist dies besser.Gelee , 3 Bytes
Probieren Sie es online!
quelle
¹©s2L€=2Ạa®s2E€Ạ
...ḢƝs2E€Ạ
... aber ich konnte nicht bekommen, was ich wollte, und dann sah ichŒœ
lachStax , 5 Bytes
Führen Sie es aus und debuggen Sie es
Verfahren:
quelle
PHP ,
5856 BytesProbieren Sie es online!
Als rekursive Funktion.
PHP ,
615652 BytesProbieren Sie es online!
Oder eigenständiges Programm. Eingabezeichenfolge über
STDIN
, Ausgabe isttruthy
(1
), wenn doppelt gesprochen wird, undfalsey
(0
), wenn nicht doppelt gesprochen wird.-4 Bytes Danke an @ Night2 !
quelle
x86-Maschinencode,
97 BytesEingabezeichenfolge in der
SI
Eingangszeichenfolgenlänge inCX
. AusgabeZF
wenn doppelt gesprochen wird.Oder 14 Bytes als vollständige ausführbare PC-DOS-Datei:
Die Eingabe erfolgt
STDIN
entweder über Pipe oder interaktiv. Gibt die "de-doubled" -Eingabe wieder, bis ein nicht verdoppeltes Zeichen erkannt wird. An diesem Punkt wird die Eingabe beendet (möglicherweise gibt es ein wenig Regeln für die Biege-E / A, dies ist jedoch nur eine Bonusantwort).Erstellen und testen Sie ISDBL2.COM mit
xxd -r
:Ursprüngliche 24 Byte vollständige ausführbare PC-DOS-Datei:
Eingabe von der Kommandozeile, Ausgabe auf dem Bildschirm
'Y'
,'N'
wenn nicht, wenn doppelt .Erstellen und testen Sie ISDBL.COM mit
xxd -r
:Credits:
quelle
LOOPE
anstelle vonJNZ
/LOOP
2 Bytes zu speichern.Lua ,
676663593332 Bytes-25 Bytes dank Giuseppe
-1 Bytes dank val
Probieren Sie es online!
Entfernt jedes doppelte Zeichen und prüft, ob das Ergebnis leer ist.
quelle
i:gsub("(.)%1","")
mal nachschauen obi==""
?"(.)%1"
Kollisionen von sich aus eingeschlossen waren, aber es kam mir nicht in den Sinn, dass es ausreichen würde, sie einmal für alle Erfassungen auszutauschen. Sollte ich Ihre Lösung implementieren oder sollten Sie Ihre eigene Antwort schreiben? Und danke!arg[1]
kann durch ersetzt werden(...)
, um ein Byte zu sparen.Perl 5 , 15 Bytes
Probieren Sie es online!
Ausgänge 1 für doppeltes Sprechen, nichts für nicht doppeltes Sprechen.
quelle
MathGolf , 2 Bytes
Probieren Sie es online!
Im Grunde das gleiche wie die 05AB1E-Antwort,
½
teilt die Zeichenfolge in gerade und ungerade Zeichen auf und prüft dann auf Gleichheit. Übergibt die leere Zeichenfolge.quelle
JavaScript, 28 Bytes
Probieren Sie es online!
23 Bytes unter Verwendung des regulären Ausdrucks von wastl
Probieren Sie es online!
quelle
null
für false: Probieren Sie es online aus!s=>!s.some((x,y)=>x>s[y|1])
>
mit!=
Haskell ,
2823 BytesProbieren Sie es online!
Sehr einfach. Double Speak ist nur leer oder ein wiederholtes Zeichen, das vor Double Speak steht.
Jetzt weniger einfach. Ausgaben über Vorhandensein oder Nichtvorhandensein eines Fehlers, per Metakonsens ; Kein Fehler bedeutet doppeltes Sprechen. Der Mustervergleich schlägt fehl, wenn sich die ersten beiden Zeichen unterscheiden oder wenn eine ungerade Anzahl von Zeichen vorhanden ist. Vielen Dank an Laikoni für diese Einsparungen!
quelle
V (vim) , 7 Bytes
Probieren Sie es online! oder Testfälle überprüfen
Hexdump:
Nur zwei reguläre Ausdrücke. Erläuterung:
quelle
Brachylog , 5 Bytes
Probieren Sie es online!
Erfolg oder Misserfolg.
quelle
PowerShell ,
3938 BytesProbieren Sie es online!
wo
$p
enthält ein früheres Zeichen.Keine Rekursion , kein Regex :). Übernimmt die Eingabe als Zeichen-Array über einen Splatting-String (siehe TIO-Link).
PowerShell , 48 Byte
Probieren Sie es online!
Keine Rekursion , kein Regex und keine Pipe: D. Es nimmt auch Eingaben als Zeichen-Array über eine Splatting-Zeichenfolge entgegen. Es wird
$b-eq$a
stattdessen$a-eq$b
für den Fall verwendet, dass ein letztes Zeichen den Code # 0 hat.quelle
Power ,
6459 BytesProbieren Sie es online!
Rekursive Funktion, kein regulärer Ausdruck. Nimmt die Eingabe als
char
-array (siehe TIO-Link). Schält die ersten beiden Elemente in$a
und ab$b
und speichert die verbleibenden in$r
. Wenn noch Elemente übrig sind, greifen Sie mit zu$a -eq $b
. Ansonsten einfach nachschauen ob$a -eq $b
. Die Ausgabe ist implizit.-5 Bytes dank mazzy
quelle
$
vor dem Anweisungsblock und konnte nicht herausfinden, warum es nicht funktionierte.Julia 1.0 , 25 Bytes
Probieren Sie es online!
quelle
f
z!a=...
. Oder verwenden Sie eine anonyme Funktion:s->...
J ,
131110 BytesProbieren Sie es online!
-2 Bytes dank Adám
-1 Byte dank Meilen
TLDR-Erklärung: Ist die Eingabe mit jedem anderen Zeichen der Eingabe identisch, das verdoppelt wurde?
quelle
-:]#~2 0$~#
-:2#_2{.\]
sollte ein weiteres Byte sparenShakespeare Programming Language ,
204156 Bytes-48 Bytes dank Jo King (hauptsächlich durch Ändern der Ausgabemethode)
Probieren Sie es online!
Wird mit Fehler beendet, wenn die Eingabe Double Speak ist, und mit Warnung, wenn es sich nicht um Double Speak handelt (was standardmäßig zulässig ist).
quelle
Fass ,
1917 ZeichenErläuterung:
Probieren Sie es online!
quelle
R ,
5334 Bytes-19 Bytes dank Giuseppe
Probieren Sie es online!
quelle
gsub("(.)\\1","",a)==""
würde es auch schaffen. viele andere verwenden den gleichen regulären Ausdruck.function(a)!sum(rle(a)$l%%2)
für 28Brain-Flak ,
26, 22 BytesProbieren Sie es online!
Gibt 1 für falsch und 0 für wahr aus.
Lesbare Version:
Ich hatte ursprünglich folgendes:
Welches ist 10 Bytes länger.
quelle
({({}[{}]){{}}{}})
QuadR , 11 Bytes
Probieren Sie es online!
''≡⍵
Das Ergebnis ist eine leere Zeichenfolge, wenn(.)\1
ein Charakter von sich selbst gefolgtwird durch nichts ersetzt
quelle
JavaScript,
2623 BytesProbieren Sie es online!
Rekursive Lösung, 30 Bytes
Vielen Dank an Arnauld für einen Fix zum Preis von 0 Bytes.
Probieren Sie es online!
quelle
Rot , 36 Bytes
Probieren Sie es online!
Längere Alternative:
Rot , 40 Bytes
Probieren Sie es online!
quelle
Zsh , 36 Bytes
Beendet truey (0), wenn NICHT double speak, und false (1), wenn double speak. (Wie in einem Kommentar erlaubt.)
Probieren Sie es online!
quelle
Prolog (SWI) ,
6045 BytesDanke an Unrelated String
Probieren Sie es online!
Das Umwandeln von einem String in eine Liste von Atomen hat die Partitur irgendwie ruiniert, aber gut.
quelle
atom_chars
anstelle von verwendenstring_chars
, obwohl Sie einen String als Eingabe und kein Atom verwenden. Dies kann jedoch irrelevant sein, wenn Sie einen durch Backtick getrennten String verwenden, dh eine Liste von Zeichencodes.