CJam , 6 bytes (programa completo) / 7 bytes (bloco de código)
q),^W=
Experimente online!
Este é um programa CJam completo que lê a sequência de entrada da entrada padrão e imprime a letra ausente na saída padrão. CJam realmente não tem "métodos", que é o que o desafio pede, mas o mais próximo provavelmente seria um bloco de código executável, assim:
{),^W=}
Experimente online!
Este bloco de código, quando avaliado, recebe a entrada como uma sequência (ou seja, uma matriz de caracteres) na pilha e retorna o caractere ausente também na pilha.
Explicação: No programa completo, q
lê a sequência de entrada e a coloca na pilha. )
em seguida, aparece o último caractere da sequência de entrada e o operador range o ,
transforma em uma matriz que contém todos os caracteres com pontos de código abaixo (incluindo todas as letras anteriores no alfabeto). Assim, por exemplo, se a entrada foi cdfgh
, depois ),
da pilha conteria as strings cdfg
(ou seja, a entrada com a última letra removida) e ...abcdefg
, onde ...
representa um monte de caracteres com códigos ASCII abaixo a
(ou seja, todos os caracteres abaixo da última entrada removida) carta).
O operador de diferença de conjunto simétrico ^
combina essas cadeias em uma única cadeia que contém exatamente os caracteres que aparecem em uma das cadeias, mas não em ambas. Ele preserva a ordem em que os caracteres aparecem nas seqüências, portanto, para a entrada de exemplo cdfg
, o resultado ),^
será o seguinte ...abe
, onde ...
novamente significa um monte de caracteres com códigos ASCII abaixo a
. Finalmente, W=
apenas extrai o último caractere dessa string, que é exatamente o caractere e
que faltava que queríamos encontrar (e descarta o resto). Quando o programa termina, o intérprete CJam imprime implicitamente o conteúdo da pilha.
Bônus: GolfScript , 6 bytes (programa completo)
),^-1>
Experimente online!
Acontece que quase o mesmo código também funciona no GolfScript. Economizamos um byte na versão completa do programa devido à entrada implícita do GolfScript, mas perdemos um byte porque, diferentemente do CJam W
, o GolfScript não possui uma variável de letra única útil inicializada como -1.
Além disso, o CJam possui tipos inteiros e de caracteres separados (e as strings são apenas matrizes que contêm caracteres), enquanto o GolfScript possui apenas um único tipo inteiro (e um tipo de string especial que se comporta de maneira um pouco diferente das matrizes normais). O resultado de tudo isso é que, se queremos que o intérprete GolfScript imprima a letra que está faltando, em vez de seu número de código ASCII, precisamos retornar uma cadeia de caracteres únicos em vez de apenas o próprio caractere. Felizmente, fazer essa alteração aqui requer apenas a substituição do operador de indexação pelo operador de =
truncamento esquerdo da matriz / string >
.
Obviamente, graças à E / S implícita do GolfScript, o código acima também pode ser usado como um trecho que lê uma string da pilha e retorna uma string de um caractere contendo a letra que falta. Ou melhor, qualquer trecho que pegue uma única string na pilha como argumento e retorne sua saída como uma string imprimível na pilha também é um programa completo do GolfScript.