Java - 126 caratteri
minimizzato:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
unminimized:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Questo è un problema interessante, perché i singoli token potrebbero trarre vantaggio dalla loro forma più lunga perché riutilizza i personaggi. Ad esempio, normalmenteString[]
sarebbe più breve, ma String...
rimuove la necessità delle parentesi quadre nella stringa condizionale.
Ho scoperto che il trucco era cercare di usare i caratteri all'inizio e alla fine dell'intervallo in modo da poterli escludere dall'output semplicemente modificando l'inizio e la fine del tuo ciclo.
Per Java, un carattere chiave da escludere è "
, perché avere quello nella stringa richiede di scappare, che si aggiunge \
al programma, che deve andare nella stringa, che aggiunge \\
. Rimuovendo "
dalla stringa condizionale rimuovi 4 caratteri. Questo può essere ottenuto assicurandoti di usare
e!
di iniziare la vostra ciclo da #
.
Tutte le lettere minuscole appaiono verso la fine della gamma, con la sola {
, |
, }
e ~
venire dopo di loro. A causa della verbosità di Java, la maggior parte delle lettere minuscole viene utilizzata solo per la caldaia. Allo stesso modo, {
e }
sono banali per un programma Java, perché la piastra della caldaia li richiede.
|
può essere utilizzato se si dispone di una condizione o, ma non sono riuscito a trovare un modo per trarne vantaggio da un programma più breve rispetto al semplice utilizzo |
come operatore bit a bit. Il|0
mi fa sentire un po 'sporco, perché è l'unica parte che è un NOP solo per ottenere il carattere in là.
~0
rendimenti -1
, il che è utile perché è quello con cui dobbiamo verificare indexOf
. Combinando questo con l'utilizzo !=
per il condizionale del ciclo si elimina del <
tutto il carattere, il che significa che non è necessario andare all'interno della stringa condizionale.
0x20
a0x7e
, che sono definiti come "caratteri ASCII stampabili". Tecnicamente le schede e le nuove righe sono in realtà personaggi di controllo.