Tornou-se uma tradição no PPCG que alguns usuários alterem temporariamente seus nomes por um anagrama (um novo nome formado por reordenar as letras do antigo).
Às vezes fica difícil descobrir quem é quem. Eu poderia usar um programa ou função para dizer se duas frases são anagramas uma da outra.
O desafio
O programa ou função deve pegar duas strings e produzir um resultado verdadeiro, se forem anagramas uma da outra, e falsificar o contrário.
Regras
- A entrada conterá apenas letras (ASCII 65 a 90 e 97 a 122), dígitos (ASCII 48 a 57) ou espaço (ASCII 32).
- A relação do anagrama é independente do caso. Então "Arm" e "RAM" são anagramas.
- Os espaços também não contam. Então "teclado" e "Barked Yo" são anagramas
- Todos os embutidos permitidos
- O formato de entrada é flexível (duas strings, uma matriz de duas strings, uma string contendo as duas frases com um separador adequado ...)
Código de golfe. Menos bytes ganha.
Casos de teste
Verdade:
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
Falsy
Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got
code-golf
string
decision-problem
permutations
Luis Mendo
fonte
fonte
Manage Trash So, Those anagrams
. Agradável.So, the anagrams...
Respostas:
05AB1E ,
98 bytesCódigo:
Explicação:
Experimente online!
fonte
lvyðK{}Q
agora.Retina, 25
Experimente Online! Além disso, você pode executar uma versão multilinha modificada .
Exclua as letras anteriores à vírgula e suas correspondências após a vírgula. Se não temos mais letras, era um anagrama.
fonte
\w
como o último estágio.\W
não funcionará para o caso de:Calvins Hobbies, Calvin's Hobbies
Pitão,
1110 bytesObrigado a @FryAmTheEggman por me ensinar o poder de
;
!Experimente aqui!
Leva uma lista de duas seqüências de caracteres como entrada.
Explicação
fonte
Python 2,
6361 bytesUma função anônima que, de fato, toma n argumentos e determina se todos n deles são palíndromos mútuos!
f("Lynn", "Nyl N")
retornaTrue
.Esse truque de compreensão de conjunto é do xnor. Ele salvou dois bytes, mas a abordagem antiga parecia muito elegante:
fonte
`sorted(input().lower())`.strip(" [',")
tem o mesmo comprimento: /exec
coisa é inteligente, mas parece muito complexa. Você pode fazer melhor comlambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
.Gelatina, 12 bytes
Experimente online!
Como funciona
Versão alternativa, não concorrente (9 bytes)
O átomo maiúsculo de Jelly tinha um bug, e Jelly ainda não tinha construído para testar listas de igualdade ...
Experimente online!
Como funciona
fonte
CJam, 11
1214bytes3
2bytes removidos graças a @FryAmTheEggmanExperimente online!
fonte
lel
.lel
==>1e1
Ninguém sabe. É um mistério.Javascript,
69616059 bytes1 byte de desconto, obrigado @ ӍѲꝆΛҐӍΛПҒЦꝆ . 1 byte com curry ( apontado por @apsillers )
Mostrar snippet de código
fonte
n=>m=>...
n=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)
. Usar divisão em vez de correspondência deve economizar um byte.s='db cz'
... Agora resulta em ... e resulta ems.match(/\S/g)
.sort()
['b','c','d','z']
s.split(/\s/).sort()
['cz','db']
MATL , 11 bytes
EDIT (20 de maio de 2016) O código no link usa, em
Xz
vez deXv
, devido a alterações recentes no idioma.Experimente online!
fonte
Sério,
119 bytesExperimente Online!
Todo mundo parece estar usando o mesmo algoritmo. Aqui está mais uma vez.
Edit: a classificação realizada funciona corretamente nas strings e classifica os espaços à frente, para que strip () funcione.
fonte
C, 165 bytes
Legível e no contexto de trabalho,
fonte
zsh, 85 bytes
Entrada como argumentos de linha de comando, saída como código de retorno.
A
for
sintaxe torna esse Bash incompatível.fonte
Japonês, 12 bytes
Teste online!
Como funciona
fonte
GNU Sed, 33
A pontuação inclui +2 para
-rn
opções para sed.Esta é quase uma porta direta da resposta Retina de @ FryAmTheEggman :
Ideone.
fonte
Perl,
3433 + 1 = 34 bytesRequer a
-n
bandeira e o livre-M5.010
|-E
:Como funciona:
Obrigado ao msh210 por sugerir o uso de operadores ternários para economizar um byte
fonte
Baloch Gyr , 9 bytes
Experimente online!
A saída de verdade / falsidade é alcançada através do sucesso / fracasso do predicado, sendo este Brachylog.
Anteriormente, salvei um byte usando, em
cṇ₁cḷḍ
vez de,{ṇ₁cḷ}ᵐ
sob a suposição de que as duas seqüências de entrada teriam o mesmo comprimento, menos espaço em branco, mas percebi que seria bem-sucedido onde deveria falharAh Hass, haha
.fonte
PHP,
10994 bytesBlech, os dois
function/return
estão me matando aqui.Retorna a diferença entre duas
string
entradas como umarray
dos caracteres. O PHP considera[]
falso, satisfazendo osreturn
requisitos.fonte
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}
-> 75 bytes. Cria uma função anônima que retorna o resultado. Eu removi essa função longa e substituí as chamadasstr_split
por uma variável atribuída, para encurtá-la.Utilitários Bash + GNU, 51
f()
que:${@^^}
converte todos os parâmetros em maiúsculasfold -1
divide caracteres - um por linhasort
s linhasdiff
com-q
para suprimir a saída diff completa e-Bw
ignorar alterações de espaço em brancofonte
Pyke (commit 30, não competitivo), 9 bytes
Explicação:
fonte
Mathematica,
7776 bytesA primeira parte é na verdade uma das minhas respostas para outra pergunta!
fonte
Pike,
5411210910996 bytesmixed
passa a ser mais curto quearray(string)
.s
retorna1
se seus argumentos são anagramas.fonte
Q, 25 bytes
NOTA.- a contagem inclui o nome da função f: para facilitar os testes (como lambda, podemos decrementar 2 bytes)
Versão legível
coincidir com {ascendente não nulo inferior x} cada x
Teste
gera (1b = verdadeiro, 0b = falso)
Sobre Q
Linguagem de uso geral (derivada da APL, especializada em processamento de dados) desenvolvida pela kx.com. Versão completa gratuita de avaliação funcional para Windows / Linux / MacOS.
fonte
f
for necessário que o código seja avaliado adequadamente, ele deverá ser contado. Caso contrário, deixe-o fora do código de envio e use-o apenas em exemplos para mostrar como atribuir a função.k)~/{x@<x:_x@&~^x}'
para 17 bytes .. mas eu diria que é 19 que você precisar dok)
suporte como este éK
o código em vez deQ
...APL, 31 caracteres
Para ser usado assim:
Em inglês:
{ ... }¨⍵
: para cada um dos dois elementos do argumentox←('.'⎕R'\u0')⍵~' '
: transforme em maiúsculas (usando um regex ...) a sequência sem os espaços e atribua o resultado temporário ax
x[⍋x]
: classificar x≡/
: compare os dois resultados da classificação: se eles corresponderem, retorne 1.fonte
f 'first avatar' 'second avatar'
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'
dá 1.Java, 218 bytes
Primeira vez que escrevi Java ...
Golfe:
Ungolfed:
Teste:
fonte
boolean f(String...a){java.util.Arrays x=null;String[]A=g(a[0]),B=g(a[1]);x.sort(A);x.sort(B);return x.equals(A,B);}String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 186 bytes ) Ou se você o converter em um lambda Java 8, poderá ser:a->b->{java.util.Arrays x=null;String[]A=g(a),B=g(b);x.sort(A);x.sort(B);return x.equals(A,B);};String[]g(String a){return a.replace(" ","").toUpperCase().split("");}
( 167 bytes ). Aqui está um TIO com código de teste.Japonês , 10 bytes
Tente
fonte
Ruby, 50 bytes
Escrever
f=->{...}
ef[]==f[]
é tão longo. :(fonte
PowerShell, 81 bytes
Uma leve reescrita da minha resposta no desafio anagrama vinculado.
Pega entrada como matrizes de caracteres, executa uma
-replace
operação para remover espaços, classifica-sort
os (que são classificados em ordem alfabética, não pelo valor ASCII) e, em seguida, classifica--join
os novamente em uma string. O-eq
PowerShell, por padrão, não faz distinção entre maiúsculas e minúsculas, mas aqui deve ser executado em cadeias de caracteres, como[char]'a'
não é igual a[char]'A'
, daí o motivo-join
.fonte
Perl, 35 bytes
Incluir +1 para
-p
Um pouco abusivo, pois depende do programa ser fornecido na linha de comando.
Em seguida, forneça as cordas como 2 linhas consecutivas em STDIN
Uma solução muito abusiva é de 30 bytes:
Isso trava se as seqüências de caracteres não são anagramas e, portanto, fornece um código de saída falso do ponto de vista do shell. Também fornece lixo no STDERR para esse caso. Se as strings são anagramas, o programa é silencioso e fornece um código de saída "true"
fonte
PHP , 89 bytes
Experimente online!
PHP , 94 bytes
Experimente online!
fonte
Excel VBA, 122 bytes
Janela imediata do VBE anônimo Função que leva as entradas do intervalo
[A1:B1]
e as saídas para a janela imediata do VBEfonte
C #, 378 bytes
Eu preciso de uma desvantagem !!
https://dotnetfiddle.net/FNDt0E
fonte
#
à primeira linha. Também para perguntas sobre código de golfe, é necessário jogar seu programa no golfe. Para começar, você deve remover espaços em branco desnecessários e usar nomes de variáveis de um caractere. Além disso, você sempre pode usar uma função em vez de um programa completo (a menos que seja explicitamente proibido) para salvar mais alguns bytes.