Ich bin auf diese Frage gestoßen, weil es sehr häufig vorkommt, eindeutige Zeichen in Strings zu finden. Aber was ist, wenn wir sie loswerden wollen?
Die Eingabe enthält nur Kleinbuchstaben. Es werden nur Buchstaben von a bis z verwendet. Die Eingabelänge kann zwischen 1 und 1000 Zeichen liegen.
Beispiel:
input: helloworld
output: llool
Ziel: Kürzester Code gewinnt
Sprache: Eine der Top 20 der TIOBE-Sprachen
-CDS
Option$1
durch$&
und Sie können ein paar Klammerpaare verlieren.(GolfScript,
15 bis13 Zeichen)GolfScript gehört nicht zu den Top 20, sondern ein Codegolf ohne GolfScript ... ( führen Sie es selbst aus )
Vorgängerversion: ( Skript ausführen )
quelle
:;
? Sie versuchen absichtlich, Neulinge zu verwirren, nicht wahr? ;))
- es würde es dann zu einem Smiley machen:)
. Leider habe ich keine Möglichkeit gefunden, die Ziffer 1 zu eliminieren. (Hinweis für GolfScript-Neulinge: Sie können jede Ziffer;
im Code durch einex
(oder einen anderen Buchstaben oder eine Ziffer - oder ein anderes im Skript nicht verwendetes Zeichen) ersetzen . In diesem speziellen Fall;
handelt es sich nur um einen Variablennamen - und hat nicht die Bedeutung "pop and discard". In GolfScript sind sowieso fast alle Token Variablen, und die Verwendung vordefinierter Symbole ist eine großartige Möglichkeit, Skripte für Außenstehende noch unlesbarer zu machen ;-).):a{]a.@--,(},
J, 12 Zeichen
Nachdem Sie eine gültige Perl-Antwort eingegeben haben, ist hier eine ungültige Antwort (Sprache nicht in den Top 20 von TIOBE).
Verwendung:
Deklariert ein Verb,
a
das nur nicht eindeutige Elemente ausgibt.quelle
GolfScript (14 Zeichen)
Online-Demo
Könnte sich nicht qualifizieren, um zu gewinnen, aber es ist nützlich, einen Maßstab zu haben.
quelle
Ruby
464036quelle
s
und$_
für den zweiten Auftritt verwenden (der Platz davor ist dann entbehrlich).Perl 44
Ausführung:
quelle
K, 18
quelle
1<#
anstelle von~1=#
Python 2.7 (
5251),Python 3 (52)Ich hätte nicht gedacht, dass es so kurz ist.
2.7:
a=raw_input();print filter(lambda x:a.count(x)>1,a)
3.0:a=input();print''.join(i for i in a if a.count(x)>1)
raw_input()
: Eingabe als String speichern (input()
=eval(raw_input())
)(Python 3.0:
input()
wurde in umgewandeltraw_input()
)filter(lambda x:a.count(x)>1,a)
: Durchsuchen Sie alle Zeichen in,a
wenn siea
mehrmals vorkommen (a.count(x)>1
).quelle
input()
stattraw_input()
. Obwohl Sie ein Zeichen für eine schließende Klammer hinzufügen müssen, ist daprint
eine Funktion in Python 3.''.join(...)
sed und coreutils (128)
Zugegeben, das ist nicht Teil der TIOBE-Liste, aber es macht Spaß (-:
De-Golf-Version:
Erläuterung
Die erste Sed wandelt die Eingabe in ein Zeichen pro Zeile um. Der zweite Satz findet Zeichen, die nur einmal vorkommen. Third Sed schreibt ein Sed-Skript, das eindeutige Zeichen löscht. Die letzte Sed führt das generierte Skript aus.
quelle
Brachylog (v2), 8 Bytes
Probieren Sie es online!
Funktionsübergabe. Technisch nicht konkurrierend, da die Frage beschränkt ist, welche Sprachen konkurrieren dürfen (mehrere andere Antworten haben die Einschränkung jedoch bereits ignoriert).
Erläuterung
quelle
Japt ,
65 Bytes-1 Byte dank @Oliver
Probieren Sie es online!
quelle
o@
:Æ
Python (56)
Hier ist eine weitere (einige Zeichen länger) Alternative in Python:
Wenn Sie die Ausgabe als Liste akzeptieren (z. B.
['l', 'l', 'o', 'o', 'l']
), können wir sie auf 49 Zeichen reduzieren :quelle
>1
ist eine gute Idee! Darf ich das in meine Lösung einbauen?Mathematica
7263Okay, Mathematica ist nicht unter den Top 20 Sprachen, aber ich habe mich trotzdem dazu entschlossen, der Party beizutreten.
x
ist die Eingabezeichenfolge.quelle
Perl (55)
Liest von stdin.
quelle
77 Zeichen
Wenn Sie die Ausgabe als Array akzeptieren, werden nur 65 Zeichen ausgegeben :
quelle
Ocaml,
139,133Verwendet ExtLibs ExtString.String
Nicht Golf Version
Die Funktion
g
gibt die Anzahl der Vorkommen von c in der Zeichenfolge s zurück. Die Funktionf
ersetzt alle Zeichen entweder durch die leere Zeichenfolge oder durch die Zeichenfolge, die das Zeichen enthält, je nach Anzahl der Vorkommen. Edit: Ich habe den Code um 6 Zeichen gekürzt, indem ich die interne Darstellung von Bools missbraucht habe :-)Oh, und ocaml ist 0 im TIOBE-Index ;-)
quelle
PHP - 70
mit Annahme $ s = 'helloworld'.
quelle
Java 8, 90 Bytes
Erläuterung:
Probieren Sie es online aus.
quelle
PowerShell , 59 Byte
Probieren Sie es online!
Weniger golfen:
Hinweis:
$repeatedChars
ist ein Array. Standardmäßig fügt eine PowerShell Array-Elemente durch ein Leerzeichen zusammen, während das Array in einen String konvertiert wird. Der reguläre Ausdruck enthält also Leerzeichen (in diesem Beispiel[^l o]
). Leerzeichen wirken sich nicht auf das Ergebnis aus, da die Eingabezeichenfolge nur Buchstaben enthält.quelle
APL (Dyalog Extended) , 8 Bytes SBCS
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
⍧⍨
count-in selfie (zähle das Vorkommen von Argumentelementen im Argument selbst)1<
Boolesche Maske, bei der man kleiner ist⊢⊆⍨
Partitioniere das Argument durch diese Maske (beginne eine neue Partition mit Einsen und entferne sie mit Nullen)∊
ϵ nlist (Abflachen)quelle
JavaScript, 45 Bytes
quelle
R , 70 Bytes
Probieren Sie es online!
Ein schlechter Versuch, selbst aus einer TIOBE-Top-20-Sprache. Ich weiß, dass in der zweiten Hälfte etwas getan werden kann, aber im Moment entgehen mir alle Golfplätze.
quelle
JavaScript, 34 Bytes
Eingabe als String, Ausgabe als Zeichenarray.
Probieren Sie es online!
quelle
map
: tio.run/##BcExDoAgDADAvzgYOtjBHT9CTCSICqmUWKL8vt5l/…JavaScript (Node.js) , 82 Byte
Probieren Sie es online!
quelle
.join``
anstelle von verwenden.join("")
.PHP - 137
Code
Normaler Code
quelle
PHP -
8378Verbesserte Version:
Natürlich müssen dazu Hinweise ausgeschaltet werden
Bearbeiten: Verbesserung von @hengky mulyono inspiriert
Ich bin so schlecht im Codegolf :)
quelle
C ++, 139 Bytes
ungolfed:
quelle