Java: Generator wahrer s & false, s-Kombinationen, indem Sie die Anzahl N;
Band ich um die Aufgabe zu vereinfachen, so viel wie möglich, damit ich es anwenden konnte, um meinen Algorithmus.
Und hier ist die Herausforderung für Mathematiker und Programmierer:
Brauche ich, um eine Methode zu erstellen, wo ich den pass-parameter int n:
public void optionality_generator(int n){
//some kind of loops, or recursions...to make it workable
System.out.println("current combination: ...");
}
Sollte die Ausgabe zeigt alle möglichen Kombinationen von wahr und falsch ist.
Hier Beispiele, in denen N=1; N=2; N=3; N=4; N=5 wobei x=false und 0=true; beachten Sie Bitte, leeren break lines ist einfach für Sie zu erkennen einfacher Muster. Hoffentlich, habe ich alle möglichen Kombinationen):
Combination of 1:
0
x
Combination of 2:
00
x0
0x
xx
Combination of 3:
000
X00
0X0
00X
XX0
0XX
XXX
Combination of 4:
0000
X000
0X00
00X0
000X
XX00
X0X0
X00X
0XX0
0X0X
00XX
XXX0
XX0X
X0XX
0XXX
XXXX
Combination of 5:
00000
X0000
0X000
00X00
000X0
0000X
XX000
X0X00
X00X0
X000X
X0X00
X00X0
X000X
0XX00
0X0X0
0X00X
00XX0
00X0X
000XX
XXX00
XX0X0
XX00X
X0XX0
X0X0X
X00XX
0XXX0
0XX0X
00XXX
XXXX0
XXX0X
XX0XX
X0XXX
0XXXX
XXXXX
Auch, Wenn Sie sehen, der Ausgang, hier ist das Muster, das ich erkannt, dass alle Kombinationen sind invertiert auf die Hälfte (e.g erste Kombination ist 00000 Letzte XXXXX, zweite X0000, bevor der Letzte 0XXXX etc..). Vielleicht ist dieses Muster wird Ihnen helfen, damit der ganze Algorithmus effizienter, nicht sicher über diese.
Vielen Dank im Voraus!
- Das ist, warum jeder lernen sollte, Montage zuerst! Oder zumindest etwas Mathematik und Zweierkomplement.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine wirklich einfache Weise nur unter Verwendung von Java-APIs:
Ergebnis:
Natürlich, Sie können
n
zu was auch immer Sie mögen. Und, mit diesem Ergebnis, können Sie wählen Sie dien
TEN Zeichen aus dem string als true/false.Wenn Sie nur brauchen, um zu überprüfen, ob etwas wahr ist, brauchen Sie nicht, um es in einen string konvertieren. Dies ist nur zur Veranschaulichung des Ausgabe-Werte.
Nur eine Ahnung, aber denke über die bits, die gesetzt sind für eine Zahl mit höchstens " n " - bits. Sie werden sehen, wenn Sie gehen von 0 bis 'n' Anzahl von bits (3 in diesem Fall); die bits sind 000, 001, 010, 011, 100, 101, 110, 111. Sie können herausfinden, die maximale Anzahl, die passen in 'n' bits, indem die ((n*n)-1) Formel.
Dies sollte den trick tun
out:
String.format
nicht unterstützen%0s
- format, während C/C++ unterstützen.Verwendung von Rekursion ist nicht so einfach, wie mit dem Java-Integer.toBinaryString () - API für die Erzeugung von Binär-strings. Aber der folgende code gibt Ihnen die Flexibilität, die zur Erstellung eines Basis-Darstellung, z.B. Basis 3:
"000"
"001"
"002"
"010"
"011"
"012"
Zur Basis 2 (D. H. binäre) Zeichenketten, rufen Sie es wie folgt:
Basis für 3 Streicher, rufen Sie es wie folgt:
Hier ist der code:
getBinaryStrings(2, 3);
). Ist das beabsichtigt?Hier ist eine einfache version, implementiert unter Verwendung von Rekursion
Hier ist eine test-driven version:
Hier ist eine Modifikation von Erics code oben, dass c# verwendet wird und ermöglicht die Eingabe einer beliebigen Anzahl von boolean-Variablen-Namen. Es wird die Ausgabe alle möglichen Kombinationen im c# - code, bereit für das einfügen in eine if-Anweisung. Ändern Sie einfach die 1. Zeile der code mit den var-Namen, und führen Sie dann im LINQpad um eine text-Ausgabe.
Ausgabe Beispiel...
JS: