Después de ingresar una cadena [longitud 1-20], que solo contiene los caracteres y para sí yn para no, su programa debería generar el resultado (y o n). Entrada de ejemplo: yynynynny
daría salida y.
El resultado se determina combinando las y's yn's de la siguiente manera:
Y es y n o iguales n o
Y es y Y es igual a Y ES
n o y n o es igual a y es
Si la cadena contiene más de 2 caracteres (probablemente ...), el cálculo se vería igual. Ejemplos:
Y es e Y es y n o iguales n O (porque no hay fusiones con las de los primeros sí a NO. Luego están no y sí a la izquierda y pasa lo mismo otra vez)
n o y n o y n o es igual a n o (los dos primeros no se fusionan con yes, luego quedan yes y no, que emergen en no)
Ejemplo de entrada con salida:
yynynynynyyn
= n
Consejo: tenga en cuenta que no le importa el orden de los caracteres de su programa. (por ejemplo, puede leer la entrada desde atrás, o desde atrás, mezclar las letras, ordenarlas, lo que sea. Lo que cuenta es la salida correcta) ¡diviértase!
Criterio ganador: este es el código de golf , por lo que el código más corto en bytes gana
fuente
1
pory
y0
paran
.["y", "n", "n"]
Respuestas:
Carbón de leña , 6 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Octava ,
2927 bytesGracias a @RickHithcock por señalar un error, ahora corregido. Además, ¡2 bytes de descuento gracias a @StewieGriffin!
Pruébalo en línea!
Explicación
El punto de código ASCII de
'y'
es impar, y el de'n'
es par. El código1
a cada carácter en la cadena de entrada para hacer'y'
pares e'n'
impares;1
si es par,2
si es impar;'yn'
.fuente
JavaScript (ES6), 28 bytes
Toma la entrada como una cadena.
Pruébalo en línea!
JavaScript (ES6), 30 bytes
Toma la entrada como una matriz de caracteres.
Pruébalo en línea!
fuente
s=>'yn'[s.match(/n/g).length&1]
Pn
.Haskell ,
3328 bytesIndiza el recuento de n en la lista infinita "ynynynyn ...". El enfoque anterior (33 bytes) era doblar pares de diferentes elementos a n, de lo contrario y:
Pruébalo en línea!
fuente
Jalea , 7 bytes
Pruébalo en línea!
ċ número de "n , ị ndex en la cadena ⁾ny . (con módulo 2)
Pruébalo en línea!
{ ċ cantidad de, tome la Ḣ ead, luego ị ndex en} cadena ⁾ny .
Pruébalo en línea!
Similar a la respuesta de Octave anterior. Calcule el valor de O rd, tome el complemento C (para cada valor ord x calcule 1-x ), S um, luego ị ndex en la cadena ⁾ny .
fuente
APL (Dyalog Unicode) , 15 bytes
Pruébalo en línea!
Nota: TIO por defecto es
⎕IO = 1
. Si corre con⎕IO←0
,APL (Dyalog Unicode) , 13 bytes
Pruébalo en línea!
Esta es la función XNOR (a veces llamada EQV, especialmente en los BASIC antiguos.
Descomposición / Análisis:
fuente
Pyth, 9 bytes
Pruébalo aquí
Explicación
fuente
dc , 39
La cadena de entrada se lee desde STDIN y debe tener el formato
[yynynynynyyn]
.DC no es conocido por su manejo de cadenas, pero aquí tenemos suficiente para que esto funcione. El enfoque aquí es contar los
n
s, y la saliday
si es par on
impar. Esto se realiza ejecutando la cadena de entrada como una macro.dc
generará'y' (0171) unimplemented
errores para todos losy
s e intentará desplegar cadenas e imprimirlas para todos losn
s. Entonces, primero nos aseguramos de tener un montón (longitud de cadena de entrada total) de cadenas vacías[]
en la pila para hacer estallar. Luego ejecutamos la cadena de entrada y vemos cuántos[]
quedan en la pila. La longitud de la cadena original se resta de esto para dar el número total (-ve) den
s. El resto es aritmético para hacer mod 2 y hacer que la salida salga como ASCIIy
on
.Pruébalo en línea!
fuente
Japt , 8 bytes
Pruébalo en línea!
Explicación:
Japt usa el ajuste de índice, por lo que si
Uèn
devuelve2
, volveráy
al obtener el carácter de"yn"
.fuente
Perl 6 , 21 bytes
Intentalo
Expandido:
fuente
Python 2 , 29 bytes
Pruébalo en línea!
fuente
Java 8, 35 bytes
¡Un decisivo para un lenguaje normal! Yo puedo hacer eso.
Pruébalo en línea
fuente
J ,
109 bytesPruébalo en línea!
fuente
{&'ny'@=/
Guarda un byte.R ,
4644 bytesPruébalo en línea!
Bajó 2 bytes gracias a Giuseppe y ngm. Port of the Octave respuesta de Luis Mendo.
fuente
sum(utf8ToInt(scan(,""))%%2)%%2
ahorra un byte.n
aún tiene que agregar + 1 primero ..Japt, 9 bytes
Oliver me ganó con la solución más corta, así que aquí hay un par que son solo un byte más.
Intentalo
Intentalo
Explicaciones
fuente
/// , 24 bytes
Pruébalo en línea!
Creo que este es el programa /// más corto posible, ya que hacer una sustitución de un carácter es inútil (si inserta algo en su lugar) o evita que sea una salida (si no inserta nada). Sin embargo, dado que el programa debe tratar los casos de dos caracteres, esto debería ser mínimo.
Primero elimina todos
y
los derechos de unn
. Luego reemplaza el doblen
s pory
s, aprovechando la sustitución LTR. En esta etapa hay muchosy
s seguidos de a lo sumo unon
; deduplicamos ely
s y si hay unn
uso, lo trapeamos hasta el últimoy
.fuente
MATL , 8 bytes
Pruébalo en línea!
¡Ahorré 2 bytes gracias a Luis Mendo! Anteriormente utilicé el comando de módulo explícito para obtener el índice en el rango
1,2
.Explicación
Esto utiliza el hecho de que MATL tiene indexación modular, lo que significa que el 1er, 3er, 5to ... elemento de la cadena
ny
son los mismos (n
). Así son el 2do, 4to, 6to ... elemento de la cadena (y
).fuente
'yn'3)
day
...? Ahora que es un diseño inteligente Luis =) ¡Gracias por los consejos! :)Python 2 , 26 bytes
Pruébalo en línea!
fuente
Retina , 11 bytes
Pruébalo en línea!
fuente
Jalea ,
87 bytesPruébalo en línea!
fuente
Ẉ
se puede usar en lugar deL€
.05AB1E , 8 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) , 143 bytes
Pruébalo en línea!
Y si tomamos la entrada como una lista:
Java (OpenJDK 8) , 118 bytes
Pruébalo en línea!
Explicación:
(entrada como cadena)
fuente
char[]u
(-1 byte); yif(u.length==1)
puede serif(u.length<2)
(-1 byte). Probablemente hay más para el golf, pero realmente no tengo tiempo en este momento. :)Rubí , 24 bytes
Pruébalo en línea!
Una lambda que toma una cuerda y la devuelve.
fuente
Cubix ,
2420 bytesHa pasado un tiempo desde que jugué con Cubix, así que ...
Pruébalo en línea!
Implementación bastante ingenua que recorre la cadena y compara el carácter con el resultado actual.
Demo interactiva
Esto se desenvuelve en el cubo de la siguiente manera
W
shift ip lefti
obtener el personaje iniciali?
obtener caracteres y probar EOI (-1), también inicio del ciclo;o@
elimina TOS, genera TOS como carácter y sale.-W!
restar, desplazar ip hacia la izquierda, probar la verdad'n
empuja el carácter n a TOS|!'y
reflexiona, prueba y empuja el personaje y a TOSv'.;w
redirigir alrededor del cubo empujando y quitando a. carácter y cambio de vuelta al buclefuente
Scala, 50 bytes
fuente
Befunge-98 , 13 bytes
Pruébalo en línea!
Básicamente invierte un 0 para cada
n
entrada, y una vez más para una buena medida, luego emitey
para1
yn
para0
fuente
Limpio ,
2623 bytesPruébalo en línea!
fuente
foldr1\a b|a==b='y'='n'
. (Por cierto, por desgracia, por lo general las importaciones son parte del código de bytes.)JavaScript,
3937 bytesFunción de reducción simple después de dividir la cadena de entrada.
fuente
s
, que no es un método de entrada válido aquí. En su lugar, puede hacer que su respuesta sea una función lambda tomando la entrada como argumento al anteponers=>
su respuesta a 42 bytes.s.split('')
con[...s]
de 37 bytes:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
5250 bytesGracias a @Neil por las sugerencias.
Tomé prestada la solución de contar
n
s, pero en lugar de mantener un conteo, simplemente cambio entre el estado inicial y su inverso en unn
.Pruébalo en línea!
fuente
*a&1?0:23
guarda un byte yreturn i
guarda otro.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Kotlin , 32 bytes
Pruébalo en línea!
fuente