Schreiben Sie auf der Grundlage der in diesem Numberphile-Video erwähnten "binären, aber mit Zweien" -Notation eine Funktion, die eine einzelne Zahl als Eingabe verwendet und alle Variationen dieser Zahl in einem "binären" System ausgibt , in dem Zweien zulässig sind.
Regeln
- Code darf nur eine Funktion / Methode sein, kein vollständiges Programm
- Die Eingabe ist eine Ganzzahl, die als einziger Parameter an die Funktion übergeben wird
- Bei der Ausgabe handelt es sich um alle gültigen Variationen der eingegebenen Nummer, die in "binär, aber mit Zweier-Notation" konvertiert wurden
- Die Ausgabe ist der Rückgabewert der Funktion, kann jedoch in jedem beliebigen Format erfolgen, sofern dies offensichtlich ist (z. B. 3 Ints, 3 Strings, durch Kommas / Leerzeichen getrennte Strings, Array von Ints usw.). Die Reihenfolge ist unwichtig
- In dem unwahrscheinlichen Fall, dass eine Sprache eine eingebaute Funktion enthält, um das Ergebnis zu erzielen, ist dies nicht zulässig
- Kürzester Code in Bytes ist der Gewinner
Erklärung der Ausgabe
Wenn Sie beispielsweise die Zahl übergeben haben 9
, können Sie sie in binär als konvertieren. 1001
Wenn Sie jedoch 2
s an jeder Position zulassen , können Sie sie auch als 201
(dh 2*4 + 0*2 + 1*1
) oder 121
(dh 1*4 + 2*2 + 1*1
) schreiben , wie in der folgenden Tabelle gezeigt:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Wenn also bestanden 9
, müsste Ihre Funktion die drei Zahlen 1001
, 201
und zurückgeben 121
.
Format und Ordnung ist irrelevant, solange es offensichtlich ist (dh [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
sind gültige Ergebnisse , wenn eine Eingabe gegeben 9
).
Beispiele
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221