Depois de inserir uma string [comprimento 1-20], contendo apenas os caracteres y para yes en para não, seu programa deve gerar o resultado (y ou n). Exemplo de entrada: yynynynny
geraria y.
O resultado é determinado pela combinação de y e n da seguinte maneira:
y es e n o igual a n o
y es e y es é igual a y es
n o e n o é igual a y es
Se a sequência contiver mais de 2 caracteres (provavelmente ...), o cálculo será o mesmo. Exemplos:
y es e y es e n o igual a n (porque o no se funde com o primeiro sim a não. então não há nenhum e sim sobrando e a mesma coisa acontece novamente)
n o e n o e n o é igual a n (os dois primeiros não se fundem em sim, então há sim e não sobrando, que emergem em não)
Exemplo de entrada com saída:
yynynynynyyn
= n
Dica: lembre-se de que a ordem dos caracteres do seu programa não funciona. (por exemplo, você pode ler a entrada de trás ou de trás, misturar as letras, classificar, o que for. O que conta é a saída correta) divirta-se!
Critérios de vitória: trata-se de código-golfe , pelo que o código mais curto em bytes ganha.
fonte
1
paray
e0
paran
.["y", "n", "n"]
Respostas:
Carvão , 6 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
Oitava ,
2927 bytesObrigado a @RickHithcock por apontar um erro, agora corrigido. Além disso, com 2 bytes de desconto, graças a @StewieGriffin!
Experimente online!
Explicação
O ponto de código ASCII de
'y'
é ímpar e o de'n'
é par. O código1
a cada caractere na sequência de entrada para tornar'y'
par e'n'
ímpar;1
se for par,2
se for ímpar;'yn'
.fonte
JavaScript (ES6), 28 bytes
Recebe a entrada como uma sequência.
Experimente online!
JavaScript (ES6), 30 bytes
Recebe a entrada como uma matriz de caracteres.
Experimente online!
fonte
s=>'yn'[s.match(/n/g).length&1]
Pn
.Haskell ,
3328 bytesIndexa a contagem de n na lista infinita "ynynynyn…". A abordagem anterior (33 bytes) foi dobrar pares de elementos diferentes para n, caso contrário y:
Experimente online!
fonte
Geléia , 7 bytes
Experimente online!
não número de ”n , ” ndex na string ⁾ny . (com módulo 2)
Experimente online!
{ Ċ número ount de, pegue a H ead, então I NDEX em} corda ⁾ny .
Experimente online!
Semelhante à resposta do Octave acima. Calcular O rd valor, tomar a C omplement (para cada valor ord x calcule 1-x ), S um, então i NDEX em cadeia ⁾ny .
fonte
APL (Dyalog Unicode) , 15 bytes
Experimente online!
Nota: O TIO é padronizado como
⎕IO = 1
. Se executado com⎕IO←0
,APL (Dyalog Unicode) , 13 bytes
Experimente online!
Essa é a função XNOR (às vezes chamada EQV, especialmente em BASICs antigos.
Decomposição / Análise:
fonte
Pitão, 9 bytes
Experimente aqui
Explicação
fonte
dc , 39
String de entrada é lida a partir do STDIN e deve ser na forma
[yynynynynyyn]
.dc não é conhecido por seu tratamento de strings, mas temos aqui o suficiente para fazer com que isso funcione. A abordagem aqui é contar os se a
n
saíday
for par oun
ímpar. Isso é feito executando a sequência de entrada como uma macro.dc
irá gerar'y' (0171) unimplemented
erros para todos os sey
tentar pop strings e imprimi-los para todos osn
s. Portanto, primeiro garantimos que temos (comprimento total da string de entrada) de strings vazias[]
na pilha para aparecer. Em seguida, executamos a string de entrada e vemos quantas[]
restam na pilha. O comprimento da string original é subtraído para fornecer o número total de (-ve)n
s. O resto é aritmético para fazer o mod 2 e ter a saída correta como ASCIIy
oun
.Experimente online!
fonte
Japonês , 8 bytes
Experimente online!
Explicação:
O Japt usa quebra de índice, portanto, se
Uèn
retornar2
, retornaráy
ao obter o char"yn"
.fonte
Perl 6 , 21 bytes
Tente
Expandido:
fonte
Python 2 , 29 bytes
Experimente online!
fonte
Java 8, 35 bytes
Uma decisão para uma linguagem regular! Eu posso fazer isso.
Experimente Online
fonte
J ,
109 bytesExperimente online!
fonte
{&'ny'@=/
salva um byte.R ,
4644 bytesExperimente online!
Abaixo de 2 bytes, graças a Giuseppe e ngm. Porto da Oitava resposta por Luis Mendo.
fonte
sum(utf8ToInt(scan(,""))%%2)%%2
salva um byte.n
é assim mesmo tem que adicionar + 1 em primeiro lugar ..Japonês, 9 bytes
Oliver me levou para a solução mais curta, então aqui estão algumas que são apenas um byte a mais.
Tente
Tente
Explicações
fonte
/// , 24 bytes
Experimente online!
Eu acredito que este é o programa mais curto possível ///, pois fazer uma substituição de um caractere é inútil (se você inserir algo em seu lugar) ou impede que ele seja uma saída (se você não inserir nada). No entanto, como o programa deve lidar com os dois casos de caracteres, isso deve ser mínimo.
Primeiro remove todos os
y
direitos de umn
. Em seguida, substituin
s duplo pory
s, aproveitando a substituição LTR. Nesta fase, existem muitosy
s seguidos por no máximo umn
; desduplicamos osy
se, se houver umn
usá-lo para limpar o últimoy
.fonte
MATL , 8 bytes
Experimente online!
Guardado 2 bytes graças a Luis Mendo! Eu usei anteriormente o comando módulo explícito para obter o índice no intervalo
1,2
.Explicação
Isso usa o fato de que o MATL possui indexação modular, o que significa que o primeiro, terceiro, quinto ... elemento da sequência
ny
é o mesmo (n
). O mesmo ocorre com o 2º, 4º, 6º ... elemento da string (y
).fonte
'yn'3)
dáy
...? Agora que design inteligente Luis =) Obrigado pelas dicas! :)Python 2 , 26 bytes
Experimente online!
fonte
Retina , 11 bytes
Experimente online!
fonte
Geléia ,
87 bytesExperimente online!
fonte
Ẉ
pode ser usado em vez deL€
.05AB1E , 8 bytes
Experimente online!
fonte
Java (OpenJDK 8) , 143 bytes
Experimente online!
E se considerarmos a entrada como uma lista:
Java (OpenJDK 8) , 118 bytes
Experimente online!
Explicação:
(entrada como string)
fonte
char[]u
(-1 byte); eif(u.length==1)
pode serif(u.length<2)
(-1 byte). Provavelmente há mais coisas para jogar golfe, mas eu realmente não tenho tempo agora. :)Ruby , 24 bytes
Experimente online!
Um lambda pegando uma string e retornando uma string.
fonte
Cubix ,
2420 bytesFaz um tempo desde que eu joguei com o Cubix, então ...
Experimente online!
Implementação bastante ingênua que percorre a cadeia e compara o caractere com o resultado atual.
Demonstração interativa
Isso desenrola no cubo da seguinte maneira
W
shift ip lefti
obter o caractere iniciali?
obter caractere e testar EOI (-1), também iniciar o loop;o@
remover os TOS, envie-os como caractere e saia.-W!
subtraia, mude o ip para a esquerda, teste para a verdade'n
pressione o caractere n para TOS|!'y
refletir, teste e envie o caractere y para TOSv'.;w
redirecionar ao redor do cubo empurrando e removendo a. personagem e mudando de volta para o loopfonte
Scala, 50 bytes
fonte
Befunge-98 , 13 bytes
Experimente online!
Inverte basicamente um 0 para cada
n
entrada e, mais uma vez, para uma boa medida, em seguida, geray
para1
en
para0
fonte
Limpo ,
2623 bytesExperimente online!
fonte
foldr1\a b|a==b='y'='n'
. (A propósito, infelizmente, geralmente as importações fazem parte do bytecode.) #JavaScript,
3937 bytesFunção de redução simples após dividir a sequência de entrada.
fonte
s
, que não é um método de entrada válido aqui. Em vez disso, você pode transformar sua resposta em uma função lambda, recebendo a entrada como argumento, acrescentandos=>
à sua resposta 42 bytes.s.split('')
com[...s]
para 37 bytes:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
5250 bytesObrigado a @Neil pelas sugestões.
Peguei emprestada a solução da contagem
n
s, mas, em vez de manter uma contagem, apenas alterno entre o estado inicial e seu inverso em umn
.Experimente online!
fonte
*a&1?0:23
salva um byte ereturn i
salva outro.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Kotlin , 32 bytes
Experimente online!
fonte