In Java habe ich überprüft, welches Alphabet geschrieben werden kann, indem ich einen Alphabet-Typ verboten habe (Schreiben ohne Verwendung von a bis z). Nur spielen.
1.java10,Windows10 2. Mit javac kompilieren, mit Java und ohne Optionen ausführen (oder besser gesagt, in Eclipse schreiben und ausführen) 3. Ausgabe Hallo, Welt! Zur Standardausgabe 4. Zusätzliche Standardausgabe und Fehlerausgabe sind verboten (Zeilenumbrüche sind in Ordnung). 5. Verbot, nur einen Alphabet-Typ zu verwenden 6. Groß- und Kleinschreibung wird nicht berücksichtigt 7. Externe Dateien verbieten (nur Java-Standardbibliothek ist möglich) 8. Unicode-Flucht verboten (Nachskript 2018-08-26) * Details werden später beschrieben
Möglich: bfhjklpquwxyz Unmöglich: acdegimnorstv
Ich schreibe Code, der ungefähr in alphabetischer Reihenfolge gebunden ist. fjkqxz Es erscheint nicht in der Hello World, die ich normal geschrieben habe. Variablennamen und Klassennamen sind übrigens auf Japanisch, um keine Alphabete zu verwenden. Ich frage mich, ob es Leute gibt, die die Tatsache nutzen, dass sie nicht-alphabetische Klassennamen verwenden können ... (Ich habe gesehen, dass es einmal im Quellcode für Bildungszwecke verwendet wurde.)
Hallo Welt.java
Klasse Hallo Welt{
public static void main(String[]Streit) {
System.out.print("Hello, World!");
}
}
b Da der Methode in der Schnittstelle implizit public hinzugefügt wird, muss sie nicht in die Hauptanweisung geschrieben werden. Ich denke, es war eine Funktion von Java7 oder 8. Da jedoch an anderer Stelle viele Zeichen verwendet werden, kann nur b behandelt werden.
Hallo Welt.java
Schnittstelle Hallo Welt{
static void main(String[]Streit) {
System.out.print("Hello, World!");
}
}
hlpw Geben Sie den Zeichencode im Format ein, damit die nur in Hello and world enthaltene Zeichenfolge nicht verwendet wird. Durch die Verwendung des Formats anstelle von printf vermeiden wir die Verwendung von p, und durch die Verwendung der Schnittstelle vermeiden wir die Verwendung von pl in der Öffentlichkeit.
Hallo Welt.java
Schnittstelle Hallo Welt{
static void main(String[]Streit) {
System.out.format("%c%c%c%c%c, %c%c%c%c%c!",72,101,108,108,111,87,111,114,108,100);
}
}
uy Da es sich in s [y] stem.o [u] t befindet, mache ich irgendwie eine Standardausgabe, ohne es zu verwenden. Es gibt eine Klasse namens ScriptEngine, die die Skriptsprache ausführen kann. Wenn sie von einem Skript ausgegeben wird, wird sie standardmäßig ausgegeben. Da jedoch beim Abrufen der ScriptEngine die Methode getB [y] Name verwendet wird, führen Sie diese mit getClass, getMethod und invoke aus der Zeichenfolge aus und rufen Sie in der Zeichenfolge y aus der Zahl ab und lösen Sie sie.
Hallo Welt.java
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
Schnittstelle Hallo Welt{
static void main(String[]Streit) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = (ScriptEngine)manager.getClass()
.getMethod("getEngineB"+(char)121+"Name", String.class).invoke(manager, "javascript");
String script = "print('Hello, World!')";
engine.eval(script);
}
}
acdgimnorstv Da statisches void main (Argument String []) unbedingt erforderlich ist, kann das darin enthaltene Alphabet nicht weggelassen werden. Ohne dies kann es überhaupt nicht ausgeführt werden. Gibt es eine Möglichkeit, damit umzugehen? (2018-08-26 postscript) Ich habe die Information erhalten, dass Sie die Hauptanweisung nicht schreiben müssen, wenn Sie JavaFX Application erben.
Hallo Welt.java
öffentliche Klasse Hello World erweitert Javafx.application.Application{
public void start(javafx.stage.Bühne Bühne){
System.out.print("Hello, World!");
}
}
Trotzdem wurden die meisten Zeichen verwendet und keine der Bindungen wurde aufgelöst. Sie können m mit Syste [m] .out verwenden, aber Sie können ScriptEngine [M] analger nicht verwenden, und Sie können [m] ethod und na [m] e nicht verwenden, sodass Sie es nicht der Reflexion überlassen können.
e Wie uy ist es in Syst [e] m.out, also wäre es schön, wenn es ausgegeben werden könnte, ohne dies zu verwenden, aber es ist in Script [E] ngin [e], und selbst wenn Sie versuchen, es von einer Zeichenkette abzurufen Es ist in g [e] tClass. Oder besser gesagt, es ist in g [e] t, also kann ich die Methode nicht verwenden, um etwas zu bekommen. Auch wenn dies nicht der Fall ist, handelt es sich um ein recht einfach zu verwendendes Alphabet, sodass es leicht zu erwischen ist.
Von Oben Möglich: bfhjklpquwxyz Unmöglich: acdegimnorstv Wird sein. Die Hauptaussage ist zu störend. Es scheint einen Weg zu geben, e irgendwie zu lösen ... Bitte lassen Sie mich wissen, ob es einen Weg gibt, dies zu tun. Es könnte interessant sein, Fizzbuzz zu machen.
Kommentar zur Information. In Java können Sie den Quellcode im Unicode-Escape-Format (\ uxxxx) schreiben. Wenn Sie dies verwenden, wird theoretisch nur abcdefu ausgegeben, das die Hexadezimalzahlen a ~ f und u kombiniert, und selbst wenn a ~ f in Unicode-Escape konvertiert wird, enthält jedes keine Alphabete. Konvertieren Sie also nur jedes Alphabet in Unicode-Escape. Wird gelöst. Anders als u ist es möglich, unabhängig vom Code zu binden. Ich denke nicht, dass es viel Sinn macht, es zu fesseln, also verbiete ich es von meiner eigenen Bindung. Es ist interessant, Informationen zu sehen, die Sie in einem normalen Programm nicht verwenden würden, wenn Sie so etwas Seltsames tun.
Recommended Posts