Java - 126 caractères
minimisé:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
non minimisé:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Ceci est un problème intéressant, car les jetons individuels pourraient bénéficier de leur forme plus longue car ils réutilisent des caractères. Par exemple, normalement String[]serait plus court, mais String...supprime la nécessité des crochets dans la chaîne conditionnelle.
J'ai trouvé que le truc était d'essayer d'utiliser des caractères au début et à la fin de la plage pour pouvoir les exclure de la sortie simplement en modifiant le début et la fin de votre boucle.
Pour Java, un caractère de clé à exclure est ", car avoir cela dans la chaîne nécessite de l'échapper, ce qui ajoute \à votre programme, ce qui doit aller dans la chaîne, ce qui ajoute \\. En supprimant "de votre chaîne conditionnelle, vous supprimez 4 caractères. Ceci peut être réalisé en veillant à ce que vous utilisez et !et démarrer votre boucle à partir #.
Toutes les lettres minuscules apparaissent à la fin de la plage, avec seulement {, |, }et à ~venir après eux. En raison de la verbosité de Java, la plupart des lettres minuscules sont utilisées uniquement pour le passe-partout. De même, {et }sont triviales pour un programme Java, parce que le passe-partout les requiert.
|peut être utilisé si vous avez une condition ou, mais je ne trouvais pas le moyen de tirer parti d’une condition qui conduirait à un programme plus court qu’un simple emploi en |tant qu’opérateur au niveau du bit. La |0me fait me sentir un peu sale, car il est la seule partie qui est un nop juste pour obtenir le caractère là - dedans.
~0les rendements -1, ce qui est pratique car c’est ce que nous devons vérifier indexOf. En combinant ceci avec l'utilisation !=de la boucle conditionnelle, le <caractère est totalement éliminé , ce qui signifie qu'il n'est pas nécessaire d'entrer dans la chaîne conditionnelle.
0x20de0x7e, qui sont définis comme les "caractères ASCII imprimables". Techniquement, les onglets et les nouvelles lignes sont en réalité des caractères de contrôle.