Java - 1331 байт, 618 байт и 504 байт
Вот это в Java. Самое классное, что он довольно разборчивый и гибкий. Вы можете поэкспериментировать, чтобы изменить SHIFT
переменную на 0, и это будет квин. Вы можете изменить его на любое значение, которое вы хотите, включая отрицательные значения, и это соответственно сместит код.
public class Quinex {
private static final int SHIFT = 1;
private static String next(String now, boolean mangles) {
String sb = "";
for (char c : now.toCharArray()) {
if (!mangles && c == 87) {
sb += next(String.valueOf(SHIFT), true);
} else {
sb += (char) ((mangles ? c : c == 94 ? 10 : c == 64 ? 34 : c) + SHIFT);
}
}
return sb;
}
public static void main(String... args) {
System.out.println(next(TEXT, false) + next(TEXT, true) + new String(new char[] { 34, 59, 10, 125 }));
}
private static final String TEXT = "public class Quinex {^^ private static final int SHIFT = W;^^ private static String next(String now, boolean mangles) {^ String sb = @@;^ for (char c : now.toCharArray()) {^ if (!mangles && c == 87) {^ sb += next(String.valueOf(SHIFT), true);^ } else {^ sb += (char) ((mangles ? c : c == 94 ? 10 : c == 64 ? 34 : c) + SHIFT);^ }^ }^ return sb;^ }^^ public static void main(String... args) {^ System.out.println(next(TEXT, false) + next(TEXT, true) + new String(new char[] { 34, 59, 10, 125 }));^ }^^ private static final String TEXT = @";
}
Однако единственным недостатком в предыдущем классе являются разрывы строк, которые не разрешены в спецификации вопроса (находятся вне диапазона от 32 до 125). Поэтому я привожу здесь версию для игры в гольф, в которой нет разрывов строк (и нет причуд для их обработки). Вы можете отредактировать значение S
переменной, чтобы изменить смещение. Это имеет 618 байт:
class Q{static String g(String p,int m){int S=1;String u="";for(char c:p.toCharArray()){if(m==0&&c==87){u+=g(String.valueOf(S),1);}else{u+=(char)((m>0?c:c==64?34:c)+S);}}return u;}public static void main(String[]y){System.out.println(g(T,0)+g(T,1)+new String(new char[]{34,59,125}));}static final String T="class Q{static String g(String p,int m){int S=W;String u=@@;for(char c:p.toCharArray()){if(m==0&&c==87){u+=g(String.valueOf(S),1);}else{u+=(char)((m>0?c:c==64?34:c)+S);}}return u;}public static void main(String[]y){System.out.println(g(T,0)+g(T,1)+new String(new char[]{34,59,125}));}static final String T=@";}
Конечно, если мы отбросим точную настройку смещения и жестко закодируем значение сдвига, мы можем сделать полностью гольф-версию с 504 байтами:
class Q{static String g(String p,int m){String u="";for(char c:p.toCharArray()){u+=(char)((m>0?c:c==64?34:c)+1);}return u;}public static void main(String[]y){System.out.println(g(T,0)+g(T,1)+new String(new char[]{34,59,125}));}static final String T="class Q{static String g(String p,int m){String u=@@;for(char c:p.toCharArray()){u+=(char)((m>0?c:c==64?34:c)+1);}return u;}public static void main(String[]y){System.out.println(g(T,0)+g(T,1)+new String(new char[]{34,59,125}));}static final String T=@";}