[Java] Interdit d'utiliser un seul type d'alphabet FizzBuzz [Binding]

Aperçu

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. Article précédent Version FizzBuzz.

Auparavant, il était facile d'éviter les constantes de chaîne ("Hello, world"), donc c'était principalement évité avec "class declaration", "main declaration" et "output statement". Puisque tous existent cette fois, l'alphabet précédemment délié \ (acdegimnorstv ) ne peut pas être lié. Il sera donc vérifié si FizzBuzz peut également lier "bfhjklpquwxyz" qui était lié la dernière fois.

règle

  1. java10
  2. Compilez avec javac, exécutez avec java, pas d'options (ou plutôt, écrivez et exécutez dans Eclipse)
  3. Sortie de FizzBuzz sur la sortie standard
  4. Une ligne pour chaque numéro
  5. Les personnages sont "Fizz" "Buzz" "Fizz Buzz"
  6. Le nombre de FizzBuzzz est de 20 à l'exécution, mais en termes d'implémentation, il peut aller jusqu'à la moitié </ font> du type int maximal
  7. L'intégration ne résout pas les boucles et les branches conditionnelles
  8. La sortie standard supplémentaire et la sortie d'erreur sont interdites (les sauts de ligne sont OK)
  9. Interdiction d'utiliser un seul type d'alphabet
  10. Insensible à la casse
  11. Interdire les fichiers externes (seule la bibliothèque standard Java est possible)
  12. Échappement Unicode interdit

La raison de la 4ème liaison était que je pensais que la limite supérieure de FizzBuzz pouvait être abaissée en utilisant des octets, etc. pour éviter l'alphabet, alors j'ai pensé que je pourrais rendre possible la plage de type numérique général int. (Autrement dit, longtemps c'est OK)

  • Ajouté le 19/12/2018 Comment m'a dit qu'il ne se terminait pas par un débordement à la valeur maximale de type INT. Cela peut être résolu en déplaçant l'index, mais il est différent du code de Wikipedia et ce n'est pas l'essence de la liaison, donc je l'ai changé à la moitié de la valeur maximale de type INT et triché.

La raison de la liaison n ° 5 est que s'il y a intégration, si toute la sortie est incorporée telle quelle sans utiliser de boucle extrême, le contenu ne sera pas différent du monde Hello précédent. Il est difficile de juger à quel point il est intégré, mais c'est un jugement de soi. Si vous n'aimez pas le jugement, écrivez un article que vous avez essayé en fonction de vos propres critères de jugement.

Exemple d'exécution


1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz

Pour la 10ème reliure, voir Article précédent

Conclusion

Possible: bfhjklpquwxyz Impossible: acdegimnorstv

  • Aucune différence par rapport à la dernière fois

Détails

J'écris du code qui est à peu près lié par ordre alphabétique. Je n'ai pas beaucoup expliqué la technique que j'ai utilisée la dernière fois. hjkqwx Tout d'abord, j'ai écrit FizzBuzz normalement. Il y a plusieurs façons de le faire, donc je viens de réécrire le code python de Wikipedia en java. Comme dans l'exemple, les noms de variables sont écrits en japonais afin de ne pas utiliser d'alphabets.

Fiz Buzz.java


classe Fiz Buzz{
	public static void main(String[]argument) {
		for (nombre int=1;nombre<= 20;nombre++) {
			if (nombre% 15 == 0)
				System.out.println("FizzBuzz");
			else if (nombre% 3 == 0)
				System.out.println("Fizz");
			else if (nombre% 5 == 0)
				System.out.println("Buzz");
			else
				System.out.println(nombre);
		}
	}
}

bpz Tout d'abord, je l'ai effacé en écrivant la chaîne de caractères en type char et en la réveillant au format. Cela effacera z. Ensuite, créez une interface et supprimez la méthode principale publique. Cela fait disparaître b. Il n'a pas disparu plus que ce à quoi je m'attendais.

Fiz Buzz.java


interface Fiz Buzz{
	static void main(String[]argument) {
		for (nombre int=1;nombre<= 20;nombre++) {
			if (nombre% 15 == 0)
				System.out.format("%c%c%c%c%c%c%c%c%c",70,105,122,122,66,117,122,122,10);
			else if (nombre% 3 == 0)
				System.out.format("%c%c%c%c%c",70,105,122,122,10);
			else if (nombre% 5 == 0)
				System.out.format("%c%c%c%c%c",66,117,122,122,10);
			else
				System.out.format("%d%c",nombre,10);
		}
	}
}

f Je l'utilise pour, si et pour formater. J'ai changé le format pour imprimer et l'ai remplacé par un tableau de caractères. car c'est tout. si utilisé, changez comme une instruction if J'écris un incrément parce que j'utilise continuer au lieu de else. Changer la valeur initiale séparément

Fiz Buzz.java


classe Fiz Buzz{
	public static void main(String[]argument) {
nombre int=0;
		while (nombre< 20) {
nombre++;
			switch(nombre% 15){
			case 0:
				System.out.print(new char[] {70,105,122,122,66,117,122,122,10});
				continue;
			}
			switch(nombre% 3){
			case 0:
				System.out.print(new char[] {70,105,122,122,10});
				continue;
			}
			switch(nombre% 5){
			case 0:
				System.out.print(new char[] {66,117,122,122,10});
				continue;
			}
			System.out.print(nombre+"\n");
		}
	}
}

l Je l'ai utilisé avec else et println. Celui ci-dessus ne les utilise pas, mais je les ai utilisés pendant, donc je peux le changer en for. Puisqu'il est également utilisé en public, changez-le en interface.

Fiz Buzz.java


interface Fiz Buzz{
	static void main(String[]argument) {
		for(nombre int=1;nombre<= 20;nombre++) {
			switch(nombre% 15){
			case 0:
				System.out.print(new char[] {70,105,122,122,66,117,122,122,10});
				continue;
			}
			switch(nombre% 3){
			case 0:
				System.out.print(new char[] {70,105,122,122,10});
				continue;
			}
			switch(nombre% 5){
			case 0:
				System.out.print(new char[] {66,117,122,122,10});
				continue;
			}
			System.out.print(nombre+"\n");
		}
	}
}

uy Comment remplacer s [y] stem.o [u] t par le même ScriptEngine que la dernière fois. Puisqu'elle est également en B [u] zz, la chaîne de caractères est un tableau de caractères.

Fiz Buzz.java


import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
interface Fiz Buzz{
	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");
		for (nombre int=1;nombre<= 20;nombre++) {
			if (nombre% 15 == 0)
				engine.eval("print('"+new String(new char[] {70,105,122,122,66,117,122,122})+"')");
			else if (nombre% 3 == 0)
				engine.eval("print('"+new String(new char[] {70,105,122,122})+"')");
			else if (nombre% 5 == 0)
				engine.eval("print('"+new String(new char[] {66,117,122,122})+"')");
			else
				engine.eval("print('"+nombre+"')");
		}
	}
}

