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. [Vorheriger Artikel] FizzBuzz-Version von (https://qiita.com/ki_ki33/items/319e2cda34df77c945f2).
Bisher war es einfach, Zeichenfolgenkonstanten ("Hallo Welt") zu vermeiden, daher wurde dies hauptsächlich mit "Klassendeklaration", "Hauptdeklaration" und "Ausgabeanweisung" vermieden. Da sie dieses Mal auch alle existieren, kann das zuvor nicht gebundene Alphabet \ (acdegimnorstv ) nicht gebunden werden. Es wird also überprüft, ob FizzBuzz auch "bfhjklpquwxyz" binden kann, das beim letzten Mal gebunden wurde.
Der Grund für die 4. Bindung war, dass ich dachte, dass die Obergrenze von FizzBuzz durch Verwendung von Bytes usw. gesenkt werden könnte, um das Alphabet zu vermeiden, und ich dachte, dass ich den Bereich des allgemeinen numerischen Typs int ermöglichen könnte. (Das heißt, lange ist OK)
Der Grund für die Bindung von Nr. 5 ist, dass sich der Inhalt beim Einbetten nicht von der vorherigen Hello-Welt unterscheidet, wenn die gesamte Ausgabe so eingebettet ist, wie sie ist, ohne eine extreme Schleife zu verwenden. Es ist schwer zu beurteilen, wie viel eingebettet ist, aber es ist ein Selbsturteil. Wenn Ihnen das Urteil nicht gefällt, schreiben Sie einen Artikel, den Sie anhand Ihrer eigenen Beurteilungskriterien ausprobiert haben.
Ausführungsbeispiel
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Die 10. Bindung finden Sie unter Vorheriger Artikel.
Möglich: bfhjklpquwxyz Unmöglich: acdegimnorstv
Ich schreibe Code, der ungefähr in alphabetischer Reihenfolge gebunden ist. Ich habe nicht viel über die Technik erklärt, die ich das letzte Mal verwendet habe. hjkqwx Zuerst habe ich FizzBuzz normal geschrieben. Es gibt viele Möglichkeiten, also habe ich einfach den Python-Code in Wikipedia in Java umgeschrieben. Wie im Beispiel werden Variablennamen auf Japanisch geschrieben, um keine Alphabete zu verwenden.
Fiz Buzz.java
Klasse Fiz Buzz{
public static void main(String[]Streit) {
for (int number=1;Nummer<= 20;Nummer++) {
if (Nummer% 15 == 0)
System.out.println("FizzBuzz");
else if (Nummer% 3 == 0)
System.out.println("Fizz");
else if (Nummer% 5 == 0)
System.out.println("Buzz");
else
System.out.println(Nummer);
}
}
}
bpz Zuerst habe ich es gelöscht, indem ich eine Zeichenkette vom Typ char geschrieben und mit dem Format aufgeweckt habe. Dadurch wird z. Machen Sie es als nächstes zur Schnittstelle und löschen Sie die öffentliche Hauptmethode. Dies lässt b verschwinden. Es verschwand nicht mehr als ich erwartet hatte.
Fiz Buzz.java
Schnittstelle Fiz Buzz{
static void main(String[]Streit) {
for (int number=1;Nummer<= 20;Nummer++) {
if (Nummer% 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 (Nummer% 3 == 0)
System.out.format("%c%c%c%c%c",70,105,122,122,10);
else if (Nummer% 5 == 0)
System.out.format("%c%c%c%c%c",66,117,122,122,10);
else
System.out.format("%d%c",Nummer,10);
}
}
}
f Ich benutze es für, wenn und Format. Ich habe das Format zum Drucken geändert und es durch ein char-Array ersetzt. für ist während. Wenn verwendet, wechseln Sie wie eine if-Anweisung. Ich schreibe ein Inkrement, weil ich continue anstelle von else verwende. Ändern Sie den Anfangswert separat
Fiz Buzz.java
Klasse Fiz Buzz{
public static void main(String[]Streit) {
int number=0;
while (Nummer< 20) {
Nummer++;
switch(Nummer% 15){
case 0:
System.out.print(new char[] {70,105,122,122,66,117,122,122,10});
continue;
}
switch(Nummer% 3){
case 0:
System.out.print(new char[] {70,105,122,122,10});
continue;
}
switch(Nummer% 5){
case 0:
System.out.print(new char[] {66,117,122,122,10});
continue;
}
System.out.print(Nummer+"\n");
}
}
}
l Ich habe es mit else und println verwendet. Der obige verwendet sie nicht, aber ich habe sie währenddessen verwendet, sodass ich sie in für ändern kann. Da es auch in der Öffentlichkeit verwendet wird, ändern Sie es in Schnittstelle.
Fiz Buzz.java
Schnittstelle Fiz Buzz{
static void main(String[]Streit) {
for(int number=1;Nummer<= 20;Nummer++) {
switch(Nummer% 15){
case 0:
System.out.print(new char[] {70,105,122,122,66,117,122,122,10});
continue;
}
switch(Nummer% 3){
case 0:
System.out.print(new char[] {70,105,122,122,10});
continue;
}
switch(Nummer% 5){
case 0:
System.out.print(new char[] {66,117,122,122,10});
continue;
}
System.out.print(Nummer+"\n");
}
}
}
uy So ersetzen Sie s [y] stem.o [u] t durch dieselbe ScriptEngine wie beim letzten Mal. Da es sich auch um B [u] zz handelt, ist die Zeichenfolge ein Zeichenarray.
Fiz Buzz.java
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
Schnittstelle Fiz Buzz{
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");
for (int number=1;Nummer<= 20;Nummer++) {
if (Nummer% 15 == 0)
engine.eval("print('"+new String(new char[] {70,105,122,122,66,117,122,122})+"')");
else if (Nummer% 3 == 0)
engine.eval("print('"+new String(new char[] {70,105,122,122})+"')");
else if (Nummer% 5 == 0)
engine.eval("print('"+new String(new char[] {66,117,122,122})+"')");
else
engine.eval("print('"+Nummer+"')");
}
}
}
acdgimnorstv Weil statisches void main (String [] Argument) absolut notwendig ist.
e Wie uy ist es in Syst [e] m.out und auch in Script [E] ngin [e]. Selbst wenn Sie versuchen, es aus einer Zeichenfolge abzurufen, befindet es sich in g [e] tClass. Auch wenn dies nicht der Fall ist, handelt es sich um ein recht einfach zu verwendendes Alphabet, sodass es normalerweise gefangen wird.
Von Oben Möglich: bfhjklpquwxyz Unmöglich: acdegimnorstv Wird sein. Das Ergebnis war das gleiche wie beim letzten Mal. Es war nicht so interessant. Schließlich sollte der Deklarationsteil von class oder main ignoriert werden. Ich dachte, aber dann sollte ich es mit Python machen.
Recommended Posts