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. 1001Wenn Sie jedoch 2s 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, 201und 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, 29=>1001, 201, 12110=>1010, 210, 202, 1002, 12223=>2111, 1011137=>100101, 20101, 100021, 20021, 12101, 12021, 11221