Die Aufgabe
Angesichts der Menge
und eine ganze Zahl
Finden Sie die n-te Teilmenge.
Input-Output
N wird als vorzeichenlose ganze Zahl in stdin angegeben. Sie müssen die n - te Teilmenge in einem geeigneten Format für Ihre Sprache gedruckt werden (dies kann [1,2,3]
, {1,2,3}
, [1, 2, 3]
, 1 2 3
, 1,2,3
usw. , solange es ein Mensch lesbar Text - Format).
Ein bisschen über Teilmengen
Es gibt eine Beziehung zwischen Teilmengen und Zahlen in der Basis zwei. Jede Ziffer
[1,8]
(das letzte und erste Element). Sie erhalten die Teilmenge Nth durch die Zahl in der Basis 2 Umwandlung und dann enthält die Teilmenge alle Elemente , bei denen [1,2]
. Die Ziffer ganz rechts ist die Ziffer # 0. Es ist in Ordnung zu drucken [2,1]
. Das Set muss nicht sortiert werden.
Nachträge:
Ja, das Set ist fest auf 1..8
. Das Set ist nicht Bestandteil der Eingabe. Die Eingabe ist nur N .
Ja, Sie können alternative Eingabeformulare verwenden.
Alle erwarteten Ausgaben für alle N : https://tio.run/##SyotykktLixN/f/fyNS02qIoP8soJd1CwSAg2kY32LPWPaoqs7jg/38A
1
auf8
, oder ist es ein Satz?"123"
eindeutig. Ist es gültigAntworten:
Gelee , 3 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
R ,
5226 BytesProbieren Sie es online!
Konvertiert die Eingabe in ihre Bits und gibt die auf 1 basierenden Indizes zurück, in denen sie sich befinden
TRUE
. Das macht dies zu einem Hafen von Dennis 'Jelly-Antwort .Gibt
integer(0)
die leere Liste der Ganzzahlen zur Eingabe von zurück0
.quelle
Python 2 , 40 Bytes
Probieren Sie es online!
quelle
Perl 6 , 33 Bytes
Probieren Sie es online!
quelle
Python 2 , 42 Bytes
Probieren Sie es online!
quelle
K4 , 7 Bytes
Lösung:
Beispiel:
Erste 10 ...
Erläuterung:
quelle
MATLAB / Octave ,
312927 Bytesdurch alephalpha um 2 bytes reduziert
Dank Giuseppe um 2 Bytes reduziert
Probieren Sie es online!
quelle
@(n)9-find(dec2bin(n,8)-48)
Japt, 7 Bytes
Versuch es
Versuch es
quelle
Schale , 5 Bytes
Nimmt Eingaben als Kommandozeilenargument nicht auf stdin ( ich hoffe das ist ok ), versuche es online!
Erläuterung
quelle
Haskell ,
5554 BytesGibt das Set in umgekehrter Reihenfolge aus, probiere es online aus!
Allgemeine Version, 56 Bytes
Dies funktioniert für Gruppen, die größer als sind{ i }8i = 1 :
Probieren Sie es online!
Erläuterung
Der Begriff
mapM (pure [0,1]) [1..n]
erzeugt die Liste (n=4
)[[0,0,0,0],[0,0,0,1],[0,0,1,0],..,[1,1,1,1]]
- dh. die binären Darstellungen von[0..2^n-1]
. Indizieren in es mitn
gibt uns die binäre Darstellung vonn
.Jetzt können wir es einfach
zip
mit den umgekehrten Zahlen machen[1..n]
und nur die Elemente behalten, bei denen die Binärziffer ungleich Null ist:quelle
Holzkohle , 11 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Wenn es akzeptabel ist, die Antwort horizontal ohne Leerzeichen auszudrucken, kann das erste Zeichen entfernt werden. Erläuterung:
quelle
JavaScript (ES6), 37 Byte
+4 Bytes, wenn ein Trennzeichen erforderlich ist
+3 Bytes, wenn dieses Trennzeichen ein Komma ist und ein führendes Komma zulässig ist
Probieren Sie es online!
quelle
Perl 6 , 21 Bytes
Probieren Sie es online!
Alternative:
quelle
Common Lisp, 57 Bytes
Probieren Sie es online!
quelle
Haskell , 33 Bytes
Probieren Sie es online!
37 Bytes
Probieren Sie es online!
Testfälle von Nimi.
quelle
J ,
13-10BytesProbieren Sie es online!
quelle
Japt, 7 Bytes
Testen Sie es online
Japt, 7 Bytes
Testen Sie es online
quelle
C # (Visual C # Interactive Compiler) , 47 Byte
Probieren Sie es online!
Sieht jetzt ähnlich aus wie die Java-Lösung, obwohl ich sie mir selbst ausgedacht habe.
quelle
Python 3.6, 58 Bytes
quelle
Wolfram Language (Mathematica) , 32 Byte
Probieren Sie es online!
quelle
Pari / GP , 31 Bytes
Probieren Sie es online!
quelle
APL + WIN, 13 Bytes
Eingabeaufforderungen für N:
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
Erläuterung:
Gibt die Teilmenge in umgekehrter Reihenfolge zurück
quelle
Burlesque - 8 Bytes
Probieren Sie es online aus.
quelle
Oracle SQL, 77 Byte
Testen Sie in SQL Plus
quelle
MathGolf , 8 Bytes
Probieren Sie es online!
Erläuterung
Alternatives Ausgabeformat
Mit einem flexibleren Ausgabeformat (das meiner Meinung nach recht gut aussieht) kann ich ein 6-Byte-Format erstellen:
Anstatt zuzuordnen, verwende ich das implizite For-Each und überspringe die Abflachung. Die Ausgabe sieht folgendermaßen aus:
quelle
Ruby , 31 Bytes
Probieren Sie es online!
quelle
F # (Mono) , 45 Bytes
Probieren Sie es online!
Ich habe auch eine generische / rekursive Funktion implementiert, aber sie ist ziemlich hässlich und die Anzahl der Bytes ist sehr hoch größer ...
F # (Mono) , 107 Bytes
Probieren Sie es online!
quelle
05AB1E , 6 Bytes
Probieren Sie es online aus oder überprüfen Sie alle möglichen Testfälle .
Erläuterung:
quelle
Java 8, 58 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle