Ein Bit schwebt vom LSB zum MSB und bewegt sich jedes Mal um eine Position, bis es oben im Container schwebt :
0000
0001
0010
0100
1000
Sobald ein Bit nach oben schwebt, beginnt ein anderes Bit seine Reise und stoppt, wenn es auf ein anderes Bit trifft:
1001
1010
1100
Dies geschieht so lange, bis der Container mit Bits gefüllt ist:
1101
1110
1111
Herausforderung
Geben Sie bei einer Ganzzahl die " Bit Floating Sequence " für einen Container mit dieser Anzahl von Bits aus.
- Jeder Term der Sequenz kann durch ein beliebiges Trennzeichen Ihrer Wahl getrennt werden.
- Bearbeiten : Sequenz als Dezimalzahl mit Integer - Zahlen dargestellt werden, die durch die erste therm Anfänge
0
. - Die Containergröße sollte größer als Null und bis zur Anzahl der Bits der größten Ganzzahl sein, die von der Sprache Ihrer Wahl unterstützt wird. Sie können davon ausgehen, dass die Eingabe immer dieser Anforderung entspricht.
Beispiele
Es wird nur die numerische Sequenz benötigt, die binäre Darstellung wird als Beispiel gezeigt:
Für 1 :
0 1
0 -> 0 1 -> 1
Für 3 :
0 1 2 4 5 6 7
000 -> 0 001 -> 1 010 -> 2 100 -> 4 101 -> 5 110 -> 6 111 -> 7
Für 4 :
0 1 2 4 8 9 10 12 13 14 15
0000 -> 0 0001 -> 1 0010 -> 2 0100 -> 4 1000 -> 8 1001 -> 9 1010 -> 10 1100 -> 12 1101 -> 13 1110 -> 14 1111 -> 15
Für 8 :
0 1 2 4 8 16 32 64 128 129 130 132 136 144 160 192 193 194 196 200 208 224 225 226 228 232 240 241 242 244 248 249 250 252 253 254 255
00000000 -> 0 00000001 -> 1 00000010 -> 2 00000100 -> 4 00001000 -> 8 … … … 11111000 -> 248 11111001 -> 249 11111010 -> 250 11111100 -> 252 11111101 -> 253 11111110 -> 254 11111111 -> 255
[0.0, 1.0]
0 -> [0, 1]
Antworten:
05AB1E , 10 Bytes
Probieren Sie es online!
quelle
.0
standardmäßig Gleitkommazahlen für ganze Zahlen zulässt, aber nicht sicher ist. Normalerweiseï
füge ich das in die Fußzeile ein, um einen hübschen Ausdruck zu erhalten, und beziehe es nicht in die Byteanzahl ein.Python 2 , 45 Bytes
Probieren Sie es online!
Es stellt sich heraus, dass es kürzer ist,
2**n
minus jedes Terms in der Sequenz für die Eingabe zu generierenn
. Wenn wir uns ihre binäre Erweiterung ansehenn=5
, sehen wir unten ein schönes Muster von Dreiecken von Einsen in den binären Erweiterungen.Jede Zahl ergibt sich aus der vorherigen, indem die am weitesten rechts stehende Zahl in der binären Erweiterung entfernt wird. Wenn dies jedoch die Zahl 0 ergibt, subtrahieren wir stattdessen 1 und erstellen einen neuen Einsenblock, der ein neues kleineres Dreieck beginnt. Dies wird implementiert als
y=y&y-1or~-y
, woy&y-1
ist ein Trick, um die am weitesten rechts stehende 1 zu entfernen, undor~-y
gibty-1
stattdessen, wenn dieser Wert 0 war.Python 2 , 49 Bytes
Probieren Sie es online!
Eine Funktion, die druckt und mit einem Fehler beendet wird. Das schönere Programm unten fiel länger aus.
51 Bytes
Probieren Sie es online!
quelle
Jelly ,
11 bis10 BytesPort of @Grimys 05AB1E-Antwort , also stelle sicher, dass du ihn positiv bewertest!
-1 Byte dank @Grimy .
Probieren Sie es online aus.
Erläuterung:
quelle
R_2
->Ḷ’
für -1.Ḷ
ist der einzig sinnvolle Bereich , ich wünschte wirklich, 05AB1E hätte einen Single-Byter dafür.Perl 5 (
-n
),41 -40 Bytes-1 Byte Danke an Xcali
TIO
"{0,1}"x$_
: Die Zeichenfolge wird"{0,1}"
n-mal wiederholt"0b".
: verketten zu"0b"
glob
: Glob Expansion (kartesisches Produkt)map{
...}
: für jedes Element/01.*1/||
: zu überspringen, wenn01
dann etwas folgt1
say oct
: in dezimal umwandeln und sagenquelle
JavaScript (ES6), 43 Byte
Verwenden Sie im Zweifelsfall die Methode von xnor .
Probieren Sie es online!
JavaScript (ES6),
59 57 5552 ByteProbieren Sie es online!
Wie?
Kommentiert
quelle
Python 2 ,
9576 BytesProbieren Sie es online!
quelle
Perl 6 , 43 Bytes
Probieren Sie es online!
Anonymer Codeblock, der eine Zahl annimmt und die durch Zeilenumbrüche getrennte Sequenz ausgibt. Dies funktioniert, indem Sie n-mal mit 0 beginnen und dann entweder
01
mit10
oder das letzte Mal0
mit a ersetzen1
bis die Zahl nur noch eins ist.Oder 40 Bytes mit Nahuel Fouilleuls Ansatz
Probieren Sie es online!
quelle
01
durch10
oder das letzte0
durch a ersetzen,1
bis die Zahl nur noch eins ist " Das ist ein genialer Schachzug!Python 2 , 60 Bytes
Probieren Sie es online!
Python 3 , 76 Bytes
Probieren Sie es online!
quelle
Python 2 , 67 Bytes
Probieren Sie es online!
quelle
Python 3 , 62 Bytes
Probieren Sie es online!
Die Idee ist mehr oder weniger die gleiche wie bei @ Arnauld .
Eine weitere 65-Byte-Lösung:
Probieren Sie es online!
quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
05AB1E ,
1312 Bytes-1 Byte dank @Grimy ( siehe auch seine kürzere Herangehensweise hier).
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
oL<ʒbIj1Û1¢2‹
. Sieht nicht so aus, als könnte ich es senken.oL<ʒbIj1ÛSO2‹
versucht zu sehen, wo mein Fehler war. :) Aber ich bin froh zu sehen, dass Sie ausnahmsweise keine kürzere Version für eine meiner Antworten finden. ; p (inb4 findest du immerhin einen kürzeren xD)SO2‹
kann vielleicht irgendwie 3 Bytes sein, aber ich sehe es nicht und bin mir auch nicht ganz sicher .. Es gibt einige Alternativen, wieSO1~
oderSÆ>d
, aber ich kann keine 3-Bytes finden.SO!
. Ich bin mir ziemlich sicher, dass ich einige alte Antworten habe,2‹
die auch davon profitieren könnten.Netzhaut , 26 Bytes
Probieren Sie es online! Ausgänge in binärer Form. Wenn das nicht akzeptabel ist, dann für 39 Bytes:
Probieren Sie es online! Erläuterung:
Konvertieren Sie die Eingabe in eine Folge von
n
Nullen.Ordnen Sie alle möglichen nicht leeren Teilzeichenfolgen zu.
Geben Sie für jede Teilzeichenfolge Folgendes aus: das Präfix mit
0
s wurde in s geändert1
. das Suffix; Die Übereinstimmung mit der Initiale0
änderte sich zu1
.Konvertiert von binär zu dezimal.
quelle
Brachylog , 27 Bytes
Probieren Sie es online!
Ausgaben außer Betrieb und mit Duplikaten. Wenn das nicht in Ordnung ist, gehe
do
zum Ende.quelle
Holzkohle , 19 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Perl 5 , 40 Bytes
Probieren Sie es online!
quelle
Retina , 24 Bytes
Ausgänge in binärer Form. Die Eingabe sollte einen nachgestellten Zeilenumbruch haben.
Erklärungsversuch:
Ich habe versucht, die 3 Bytes lange
/0/
Regex-Option durch Neuanordnen der Optionen zu umgehen , konnte dies aber nicht.Probieren Sie es online!
quelle
C (clang) , 73 Bytes
Probieren Sie es online!
quelle
k4,
2824 Bytes@ Grimys Ansatz auf k4 portiert
edit: -4 danke an ngn!
quelle
!:'1+|!:
->|,\!:
xexp
|,\!:
scheint jetzt so offensichtlich, dass ich es sehe!