Je suis tombé sur cette question, car il semble que ce soit un cas d'utilisation très courant pour trouver des caractères uniques dans une chaîne. Mais que faire si on veut s'en débarrasser?
L'entrée ne contient que des alphabets en minuscules. Seules les lettres de a à z sont utilisées. La longueur d'entrée peut être comprise entre 1 et 1 000 caractères.
Exemple:
entrée: helloworld
sortie: llool
Objectif: Le code le plus court gagne
Langue: N'importe lequel des 20 meilleurs langages TIOBE
-CDS
option$1
par$&
et vous risquez de perdre quelques paires de parenthèses.(GolfScript,
1513 caractères)GolfScript n'est pas l'un des 20 meilleurs, mais un golf de code sans GolfScript ... ( exécutez-le vous-même )
Version précédente: ( exécuter le script )
la source
:;
? Vous essayez délibérément de confondre les débutants, n'est-ce pas? ;))
- ça en ferait un smiley alors:)
. Malheureusement, je n'ai pas trouvé de moyen d'éliminer même le chiffre 1. (Remarque pour les débutants de GolfScript: vous pouvez remplacer tout;
dans le code par unx
(ou toute autre lettre ou chiffre - ou tout caractère non utilisé dans le script autrement). Dans ce cas particulier, ce;
n'est qu'un nom de variable - et n'a pas la signification de "pop and discard". Dans GolfScript, presque tous les jetons sont des variables de toute façon, et l'utilisation de symboles prédéfinis est un excellent moyen de rendre les scripts encore plus illisibles pour les étrangers ;-).):a{]a.@--,(},
J, 12 caractères
Après avoir entré une réponse Perl valide, voici une réponse invalide (langue qui ne fait pas partie du top 20 de TIOBE).
Usage:
Déclare un verbe
a
qui ne produit que des éléments non uniques.la source
GolfScript (14 caractères)
Démo en ligne
Peut-être pas qualifié pour gagner, mais il est utile d'avoir un critère.
la source
Rubis
464036la source
s
et utilisez$_
pour la deuxième apparence (l'espace avant est alors disponible).Perl 44
Exécution:
la source
K, 18
la source
1<#
au lieu de~1=#
Python 2.7 (
5251),Python 3 (52)Je ne m'attendais pas à ce que ce soit si court.
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()
: stocke l'entrée sous forme de chaîne (input()
=eval(raw_input())
)(Python 3.0:
input()
a été transformé enraw_input()
)filter(lambda x:a.count(x)>1,a)
: Filtrez tous les personnages à l'intérieura
s'ils se trouvent dansa
plusieurs fois (a.count(x)>1
).la source
input()
plutôt queraw_input()
. Bien que vous deviez ajouter un caractère pour une parenthèse fermante, puisqu'ilprint
s'agit d'une fonction en python 3.''.join(...)
sed et coreutils (128)
Certes, cela ne fait pas partie de la liste TIOBE, mais c'est amusant (-:
Version sans golf:
Explication
Le premier sed convertit l'entrée en un caractère par ligne. Le deuxième sed trouve des personnages qui n'apparaissent qu'une seule fois. Troisième sed écrit un script sed qui supprime des caractères uniques. Le dernier sed exécute le script généré.
la source
Brachylog (v2), 8 octets
Essayez-le en ligne!
Soumission de fonction. Techniquement non compétitif car la question a une limite sur les langages autorisés à concourir (cependant, plusieurs autres réponses ont déjà ignoré la restriction).
Explication
la source
Japt ,
65 octets-1 octet grâce à @Oliver
Essayez-le en ligne!
la source
o@
:Æ
Python (56)
Voici une autre alternative (quelques caractères de plus) en Python:
Si vous acceptez la sortie sous forme de liste (par exemple
['l', 'l', 'o', 'o', 'l']
), nous pourrions la résumer à 49 caractères:la source
>1
c'est une bonne idée! Puis-je intégrer cela dans ma solution?Mathematica
7263Ok, Mathematica ne fait pas partie des 20 meilleures langues, mais j'ai quand même décidé de rejoindre la fête.
x
est la chaîne d'entrée.la source
Perl (55)
Lit à partir de stdin.
la source
C # - 77 caractères
Si vous acceptez la sortie sous forme de tableau, elle se résume à 65 caractères:
la source
Ocaml,
139133Utilise ExtString.String d'ExtLib
Version non golfée
La fonction
g
renvoie le nombre d'occurrences de c dans la chaîne s. La fonctionf
remplace tous les caractères par la chaîne vide ou la chaîne contenant le caractère en fonction du nombre d'occurrences. Edit: j'ai raccourci le code de 6 caractères en abusant de la représentation interne des bools :-)Oh, et ocaml est 0 sur l'indice TIOBE ;-)
la source
PHP - 70
avec une hypothèse $ s = 'helloworld'.
la source
Java 8, 90 octets
Explication:
Essayez-le en ligne.
la source
PowerShell , 59 octets
Essayez-le en ligne!
Moins golfé:
Remarque:
$repeatedChars
est un tableau. Par défaut, un Powershell joint les éléments du tableau par un caractère d'espace tout en convertissant le tableau en chaîne. Ainsi, l'expression rationnelle contient des espaces (dans cet exemple,[^l o]
). Les espaces n'affectent pas le résultat car la chaîne d'entrée contient uniquement des lettres.la source
APL (Dyalog Extended) , 8 octets SBCS
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
⍧⍨
compte selfie (compte les occurrences des éléments d'argument dans l'argument lui-même)1<
Masque booléen où l'on est inférieur à celui⊢⊆⍨
partitionner l'argument par ce masque (en commençant une nouvelle partition sur 1s et en supprimant sur 0s)∊
ϵ nlist (aplatir)la source
JavaScript, 45 octets
la source
R , 70 octets
Essayez-le en ligne!
Une mauvaise tentative, même à partir d'un top 20 des langues TIOBE. Je sais que quelque chose peut être fait au cours de la seconde moitié, mais pour le moment, aucun golf ne m'échappe.
la source
JavaScript, 34 octets
Entrée sous forme de chaîne, sortie sous forme de tableau de caractères.
Essayez-le en ligne!
la source
map
: tio.run/##BcExDoAgDADAvzgYOtjBHT9CTCSICqmUWKL8vt5l/…JavaScript (Node.js) , 82 octets
Essayez-le en ligne!
la source
.join``
place de.join("")
.PHP - 137
Code
Code normal
la source
PHP -
8378Version améliorée:
Bien sûr, cela nécessite la désactivation des notifications
Éditer: Amélioration inspirée par @hengky mulyono
Je suis si mauvais au codegolf :)
la source
C ++, 139 octets
non golfé:
la source