En Java, j'ai vérifié quel alphabet peut être écrit en interdisant un type d'alphabet (écrire sans utiliser l'un de a à z). Simplement jouer.
1.java10,Windows10 2. Compilez avec javac, exécutez avec java, pas d'options (ou plutôt, écrivez et exécutez dans Eclipse) 3. Sortie Hello, world! Vers la sortie standard 4. La sortie standard supplémentaire et la sortie d'erreur sont interdites (les sauts de ligne sont OK) 5. Interdiction d'utiliser un seul type d'alphabet 6. Insensible à la casse 7. Interdire les fichiers externes (seule la bibliothèque standard Java est possible) 8. Échappement Unicode interdit (post-scriptum du 26/08/2018) * Les détails seront décrits plus tard
Possible: bfhjklpquwxyz Impossible: acdegimnorstv
J'écris du code qui est à peu près lié par ordre alphabétique. fjkqxz Il n'apparaît pas dans le Hello World que j'ai écrit normalement. À propos, les noms de variables et les noms de classes sont en japonais afin de ne pas utiliser d'alphabets. Je me demande s'il y a des gens qui utilisent le fait qu'ils peuvent utiliser des noms de classe non alphabétiques ... (Je l'ai vu une fois utilisé dans le code source éducatif.)
Bonjour le monde.java
classe Hello World{
public static void main(String[]argument) {
System.out.print("Hello, World!");
}
}
b Puisque public est implicitement ajouté à la méthode dans l'interface, il n'est pas nécessaire de l'écrire dans l'instruction main. Je pense que c'était une fonction de java7 ou 8. Cependant, comme de nombreux caractères sont utilisés ailleurs, seul b peut être traité.
Bonjour le monde.java
interface Hello World{
static void main(String[]argument) {
System.out.print("Hello, World!");
}
}
hlpw Entrez le code de caractère au format de format afin que la chaîne de caractères contenue uniquement dans Hello and world ne soit pas utilisée. En utilisant format au lieu de printf, nous évitons d'utiliser p, et en utilisant interface, nous évitons d'utiliser pl en public.
Bonjour le monde.java
interface Hello World{
static void main(String[]argument) {
System.out.format("%c%c%c%c%c, %c%c%c%c%c!",72,101,108,108,111,87,111,114,108,100);
}
}
uy Comme il est dans s [y] stem.o [u] t, je fais en quelque sorte une sortie standard sans l'utiliser. Il existe une classe appelée ScriptEngine qui peut exécuter le langage de script, et lorsqu'elle est sortie par un script, elle est sortie en standard. Cependant, comme la méthode getB [y] Name est utilisée lors de l'obtention du ScriptEngine, exécutez-la à partir de la chaîne de caractères en utilisant getClass, getMethod, et invoquez, et dans la chaîne de caractères, récupérez y à partir du nombre et résolvez-le.
Bonjour le monde.java
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
interface Hello World{
static void main(String[]argument) 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 Puisque static void main (argument String []) est absolument nécessaire, l'alphabet qu'il contient ne peut pas être omis. Sans cela, il ne peut pas être exécuté en premier lieu. Y a-t-il un moyen de gérer cela? (2018-08-26 postscript) J'ai eu l'information selon laquelle si vous héritez de l'application JavaFX, vous n'avez pas à écrire l'instruction principale.
Bonjour le monde.java
public class Hello World étend javafx.application.Application{
public void start(javafx.stage.Stage Stage){
System.out.print("Hello, World!");
}
}
Cependant, même avec cela, la plupart des caractères ont été utilisés et aucune des liaisons n'a été résolue. Vous pouvez utiliser m avec Syste [m] .out, mais vous ne pouvez pas utiliser ScriptEngine [M] analger, et vous ne pouvez pas utiliser [m] ethod et na [m] e, donc vous ne pouvez pas laisser cela à la réflexion.
e Comme uy, il est dans Syst [e] m.out, donc ce serait bien s'il pouvait être sorti sans utiliser ceci, mais il est dans Script [E] ngin [e], et même si vous essayez de l'obtenir à partir d'une chaîne de caractères, en premier lieu Il est en g [e] tClass. Ou plutôt, puisque c'est dans g [e] t, la méthode pour obtenir quelque chose ne peut pas être utilisée. Même si ce n'est pas le cas, c'est un alphabet assez facile à utiliser, il est donc facile de se faire prendre.
De ce qui précède Possible: bfhjklpquwxyz Impossible: acdegimnorstv Sera. La déclaration principale est trop inquiétante. Il semble y avoir un moyen de résoudre e d'une manière ou d'une autre ... S'il vous plaît laissez-moi savoir s'il existe un moyen de le faire. Il pourrait être intéressant de faire autour de fizzbuzz.
Commentaire pour plus d'informations. En Java, vous pouvez écrire le code source au format d'échappement Unicode (\ uxxxx). Si vous utilisez ceci, théoriquement, seul abcdefu qui combine les nombres hexadécimaux a ~ f et u sortira, et même si a ~ f est converti en échappement Unicode, chacun n'inclut pas d'alphabets, alors convertissez uniquement chaque alphabet en échappement Unicode. Sera résolu. Autre que u, il est possible de lier quel que soit le code. Je ne pense pas que cela ait beaucoup de sens de l'attacher, alors je l'interdit de ma propre ligature. Il est intéressant de voir des informations que vous n'utiliseriez pas dans un programme normal si vous faites quelque chose d'étrange comme celui-ci.
Recommended Posts