Inspirado por ¿El comienzo es igual al final?
Dada una cadena s
y un número entero n
, genera una verdad / falsa en cuanto a si el n
th char en s
es igual al n
th desde el final char en s
.
Entrada
Una cadena no vacía y un entero. Puede usar la indexación basada en 0 o la indexación basada en 1. Se garantiza que el entero sea válido según la cadena. Por ejemplo, si la cadena es "supercalifragalistic123", el número entero puede ser del 1 al 23 para la indexación basada en 1, y del 0 al 22 para la indexación basada en 0. Tenga en cuenta que n
puede ser mayor que la mitad de la longitud de s
.
La entrada está limitada a ASCII imprimible.
Salida
Un valor verdadero / falso basado en si el n
valor th en s
es igual al n
valor th desde el último valor en s
.
Tenga en cuenta que el último carácter está en la posición 0 para la indexación basada en 0 y en la posición 1 para la indexación basada en 1. Piense en ello como comparar la cadena con su reverso.
Casos de prueba
0 indexado
"1", 0 Truthy 1 == 1
"abc", 1 Truthy b == b
"aaaaaaa", 3 Truthy a == a
"[][]", 1 Falsey ] != [
"[][]", 0 Falsey [ != ]
"ppqqpq", 2 Truthy q == q
"ababab", 5 Falsey a != b
"12345", 0 Falsey 1 != 5
"letter", 1 Truthy e == e
"zxywv", 3 Falsey w != x
1 indexado
"1", 1 Truthy 1 == 1
"abc", 2 Truthy b == b
"aaaaaaa", 4 Truthy a == a
"[][]", 2 Falsey ] != [
"[][]", 1 Falsey [ != ]
"ppqqpq", 3 Truthy q == q
"ababab", 6 Falsey a != b
"12345", 1 Falsey 1 != 5
"letter", 2 Truthy e == e
"zxywv", 4 Falsey w != x
n
como un punto de código? (para idiomas esotéricos como brain-flak)Respuestas:
Jalea ,
54 bytesPruébalo en línea!
No debería haber respuestas más cortas en Jelly. Un programa necesitaría comparación, inversión / negación, una llamada de índice y un byte para el flujo de control (
Ɠ
en este caso), que agrega hasta cuatro bytes.Cómo funciona
-1 byte gracias a @ ais523, usando
Ɠ
fuente
ịµU=
³
, ya queƓ
cuesta un byte pero lo hace³
implícito y, a menudo, le brinda más flexibilidad de flujo de control.JavaScript (ES6), 26 bytes
Alternativamente:
Este casi funciona, pero falla cuando
n == 0
(porques.slice(-1,0) == ""
):Otra solución de 26 bytes que @RickHitchcock señaló:
fuente
~
, nunca habría pensado en eso para esto.MATL , 5 bytes
Pruébalo en línea!
Explicación:
fuente
Octava , 22 bytes
Pruébalo en línea!
O el mismo bytecount:
Pruébalo en línea!
Explicación:
Es bastante sencillo. El primero toma una cadena
s
y un enteron
como entradas y comprueba el elementos(n)
n- ésimo contra el elemento "last-n + 1" para la igualdad.El segundo verifica el enésimo elemento
s(n)
contra el enésimo elemento des
invertido.fuente
05AB1E ,
75 bytes-2 bytes gracias a Adnan
Pruébalo en línea! o prueba todas las pruebas
Pruébalo en línea!
fuente
ÂøsèË
ahorra dos bytesHaskell, 22 bytes
0-basd. Ejemplo de uso:
"letter" # 1
->True
.Pruébalo en línea!
fuente
Alice , 24 bytes
Pruébalo en línea!
La entrada consiste en la cadena en una línea y el número en la segunda línea. La salida es
Jabberwocky
si los caracteres son iguales, y nada de lo contrario.Explicación
Este programa está principalmente en modo ordinal, con un comando en modo cardinal. Linealizado, el programa es el siguiente:
fuente
Python ,
2422 bytes-2 bytes gracias a Adnan.
Pruébalo en línea!
fuente
-n-1
por~n
.Cubix , 22 bytes
1 indexados, toma la entrada como
index
,string
, separadas por un espacio.Pruébalo en línea
Cubified
Explicación
Esto es principalmente lineal. La lógica principal es
A continuación, rama con
?
alO
utput1
si el resultado es 0 y0
lo contrario.fuente
Java 8,
4342 bytesPruébalo aquí
fuente
C #,
2827 bytesSalvó un byte gracias a @KevinCruijssen.
Compila a a
Func<string, Func<int, bool>>
.fuente
s.Length-n-1
as.Length+~n
.CJam , 8 bytes
Pruébalo en línea!
El índice indexado 0 va primero.
fuente
R 51 bytes
Función anónima, utiliza indexación basada en 1
fuente
function(s,n)(s=utf8ToInt(s))[n]==rev(s)[n]
Ruby,
222018 bytesfuente
->s,n{s[n]==s[~n]}
debería funcionar? (No tengo idea de rubí)Clojure, 27 bytes
Wow, esto fue más corto de lo que esperaba.
fuente
APL (Dyalog) ,
105 bytesEsta es una función tácita, a la que se le debe asignar un nombre como
f←⊃=⊃∘⌽
, y luego llamar comoint f string
.Gracias a @ Adám por la friolera de 5 bytes.
Cómo funciona:
Pruébalo en línea!
La respuesta de 22 bytes fue editada. Si quieres verlo, revisa el historial de revisiones.
fuente
1
como argumento izquierdo predeterminado. Pruébalo en línea! Las funciones no asumen nada; se aplican de forma diádica porque se les da un argumento a la izquierda y a la derecha.⊃
toma el primer elemento del argumento. De todos modos, editaré para aclarar.V ,
26, 16, 13 bytesPruébalo en línea!
Hexdump:
1 indexado.
Explicación:
Como referencia, mi respuesta original fue:
Pruébalo en línea! (0 indexado)
Hexdump:
fuente
Àñx$x|ñ
siente como demasiados personajes. Intenté una expresión regular solamente, ¡pero terminó siendo como 24 de largo!Mathematica, 34 Bytes
fuente
StringTake[#, #2]
toma los primeros#2
caracteres de#
.StringPart
funcionaría bien en este caso.#~(s=StringPart)~-#2==s@##&
#~s~{#2}==#~s~{#2}&
siempre cederíaTrue
...List
deString
s como entrada, por lo que#[[#2]]==#[[-#2]]&
bastaríaPerl 6 , 27 bytes
Pruébalo
fuente
PHP> = 7.1, 36 bytes
Versión en línea
fuente
~+$p
ahorra un byte.Pyth ,
87 bytesCon la entrada invertida: primero el índice, luego la cadena. Está indexado a 0.
Explicaciones:
Pruébalo en línea!
fuente
Lua, 46 bytes
Pruébalo en línea!
fuente
s
, y también necesita emitirlaJ, 6 bytes
-4 bytes gracias a FrownyFrog
Vea la explicación de la respuesta original: la idea es lo suficientemente similar, pero esto se logra con un gancho diádico cuyo verbo derecho es en sí mismo un gancho monádico.
Pruébalo en línea!
respuesta original (10 bytes)
,:|.
argumento derecho encima de argumento inverso derecho=/
¿son iguales por elementos?{
tomar de esa lista booleana el índice indicado por el argumento izquierdoPruébalo en línea!
fuente
C,
3635 bytesUtiliza indexación basada en 0, naturalmente.
Pruébalo en línea!
fuente
-1-n
puede ser+~n
.Japt ,
10 98 bytesPruébalo en línea!
fuente
QBIC , 18 bytes
Explicación
fuente
CJam, 11 bytes
Malo. Demasiada manipulación de la pila.
fuente
> <> (con este intérprete), 25 bytes
No funciona en TIO: el intérprete de TIO no invierte la nueva pila al hacer el
[
instrucción, pero el área de juegos para peces sí lo hace: compare"abcde"5[ooooo;
correr aquí y aquí , por ejemplo.La entrada de cadena se toma de STDIN, y suponemos que n ya está en la pila. Utiliza 1-indexación.
El pescado se pone el n º con carácter
[:}]&
, que desvía la primera n cosas en la pila en una nueva pila invertida, manipula eso un poco, a continuación, pone las cosas atrás y guarda el n º carácter en el registro. Luego invierte toda la pila y vuelve a hacer lo mismo, y devuelve 1 si los dos caracteres son iguales, y 0 en caso contrario.Esto parece funcionar en TIO , para 26 bytes:
fuente
C, 73 bytes
Compila tal cual con GCC 6.3.1 (sin banderas). Algunas ofuscaciones innecesarias incluidas.
Uso
Verdad = nada, falsey = basura.
fuente
Lua , 35 bytes
Utiliza 1-indexación.
Pruébalo en línea!
fuente