Dada uma sequência x
, produza os caracteres x
classificados de acordo com a ordem de aparência no seu código-fonte.
Exemplos
Source: ThisIs A Test
Input: Is it a Test?
Output: TissI etta?
Source: Harry - yer a wizard.
Input: I'm a what?
Output: aa wh'?Imt
Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
Input:
Output:
Regras
- Aplicam-se brechas padrão e regras de E / S
- Entrada e saída podem ser uma sequência, uma lista de caracteres ou uma lista de bytes.
- Se um caractere for usado várias vezes na fonte, use a primeira ocorrência.
- Se um ou mais caracteres não aparecer na fonte, eles deverão estar no final; sua ordem não importa, nem precisa ser consistente.
- A origem não deve estar vazia
- Novas linhas são tratadas da mesma forma que outros caracteres.
- A ordem na qual o código é executado não importa; apenas a sequência crua.
- A entrada está na mesma codificação que o código.
- A entrada é classificada por caracteres, não por bytes.
- A classificação diferencia maiúsculas de minúsculas
- Isso é código-golfe , então a resposta mais curta em bytes para cada idioma vence!
x
codificados em UTF-8 ou UTF-16 se nossa solução não estiver codificada em Unicode, e os caracteres Unicode emx
representarem caracteres na página de códigos da solução? Por exemplo, alguns idiomas de golfe usam páginas de códigos personalizadas para reduzir a contagem de bytes, mas ainda podem ser lidas a olho nu.Respostas:
Python 3.8 (pré-lançamento) ,
1021009685797668615960 bytesExperimente online!
-2 bytes usando este
-4 bytes, percebendo que
<0
====-1
e removendo o desnecessário+1
-11 bytes graças a Neil
-6 bytes graças a dzaima
-3 bytes graças ao rod
-8 bytes graças a sete negativos, indicando que o programa pode gerar uma lista de caracteres
-7 bytes devido à incorporação da ignorância voltando ao Python 3.8 e usando
:=
-2 bytes devido a Jo King mudar o nome da variável s para c, para que possamos deixar de fora o
;c
+1 bytes porque sete negativos indicaram que não estava filtrando
;
corretamentefonte
('s=%r;exec(s)'%s+x).find(x)
?('s=%r;exec(s)'%s).find(x)
por seu código a tornaria válida?input()
e salvar 4 bytes;
não está sendo classificado corretamente na versão atualAPL (Dyalog Unicode) , SBCS de 14 bytes
Função de prefixo tácito anônimo.
⊂
inclua argumento (para agir sobre ele como um todo)… A
⊃¨
partir disso, escolha um caractere para cada um dos seguintes índices:∘⍋
os índices que classificariam o argumento na ordem dada pela seguinte sequência (todos os não membros terão a ordem de aparência no final):'''∘⍋⊃¨⊂'
os personagens'∘⍋⊃¨⊂
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 48 bytes
Experimente online!
fonte
JavaScript (Node.js) ,
60 5856 bytes-2 bytes de Jo King
Experimente online!
fonte
f=...
. Se for esse o caso, inclua isso na sua contagem de bytes e envios.Perl 6 , 56 bytes
Experimente online!
fonte
Ruby , 57 bytes
Experimente online!
Bastante direto, supondo que eu não tenha perdido um truque de golfe. Pegue uma lista de caracteres e classifique por seu índice em uma sequência que consiste em todos os caracteres uniq no código em ordem de aparência. Muitas vezes, sua primeira aparição é nessa mesma sequência, mas isso não muda a ordem.
fonte
05AB1E ,
242221 bytesExperimente online!
Explicação:
Primeira tentativa de coisas no 05AB1E, provavelmente muito a ser salvo
fonte
}krR«'«
. OBSERVAÇÃO:'
é um caractere único e, portanto,'"
basta (ao contrário do C #, quando ele precisa de um rastreamento adicional'
). Atualmente, seu código empurra a string primeiroΣ
, depois a string"
, depois a string«
, depois a string'«Rrk}
e, em seguida, faz o índice append, reverse, reverse reverse. Uso inteligente do reverso da corda e no final! Vou ver se consigo encontrar uma solução para a sua resposta e depois excluir a minha.}krR«'"Σ
. PS: Costumo usar=
(imprimir sem aparecer) para fins de depuração, às vezes. Você também pode adicionar--debug-stack
como argumento, mas é um pouco estranho na nova versão 05AB1E imho.Jelly ,
1614 bytes (página Jelly Code), 25 bytes (UTF8)Experimente online!
Um programa completo que utiliza um único argumento, a sequência a ser classificada.
Obrigado a @ JonathanAllan por apontar um bug!
Conforme @EriktheOutgolfer, embora o código possa ser inserido usando a página de código Jelly, os caracteres classificados são os UTF-8 equivalentes, em vez dos bytes da fonte. Como tal, incluí a pontuação nos bytes UTF-8 também. Observe que o mesmo provavelmente se aplica a todos os idiomas com páginas de códigos personalizadas.
Explicação
A string acima é avaliada como:
Ṿv`
é um no-op efetivamente aqui, mas existe para garantir que todos os caracteres sejam representados.fonte
Gelatina , 14 bytes
Um programa completo que aceita uma string (formatada em Python) (de caracteres da página de código Jelly ) que imprime a saída.
(como um link monádico, ele gera uma lista de listas de caracteres)
Experimente online!
Quão?
fonte
f
eḟ
trabalho em caracteres Unicode, porque isso é o tipo de caracteres da string realmente tem dentro. Por exemplo,”ĿO
retorna319
se testado localmente codificado em JELLY, para que ele veja oĿ
e não o C7.f
eḟ
trabalho no Unicode também, mas isso é um problema aqui? Passo o conjunto restrito de caracteres Unicode que aparecem na página de códigos do Jelly (ou seja, bytes codificados usando essa codificação, cumprindo "A entrada está na mesma codificação que o código"); filtre-os corretamente (já que esses bytes introduzidos foram codificados como Unicode) e depois os produza corretamente. O que eu conto são os bytes do código (preenchendo "A entrada é classificada por caracteres, não por bytes" e "resposta mais curta em bytes para cada idioma vence").Carvão , 37 bytes
Experimente online! Explicação:
Existem duas maneiras de citar caracteres no Charcoal;
´
cita qualquer caractere único enquanto”y
...”
cita qualquer caractere, exceto”
e também conta como uma sequência separada. Acontece que a sobrecarga em ter que lidar com”
isso significa que ele não acaba com nenhum golfista.Faça um loop sobre os caracteres por vez, produzindo quaisquer caracteres correspondentes da entrada Isso classifica a entrada.
Saída quaisquer caracteres não correspondentes na entrada.
fonte
J , 14 bytes
Função de prefixo tácito anônimo.
Experimente online!
]
o argumento…
i:
Última ocorrência (não membros obtêm o índice além do final da cadeia de pesquisa) de cada caractere em:']/:''i'
os personagens]/:'i
...
/:
use isso para classificar:]
o argumentofonte
Java 10,
129100 bytes-29 bytes, portando a resposta C #
+c
de @EmbodimentOfIgnorance .Experimente online.
Explicação:
NOTA: Geralmente, é mais barato usar em
s.sort((a,b)->Long.compare(a,b))
vez des.sort(java.util.Comparator.comparing(c->c)
, mas nesse caso seria 11 bytes a mais:Experimente online.
fonte
05AB1E ,
312619 bytes-7 bytes, inspirando- se na abordagem de @ EmbodimentOfIgnorance em sua resposta em C # de anexar o caractere atual antes da indexação.
Experimente online ou tente com a linha de depuração adicionada para ver as strings que estão sendo indexadas .
Explicação:
fonte
PowerShell , 68 bytes
Experimente online!
fonte
sort
vez dissosort-object
também funciona. 2) a variável$b
definida fora do escopo do seu código. oStandard loopholes
requer uma resposta completa . Para o Powershell, significa: qualquer pessoa pode criar o código em um arquivo como um script do PowerShell e executá-lo em um terminal. Seu código não funciona no arquivo de script. Desculpe.sort
alias não funciona no pwsh no Ubuntu 18.04 2) sim, a culpa é minha, mas eu me corrigi e, como resultado, o código ficou mais longo, é claro :)code became longer
- este é o desafio :)$p
é anexado ao final da string com o código-fonte e obtém um índice igual a$src.Length
, mas como “a ordem deles não importa e não deve ser consistente”, isso não importa. Em esta resposta , toda a cadeia de entrada é acrescentado ao final da string com o código fonte.Python 2 , 62 bytes
Mesmo conceito que minha resposta em C #.
Experimente online!
fonte
\\\'
deveria ser\'\\
. Boa abordagem embora! Salvei 23 bytes na minha resposta Java.Japonês , 18 bytes
Tente
fonte
Gelatina , 26 bytes (UTF-8 *)
Experimente online!
Recebe entrada como uma string formatada em Python no 1º argumento da linha de comando.
Caracteres únicos :
* Nota: Descobri que isso não funciona quando codificado em JELLY, pois classifica os caracteres UTF-8 em vez de seus próprios bytes.
fonte