[Java] Eine Art von Alphabet verboten Mit Bindung Hallo, Welt! [Bindung]

Überblick

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.

Regel

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

Fazit

Möglich: bfhjklpquwxyz Unmöglich: acdegimnorstv

Einzelheiten

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);
	}
}

Ungebundene Charaktere und Gründe

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.

Am Ende

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.

(Hinzugefügt am 26.08.2018) Unicode-Flucht verboten

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

[Java] Eine Art von Alphabet verboten Mit Bindung Hallo, Welt! [Bindung]
[Java] Verboten, eine Art von Alphabet zu verwenden FizzBuzz [Bindung]
Probieren Sie HelloWorld mit der Mindestkonfiguration von Heroku Java Spring-Boot aus
Hallo Welt mit Java Template Engine Thymeleaf
Java-Entwicklung mit Codenvy: Hello World! Run
Java, Hallo Welt!
Java Hallo Welt
[Java] Hallo Welt mit Java 14 x Spring Boot 2.3 x JUnit 5 ~
"Hallo Welt" in Java
Java lernen (1) -Hallo Welt
Hallo Welt in Java
Hallo Welt mit Micronaut
Hallo Welt mit Spring Boot
Hallo Welt mit Spring Boot!
Hallo Welt mit VS Code!
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
Java Hallo Welt, kompilieren, ausführen
Hallo Welt mit Spring Boot
Java-Anfänger lesen Hello World
Hallo Welt mit SpringBoot / Gradle
Hallo Welt, mit Asakusa Framework!
Bis Sie Hello World of JavaFX mit VSCode + Gradle ausführen
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
Hallo Welt für ImageJ Java Plugin
Bis "Hallo Welt" mit Spring Boot
Hallo Welt mit AWS Lambda + Java
Hallo Welt mit Kotlin und JavaFX
Hallo Welt mit Docker und C Sprache
Hallo Welt von Java in Eclipse jetzt
(Intellij) Hallo Welt mit Spring Boot
Hallo Welt mit GlassFish 5.1 + Servlet + JSP
Erstellen Sie PDF mit itext7 ~ HelloWorld ~
"Hallo Welt" für ImageJ mit Eclipse
[Java] Korrekter Vergleich des String-Typs
Hallo Welt mit GWT 2.8.2 und Maven
Hallo Welt in Java und Gradle
Versuchen Sie, "Hello, World" mit einer Kombination aus verschiedenen Sprachen und Bibliotheken zu schreiben
Hallo Welt mit Eclipse + Spring Boot + Maven
"Hallo Welt!" Mit Kotlin + CLI in 5 Minuten
Hallo Welt auf Mac VSCode Java
[Grundkenntnisse in Java] Informationen zur Typkonvertierung
Hallo Welt mit Kotlin und Tornado FX
Java Zusammenfassung der häufig gesuchten Typkonvertierungen
Wie Spring Security mit Hello World funktioniert
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Minimale Java-Umgebungskonstruktion und Hello World
[Java] So konvertieren Sie ein Element eines Array vom Typ String in einen Int-Typ
Hallo Welt mit Java Servlet und JSP (Einfacher Start des Webservers mit Maven + Jetty)
Hello World, eine plattformübergreifende GUI-App mit Groovy, die auf der Java-Plattform ausgeführt wird