Eu me deparei com essa pergunta, porque parece ser um caso de uso muito comum encontrar caracteres únicos na string. Mas e se quisermos nos livrar deles?
A entrada contém apenas letras minúsculas. Somente letras de a a z são usadas. O comprimento da entrada pode ter de 1 a 1000 caracteres.
Exemplo:
input: helloworld
output: llool
Objetivo: o menor código vence
Idioma: qualquer um dos 20 principais idiomas do TIOBE
-CDS
opção$1
por$&
e você poderá perder alguns pares de parênteses.(GolfScript,
1513 caracteres)O GolfScript não é um dos 20 principais, mas um codegolf sem o GolfScript ... ( execute você mesmo )
Versão anterior: ( executar script )
fonte
:;
? Você está deliberadamente tentando confundir novatos, não é? ;))
- seria um sorriso então:)
. Infelizmente, não encontrei uma maneira de eliminar o dígito 1. (Nota para iniciantes no GolfScript: você pode substituir qualquer um;
no código por umx
(ou qualquer outra letra ou dígito - ou qualquer caractere não utilizado no script). Nesse caso especial,;
é apenas um nome de variável - e não tem o significado "pop and descarte". No GolfScript, quase todos os tokens são variáveis, e o uso de símbolos predefinidos é uma ótima maneira de tornar os scripts ainda mais ilegíveis para quem está de fora ;-).):a{]a.@--,(},
J, 12 caracteres
Depois de inserir uma resposta Perl válida, eis uma resposta inválida (o idioma não está no top 20 do TIOBE).
Uso:
Declara um verbo
a
que gera apenas itens não exclusivos.fonte
GolfScript (14 caracteres)
Demonstração online
Pode não se qualificar para ganhar, mas é útil ter um critério.
fonte
Rubi
464036fonte
s
e usar$_
para a segunda aparição (o espaço anterior é então dispensável).Perl 44
Execução:
fonte
K, 18
fonte
1<#
vez de~1=#
Python 2.7 (
5251),Python 3 (52)Eu não esperava que fosse tão curto.
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()
: armazena a entrada como uma string (input()
=eval(raw_input())
)(Python 3.0:
input()
foi transformado emraw_input()
)filter(lambda x:a.count(x)>1,a)
: Filtre todos os caracteres contidosa
se forem encontradosa
mais de uma vez (a.count(x)>1
).fonte
input()
vez deraw_input()
. Embora você tem que adicionar um personagem para um colchete de fechamento, uma vez queprint
é uma função em python 3.''.join(...)
sed e coreutils (128)
Concedido que isso não faz parte da lista TIOBE, mas é divertido (-:
Versão descolada:
Explicação
O primeiro sed converte a entrada em um caractere por linha. O segundo sed encontra caracteres que ocorrem apenas uma vez. O terceiro sed grava um script sed que exclui caracteres únicos. O último sed executa o script gerado.
fonte
Brachylog (v2), 8 bytes
Experimente online!
Envio de função. Tecnicamente não competitivo, porque a pergunta tem uma limitação sobre quais idiomas podem competir (no entanto, várias outras respostas já ignoraram a restrição).
Explicação
fonte
Japonês ,
65 bytes-1 byte graças a @Oliver
Experimente online!
fonte
o@
:Æ
Python (56)
Aqui está outra alternativa (alguns caracteres a mais) no Python:
Se você aceitar a saída como uma lista (por exemplo
['l', 'l', 'o', 'o', 'l']
), poderemos reduzi-la para 49 caracteres:fonte
>1
é uma boa ideia! Posso incorporar isso na minha solução?Mathematica
7263Ok, o Mathematica não está entre os 20 principais idiomas, mas decidi me juntar à festa de qualquer maneira.
x
é a sequência de entrada.fonte
Perl (55)
Lê de stdin.
fonte
C # - 77 caracteres
Se você aceitar a saída como uma matriz, ela se resumirá a 65 caracteres:
fonte
Ocaml,
139133Usa ExtString.String do ExtLib
Versão sem golfe
A função
g
retorna o número de ocorrências de c na sequência s. A funçãof
substitui todos os caracteres pela string vazia ou pela string que contém o char, dependendo do número de ocorrências. Edit: Reduzi o código em 6 caracteres abusando da representação interna de bools :-)Ah, e ocaml é 0 no índice TIOBE ;-)
fonte
PHP - 70
com suposição $ s = 'helloworld'.
fonte
Java 8, 90 bytes
Explicação:
Experimente online.
fonte
PowerShell , 59 bytes
Experimente online!
Menos golfe:
Nota:
$repeatedChars
é uma matriz. Por padrão, um PowerShell junta elementos da matriz por espaço, enquanto converte a matriz em string. Portanto, o regexp contém espaços (neste exemplo[^l o]
). Os espaços não afetam o resultado porque a sequência de entrada contém apenas letras.fonte
APL (Dyalog Extended) , SBCS de 8 bytes
Função de prefixo tácito anônimo.
Experimente online!
⍧⍨
selfie de contagem (contagem de ocorrências de elementos de argumento no próprio argumento)1<
Máscara booleana em que um é menor que isso⊢⊆⍨
particione o argumento por essa máscara (iniciando uma nova partição em 1s e removendo em 0s)∊
ε nlist (achatar)fonte
JavaScript, 45 bytes
fonte
R , 70 bytes
Experimente online!
Uma péssima tentativa, mesmo em um dos 20 principais idiomas da TIOBE. Sei que algo pode ser feito no segundo tempo, mas, no momento, qualquer jogador de golfe me escapa.
fonte
JavaScript, 34 bytes
Entrada como uma string, saída como uma matriz de caracteres.
Experimente Online!
fonte
map
: tio.run/##BcExDoAgDADAvzgYOtjBHT9CTCSICqmUWKL8vt5l/…JavaScript (Node.js) , 82 bytes
Experimente online!
fonte
.join``
vez de.join("")
.PHP - 137
Código
Código normal
fonte
PHP -
8378Versão melhorada:
É claro que isso precisa ser desativado
Edit: Melhoria inspirada em @hengky mulyono
Eu sou tão ruim em codegolf :)
fonte
C ++, 139 bytes
ungolfed:
fonte