En un desafío anterior, le pedí a los golfistas de código que produjeran cadenas que copiaran cada carácter en una cadena. Por ejemplo:
TThhiiss iiss ddoouubbllee ssppeeaakk!!
Este desafío es simplemente detectar si algún texto cumple con la definición de una cadena de doble voz.
- Hay un número par de caracteres.
- Cuando se divide en pares, cada par consta de dos del mismo personaje.
El reto
- Es código de golf, hazlo en pocos bytes.
- Utiliza el idioma que elijas.
- Incluya un enlace a un intérprete en línea.
- El código aceptará algún texto.
- Para simplificar, la entrada solo consistirá en caracteres ASCII imprimibles
- Devolverá una indicación de si la entrada es de doble voz. Podría ser:
- Un booleano
- Cadenas ('verdadero', 'falso', 'sí', 'no', etc.)
- Enteros 0 o 1
Casos de prueba:
- aba - falso
- abba - falso
- aabb - cierto
- aaabb - falso
- tthhiiss - cierto
- ttthhhiiisss - falso
code-golf
string
decision-problem
AJFaraday
fuente
fuente

abbaque debería ser falseyaabbbbque debería ser sincero0que debería ser falsey.Respuestas:
Python 3 , 24 bytes
Pruébalo en línea!
fuente
brainfuck , 20 bytes
Guardado 1 byte gracias a Jo King.
Pruébalo en línea!
Salida legible!
Toma la entrada de dos caracteres a la vez y se aleja del 1 en la cinta si algún par no coincide. EOF se trata como 0 y, por lo tanto, se maneja automáticamente.
La salida es un byte nulo si la cadena no es de doble habla, y 0x01 si lo es. La versión legible los genera como caracteres a un costo de 14 bytes.
fuente
MATL , 4 bytes
La entrada es una cadena, encerrada con qoutes individuales. La salida es
0para doble hablar, de lo1contrario.Pruébalo en línea!
Explicación
Considere la entrada
'TThhiiss iiss ddoouubbllee ssppeeaakk!!'como un ejemplo.fuente
05AB1E ,
652 bytesEntrada como una lista de caracteres.
-3 bytes portando la respuesta de @ Shaggy's Japt , ¡así que asegúrate de votarlo!
Pruébelo en línea o verifique algunos casos de prueba más .
Explicación:
fuente
Japt , 4 bytes
Intentalo
Alternativa
Intentalo
fuente
Retina , 9 bytes
Pruébalo en línea.
Explicación:
Elimina todos los pares de los mismos personajes:
Comprueba si no quedan caracteres:
fuente
^$como su etapa final.falsesalir como verdadero ytruefalso (pero si guarda un byte y está permitido, aún lo usaré). ;) Pero como se trata de una solución de bytes iguales que genera los resultados esperados, es mejor.Jalea , 3 bytes
Pruébalo en línea!
fuente
¹©s2L€=2Ạa®s2E€Ạ...ḢƝs2E€Ạ... pero no pude conseguir lo que quería, y luego viŒœlolStax , 5 bytes
Ejecutar y depurarlo
Procedimiento:
fuente
PHP ,
5856 bytesPruébalo en línea!
Como una función recursiva.
PHP ,
615652 bytesPruébalo en línea!
O programa independiente. Cadena de entrada vía
STDIN, la salida estruthy(1) si es de doble habla yfalsey(0) si no es de doble habla.-4 bytes gracias a @ Night2 !
fuente
código de máquina x86,
9 97 bytesCadena de
SIentrada, longitud de cadena de entradaCX. SalidaZFsi es doble hablar.O 14 bytes como un ejecutable completo de PC DOS:
La entrada es vía
STDIN, ya sea tubería o interactiva. Se hará eco de la entrada "desdoblada" hasta que se detecte un carácter no doblado, en cuyo punto saldrá (tal vez flexionar las reglas de E / S un poco, pero esto es solo una respuesta adicional).Compile y pruebe ISDBL2.COM usando
xxd -r:Original ejecutable de PC de DOS de 24 bytes completo:
Entrada desde la línea de comando, salida a la pantalla
'Y'si es doble,'N'si no.Compile y pruebe ISDBL.COM usando
xxd -r:Créditos
fuente
LOOPElugar deJNZ/LOOPpara guardar 2 bytes.Lua ,
676663593332 bytes-25 bytes gracias a Giuseppe
-1 byte gracias a val
Pruébalo en línea!
Elimina todos los caracteres duplicados, luego verifica si el resultado está vacío.
fuente
i:gsub("(.)%1","")y comprobar sii==""?"(.)%1"por sí solo incluía colisiones, pero no se me ocurrió que reemplazarlo de una vez para todas las capturas sería suficiente. ¿Debo implementar su solución o debería escribir su propia respuesta? ¡Y gracias!arg[1]se puede reemplazar con(...)para guardar un byte.Perl 5 , 15 bytes
Pruébalo en línea!
Salidas 1 para doble habla, nada para no doble hablar.
fuente
MathGolf , 2 bytes
Pruébalo en línea!
Básicamente lo mismo que la respuesta 05AB1E,
½divide la cadena en caracteres pares e impares, luego verifica la igualdad. Pases para la cadena vacía.fuente
JavaScript, 28 bytes
Pruébalo en línea!
23 bytes usando la expresión regular de wastl
Pruébalo en línea!
fuente
nullpara falso: ¡ Pruébelo en línea!s=>!s.some((x,y)=>x>s[y|1])>con!=Haskell ,
2823 bytesPruébalo en línea!
Muy sencillo El doble discurso solo está vacío o un carácter repetido antepuesto al doble habla.
Menos sencillo ahora. Salidas por presencia o ausencia de un error, por meta consenso ; sin error significa doble hablar. La coincidencia de patrones falla cuando los dos primeros caracteres difieren o cuando hay un número impar de caracteres. ¡Gracias a Laikoni por estos ahorros!
fuente
V (vim) , 7 bytes
Pruébalo en línea! o Verificar casos de prueba
Hexdump:
Solo dos expresiones regulares. Explicación:
fuente
Brachylog , 5 bytes
Pruébalo en línea!
Tiene éxito o falla.
fuente
PowerShell ,
3938 bytesPruébalo en línea!
donde
$pcontiene un carácter anterior.Sin recursividad , sin expresiones regulares :). Toma la entrada como una matriz de caracteres a través de una cadena de salpicaduras (ver enlace TIO).
PowerShell , 48 bytes
Pruébalo en línea!
Sin recursividad , sin expresiones regulares y sin tubería: D. También toma la entrada como una matriz de caracteres a través de una cadena de salpicaduras. En su
$b-eq$alugar, se usa$a-eq$bpara un caso en el que un último personaje tiene el código # 0.fuente
PowerShell ,
6459 bytesPruébalo en línea!
Función recursiva, no regex. Toma la entrada como una
charmatriz (ver enlace TIO). Despega los primeros dos elementos en$ay$b, almacena el resto en$r. Si todavía tenemos elementos restantes, recurse junto con$a -eq $b. De lo contrario, solo verifique si$a -eq $b. La salida es implícita.-5 bytes gracias a mazzy
fuente
$bloque de declaración anterior y no podía entender por qué no estaba funcionando.Julia 1.0 , 25 bytes
Pruébalo en línea!
fuente
f, por ejemplo!a=.... O para usar una función anónima:s->...J ,
131110 bytesPruébalo en línea!
-2 bytes gracias a Adám
-1 byte gracias a millas
Explicación de TLDR: ¿la entrada es la misma que cualquier otro carácter de la entrada duplicada?
fuente
-:]#~2 0$~#-:2#_2{.\]debería guardar otro byteLenguaje de programación Shakespeare ,
204156bytes-48 bytes gracias a Jo King (principalmente cambiando el método de salida)
Pruébalo en línea!
Sale con error si la entrada es de doble voz, y con advertencia si no es de doble voz (lo cual está permitido por defecto).
fuente
Barril ,
1917 caracteresExplicación:
Pruébalo en línea!
fuente
R ,
5334 bytes-19 bytes gracias a Giuseppe
Pruébalo en línea!
fuente
gsub("(.)\\1","",a)==""que también haría el truco; muchos otros usan la misma expresión regular.function(a)!sum(rle(a)$l%%2)para 28Brain-Flak ,
26, 22 bytesPruébalo en línea!
Salidas 1 para falso y 0 para verdadero.
Versión legible:
Originalmente tuve esto:
Que es 10 bytes más largo.
fuente
({({}[{}]){{}}{}})QuadR , 11 bytes
Pruébalo en línea!
''≡⍵el resultado es una cadena vacía cuando(.)\1un personaje seguido soloes reemplazado por nadafuente
JavaScript,
2623 bytesPruébalo en línea!
Solución recursiva, 30 bytes
Gracias a Arnauld por una solución al costo de 0 bytes.
Pruébalo en línea!
fuente
Rojo , 36 bytes
Pruébalo en línea!
Alternativa más larga:
Rojo , 40 bytes
Pruébalo en línea!
fuente
Zsh , 36 bytes
Sale de verdad (0) si NO habla dos veces, y falso (1) si habla dos veces. (Según lo permitido en un comentario).
Pruébalo en línea!
fuente
Prólogo (SWI) ,
6045 bytesgracias a Cadena no relacionada
Pruébalo en línea!
Convertirlo de una cadena a una lista de átomos arruinó el puntaje, pero bueno ...
fuente
atom_charslugar destring_chars, aunque estés tomando una cadena como entrada, y no un átomo. Pero eso puede ser irrelevante si puede tomar una cadena delimitada por retroceso, es decir, una lista de códigos de caracteres.