Caractères et raisons non liés

acdgimnorstv Parce que static void main (argument String []) est absolument nécessaire.

e Comme uy, c'est dans Syst [e] m.out, et c'est aussi dans Script [E] ngin [e]. Même si vous essayez de l'obtenir à partir d'une chaîne de caractères, il se trouve dans g [e] tClass. Même si ce n'est pas le cas, c'est un alphabet assez facile à utiliser, donc il se fait généralement prendre.

À la fin

De ce qui précède Possible: bfhjklpquwxyz Impossible: acdegimnorstv Sera. Le résultat était le même que la dernière fois. Ce n'était pas si intéressant. Après tout, la partie déclaration de class ou main doit être ignorée. J'ai pensé, mais ensuite je devrais le faire avec python.

Recommended Posts

[Java] Interdit d'utiliser un seul type d'alphabet FizzBuzz [Binding]
[Java] Un type d'alphabet interdit Avec reliure Bonjour tout le monde! [Reliure]
Initialisation avec une chaîne vide vers une instance de type Java String
FizzBuzz (@Java) de Bokuga Kangaeta Saikyo qui est programmeur depuis 1 an
[Java] Comparaison correcte du type String
[Java] Conversion de type implicite (somme AOJ10 de nombres)
[Connaissance de base de Java] À propos de la conversion de type
Résumé Java des conversions de types fréquemment recherchées
[Java] Comment convertir un élément d'un tableau de type String en type Int
[Java] Faites attention au type de clé de la carte
[Java] Créer une collection avec un seul élément
Calculer le score de similarité des chaînes de caractères avec JAVA
Dépôt Java d'Eclipse avec Maven: artefact manquant ~
Revue Java ③ (utilisation de base des tableaux / type de référence)