Encontré esta pregunta, porque parece ser un caso de uso muy común para encontrar caracteres únicos en la cadena. Pero, ¿qué pasa si queremos deshacernos de ellos?
La entrada contiene solo alfabetos en minúsculas. Solo se utilizan letras de la a a la z. La longitud de entrada puede ser de 1 a 1000 caracteres.
Ejemplo:
input: helloworld
output: llool
Objetivo: el código más corto gana
Idioma: cualquiera de los 20 principales idiomas de TIOBE
-CDS
opción$1
con$&
y puede perder un par de paréntesis.(GolfScript,
1513 caracteres)GolfScript no es uno de los 20 mejores, sino un codegolf sin GolfScript ... ( ejecútelo usted mismo )
Versión anterior: ( ejecutar script )
fuente
:;
? Intentas confundir deliberadamente a los novatos, ¿verdad? ;))
- sería un smiley entonces:)
. Desafortunadamente, no encontré una forma de eliminar siquiera el dígito 1. (Nota para los novatos de GolfScript: puede reemplazar cualquiera;
en el código con unx
(o cualquier otra letra o dígito, o cualquier carácter que no se use en el script). En este caso especial;
es solo un nombre de variable, y no tiene el significado "pop and descarte". En GolfScript, casi todos los tokens son variables de todos modos, y el uso de símbolos predefinidos es una excelente manera de hacer que los scripts sean aún más ilegibles para los extraños ;-).):a{]a.@--,(},
J, 12 caracteres
Después de haber ingresado una respuesta Perl válida, aquí hay una respuesta no válida (idioma que no está en el top 20 de TIOBE).
Uso:
Declara un verbo
a
que genera solo elementos no únicos.fuente
GolfScript (14 caracteres)
Demostración en línea
Puede que no califique para ganar, pero es útil tener un criterio.
fuente
Rubí
464036fuente
s
y lo usa$_
para la segunda aparición (el espacio anterior es entonces prescindible).Perl 44
Ejecución:
fuente
K, 18
fuente
1<#
en lugar de~1=#
Python 2.7 (
5251),Python 3 (52)No esperaba que fuera tan corto.
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()
: almacena la entrada como una cadena (input()
=eval(raw_input())
)(Python 3.0:
input()
se ha convertido enraw_input()
)filter(lambda x:a.count(x)>1,a)
: Filtre a través de todos los caracteres dentroa
si se encuentran ena
más de una vez (a.count(x)>1
).fuente
input()
lugar deraw_input()
. Aunque tiene que agregar un carácter para un corchete de cierre, ya queprint
es una función en Python 3.''.join(...)
sed y coreutils (128)
De acuerdo, esto no es parte de la lista TIOBE, pero es divertido (-:
Versión de golf:
Explicación
El primer sed convierte la entrada en un carácter por línea. El segundo sed encuentra caracteres que solo ocurren una vez. Third sed escribe un script sed que elimina caracteres únicos. El último sed ejecuta el script generado.
fuente
Brachylog (v2), 8 bytes
Pruébalo en línea!
Presentación de funciones. Técnicamente no compite porque la pregunta tiene una limitación sobre qué idiomas pueden competir (sin embargo, varias otras respuestas ya han ignorado la restricción).
Explicación
fuente
Japt ,
65 bytes-1 byte gracias a @Oliver
Pruébalo en línea!
fuente
o@
:Æ
Pitón (56)
Aquí hay otra alternativa (pocos caracteres más) en Python:
Si acepta la salida como una lista (p
['l', 'l', 'o', 'o', 'l']
. Ej. ), Podríamos reducirla a 49 caracteres:fuente
>1
es una buena idea! ¿Puedo incorporar eso en mi solución?Mathematica
7263Ok, Mathematica no está entre los 20 idiomas principales, pero decidí unirme a la fiesta de todos modos.
x
es la cadena de entrada.fuente
Perl (55)
Lecturas de stdin.
fuente
C # - 77 caracteres
Si acepta la salida como una matriz, se reduce a 65 caracteres:
fuente
Ocaml,
139133Utiliza ExtString.String de ExtLib
Versión sin golf
La función
g
devuelve el número de ocurrencias de c en la cadena s. La funciónf
reemplaza todos los caracteres, ya sea por la cadena vacía o la cadena que contiene el carácter, dependiendo del número de ocurrencias. Editar: acorté el código en 6 caracteres al abusar de la representación interna de bools :-)Ah, y ocaml es 0 en el índice TIOBE ;-)
fuente
PHP - 70
con asunción $ s = 'helloworld'.
fuente
Java 8, 90 bytes
Explicación:
Pruébalo en línea.
fuente
PowerShell , 59 bytes
Pruébalo en línea!
Menos golfizado:
Nota:
$repeatedChars
es una matriz. Por defecto, un Powershell une elementos de la matriz por espacio de caracteres mientras convierte la matriz en cadena. Entonces, la expresión regular contiene espacios (en este ejemplo,[^l o]
). Los espacios no afectan el resultado porque la cadena de entrada contiene solo letras.fuente
APL (Dyalog Extended) , SBCS de 8 bytes
Función de prefijo tácito anónimo.
Pruébalo en línea!
⍧⍨
selfie de recuento (cuenta las ocurrencias de elementos de argumento en el argumento mismo)1<
Máscara booleana donde uno es menor que eso⊢⊆⍨
particione el argumento por esa máscara (comience una nueva partición en 1s y elimine en 0s)∊
ϵ nlist (aplanar)fuente
JavaScript, 45 bytes
fuente
R , 70 bytes
Pruébalo en línea!
Un intento pobre, incluso de un lenguaje TIOBE top 20. Sé que se puede hacer algo en la segunda mitad, pero por el momento, cualquier golf se me escapa.
fuente
JavaScript, 34 bytes
Entrada como una cadena, salida como una matriz de caracteres.
¡Pruébelo en línea!
fuente
map
: tio.run/##BcExDoAgDADAvzgYOtjBHT9CTCSICqmUWKL8vt5l/…JavaScript (Node.js) , 82 bytes
Pruébalo en línea!
fuente
.join``
lugar de.join("")
.PHP - 137
Código
Código normal
fuente
PHP -
8378Versión mejorada:
Por supuesto, esto necesita avisos para apagarse
Editar: Mejora inspirada en @hengky mulyono
Soy tan malo en codegolf :)
fuente
C ++, 139 bytes
sin golf:
fuente