Java - 126 caracteres
minimizado:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
no minimizado:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Este es un problema interesante, porque los tokens individuales podrían beneficiarse de su forma más larga porque reutiliza los caracteres. Por ejemplo, normalmente String[]
sería más corto, pero String...
elimina la necesidad de los corchetes en la cadena condicional.
Descubrí que el truco era tratar de usar caracteres al principio y al final del rango para que pueda excluirlos de la salida simplemente alterando el inicio y el final de su ciclo.
Para Java, un carácter clave para excluir es "
, porque tener eso en la cadena requiere escapar, lo que agrega \
a su programa, que debe ir en la cadena, que agrega \\
. Al eliminar "
de su cadena condicional, elimina 4 caracteres. Esto se puede conseguir asegurándose de que utilice
y !
e iniciar el bucle desde #
.
Todas las letras minúsculas aparecen cerca del extremo superior del rango, la única {
, |
, }
y ~
viene después de ellos. Debido a la verbosidad de Java, la mayoría de las letras minúsculas se usan solo para la repetitiva. Del mismo modo, {
y}
son triviales para un programa Java, porque la repetitiva los requiere.
|
se puede usar si tiene una condición o, pero no pude encontrar una manera de aprovechar una que conduzca a un programa más corto que simplemente usarla |
como operador bit a bit. El |0
me hace sentir un poco sucio, porque es la única parte que es un nop sólo para obtener el carácter de allí.
~0
rendimientos -1
, lo cual es útil porque eso es lo que debemos verificar indexOf
. La combinación de esto con el uso !=
del bucle condicional elimina el <
carácter por completo, lo que significa que no necesita ir dentro de la cadena condicional.
0x20
de0x7e
, que se definen como los "caracteres ASCII imprimibles". Técnicamente, las pestañas y las nuevas líneas son en realidad caracteres de control.