Se ha convertido en una tradición en PPCG que algunos usuarios cambian temporalmente sus nombres por un anagrama (un nuevo nombre formado reordenando las letras de los antiguos).
A veces se hace difícil descubrir quién es quién. Podría usar un programa o función para saber si dos frases son anagramas entre sí.
El reto
El programa o función debe tomar dos cadenas y producir un resultado verdadero si son anagramas entre sí, y falso de lo contrario.
Reglas
- La entrada solo contendrá letras (ASCII 65 a 90 y 97 a 122), dígitos (ASCII 48 a 57) o espacio (ASCII 32).
- La relación anagrama es independiente del caso. Entonces "Brazo" y "RAM" son anagramas.
- Los espacios tampoco cuentan. Entonces "teclado" y "Yo ladrado" son anagramas
- Todas las construcciones permitidas
- El formato de entrada es flexible (dos cadenas, una matriz de dos cadenas, una cadena que contiene ambas frases con un separador adecuado ...)
Código de golf. Pocos bytes ganan.
Casos de prueba
Verdad:
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
Falsa
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
fuente
fuente
Manage Trash So, Those anagrams
. Agradable.So, the anagrams...
Respuestas:
05AB1E ,
98 bytesCódigo:
Explicación:
Pruébalo en línea!
fuente
lvyðK{}Q
ahoraRetina, 25
Pruébalo en línea! Además, puede ejecutar una versión modificada de varias líneas .
Elimine letras de antes de la coma junto con sus coincidencias después de la coma. Si no nos quedan letras, entonces fue un anagrama.
fuente
\w
como la última etapa.\W
no funcionará para el caso de:Calvins Hobbies, Calvin's Hobbies
Pyth,
1110 bytes¡Gracias a @FryAmTheEggman por enseñarme el poder de
;
!Pruébalo aquí!
Toma una lista de dos cadenas como entrada.
Explicación
fuente
Python 2,
6361 bytes¡Una función anónima que, de hecho, toma n argumentos y determina si todos n son palíndromos mutuos!
f("Lynn", "Nyl N")
vuelveTrue
.Este truco de comprensión es de xnor. Ahorró dos bytes, pero el viejo enfoque parecía muy ordenado:
fuente
`sorted(input().lower())`.strip(" [',")
es la misma duración: /exec
cosa es inteligente pero parece demasiado compleja. Puedes hacerlo mejor conlambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
.Jalea, 12 bytes
Pruébalo en línea!
Cómo funciona
Versión alternativa, no competitiva (9 bytes)
El átomo en mayúscula de Jelly tenía un error, y Jelly todavía no tenía incorporado para probar las listas de igualdad ...
Pruébalo en línea!
Cómo funciona
fuente
CJam, 11
1214bytes3
2bytes eliminados gracias a @FryAmTheEggmanPruébalo en línea!
fuente
lel
.lel
==>1e1
Nadie lo sabe. Es un misterio.Javascript,
69616059 bytes1 byte off gracias @ ӍѲꝆΛҐӍΛПҒЦꝆ . 1 byte apagado con curry ( señalado por @apsillers )
Mostrar fragmento de código
fuente
n=>m=>...
n=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)
. Usar la división en lugar de la coincidencia debería ahorrarle un byte.s='db cz'
... Ahora da como resultado ... y da como resultados.match(/\S/g)
.sort()
['b','c','d','z']
s.split(/\s/).sort()
['cz','db']
MATL , 11 bytes
EDITAR (20 de mayo de 2016) El código en el enlace se usa en
Xz
lugar deXv
, debido a cambios recientes en el idioma.Pruébalo en línea!
fuente
En serio,
119 bytes¡Pruébelo en línea!
Todos parecen estar usando el mismo algoritmo. Aquí está de nuevo.
Editar: la clasificación realizada funciona correctamente en las cadenas y ordena los espacios al frente para que la tira () funcione.
fuente
C, 165 bytes
Legible y en contexto de trabajo,
fuente
zsh, 85 bytes
Entrada como argumentos de línea de comando, salida como código de retorno.
La
for
sintaxis hace que este Bash sea incompatible.fuente
Japt, 12 bytes
¡Pruébelo en línea!
Cómo funciona
fuente
GNU Sed, 33
La puntuación incluye +2 para las
-rn
opciones de sed.Esto es casi un puerto directo de la respuesta de Retina de @ FryAmTheEggman :
Ideona
fuente
Perl,
3433 + 1 = 34 bytesRequiere la
-n
bandera y la libre-M5.010
|-E
:Cómo funciona:
Gracias a msh210 por sugerir el uso de operadores ternarios para guardar un byte
fuente
Baloch Gyr , 9 bytes
Pruébalo en línea!
La salida de verdad / falsedad se logra a través del éxito / fracaso del predicado, siendo Brachylog.
Anteriormente guardé un byte usando en
cṇ₁cḷḍ
lugar de{ṇ₁cḷ}ᵐ
bajo el supuesto de que las dos cadenas de entrada tendrían la misma longitud menos el espacio en blanco, pero me di cuenta de que tendría éxito donde debería fallarAh Hass, haha
.fuente
PHP,
10994 bytesBlech, los dos
function/return
s me están matando aquí.Devuelve la diferencia entre dos
string
entradas como unarray
de caracteres. PHP considera[]
falsa, satisfaciendo losreturn
requisitos.fuente
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}
-> 75 bytes. Crea una función anónima que devuelve el resultado. Eliminé esa función larga y reemplacé las llamadasstr_split
con una variable asignada, para acortarla.Bash + utilidades GNU, 51
f()
que:${@^^}
convierte todos los parámetros a mayúsculasfold -1
divide caracteres - uno por líneasort
líneas sdiff
con-q
para suprimir la salida de diferencias completas e-Bw
ignorar los cambios de espacios en blancofuente
Pyke (commit 30, no competitivo), 9 bytes
Explicación:
fuente
Mathematica,
7776 bytes¡La primera parte es en realidad una de mis respuestas a otra pregunta!
fuente
Pike,
5411210910996 bytesmixed
pasa a ser más corto quearray(string)
.s
devuelve1
si sus argumentos son anagramas.fuente
Q, 25 bytes
NOTA.- el conteo incluye el nombre de la función f: para facilitar las pruebas (como lambda podemos disminuir 2 Bytes)
Versión legible
coincidir sobre {ascendente no nulo inferior x} cada x
Prueba
genera (1b = verdadero, 0b = falso)
Acerca de Q
Lenguaje de propósito general (derivado de APL, especializado en procesamiento de datos) desarrollado por kx.com. Versión gratuita de evaluación funcional completa para Windows / Linux / MacOS.
fuente
f
se requiere que el código se evalúe correctamente, entonces debe contarse. De lo contrario, simplemente déjelo fuera de su código de envío y úselo solo en ejemplos para mostrar cómo asignar la función.k)~/{x@<x:_x@&~^x}'
durante 17 bytes .. pero yo diría que es 19, como se necesita elk)
soporte, ya que esK
código en lugar deQ
...APL, 31 caracteres
Para ser utilizado así:
En inglés:
{ ... }¨⍵
: para cada uno de los dos elementos del argumentox←('.'⎕R'\u0')⍵~' '
: transforma a mayúsculas (usando una expresión regular ...) la cadena sin espacios y asigna el resultado temporal ax
x[⍋x]
: ordenar x≡/
: compara los dos resultados de la clasificación: si coinciden, devuelve 1.fuente
f 'first avatar' 'second avatar'
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'
da 1.Java, 218 bytes
Primera vez que escribo Java ...
Golfizado:
Sin golf:
Pruebas:
fuente
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 ) O si lo convierte a un Java 8 lambda, puede 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 ). Aquí hay un TIO con código de prueba.Japt , 10 bytes
Intentalo
fuente
Ruby, 50 bytes.
Escribir
f=->{...}
yf[]==f[]
es igual de largo. :(fuente
PowerShell, 81 bytes
Una ligera reescritura de mi respuesta sobre el desafío Anagrama vinculado.
Toma datos como matrices de caracteres, realiza una
-replace
operación para eliminar espacios,sort
los ordena (que se ordena alfabéticamente, no por valor ASCII), luego-join
los vuelve a formar una cadena. En-eq
PowerShell, por defecto, no distingue entre mayúsculas y minúsculas, pero aquí debe realizarse en cadenas, ya[char]'a'
que no es igual[char]'A'
, de ahí la razón-join
.fuente
Perl, 35 bytes
Incluye +1 para
-p
Algo abusivo ya que depende del programa que se da en la línea de comandos.
Luego dé las cuerdas como 2 líneas consecutivas en STDIN
Una solución muy abusiva es de 30 bytes:
Esto se bloquea si las cadenas no son anagramas y, por lo tanto, proporciona un código de salida falso desde el punto de vista del shell. También da basura en STDERR para ese caso. Si las cadenas son anagramas, el programa es silencioso y proporciona un código de salida "verdadero"
fuente
PHP , 89 bytes
Pruébalo en línea!
PHP , 94 bytes
Pruébalo en línea!
fuente
Excel VBA, 122 bytes
Ventana inmediata anónima de VBE Función que toma la entrada del rango
[A1:B1]
y las salidas a la ventana inmediata de VBEfuente
C #, 378 bytes
Necesito una discapacidad!
https://dotnetfiddle.net/FNDt0E
fuente
#
a la primera línea. También para preguntas sobre códigos de golf es necesario jugar golf en su programa. Para empezar, debe eliminar espacios en blanco innecesarios y usar nombres de variables de un solo carácter. Además, siempre puede usar una función en lugar de un programa completo (a menos que esté explícitamente prohibido) para guardar algunos bytes más.