Bei einer Binärzahl A als Eingabe mit d> 1 Stellen geben Sie eine Binärzahl B mit d Stellen gemäß den folgenden Regeln aus, um die n-te Stelle von B zu finden:
Die erste Ziffer von B ist Null, wenn die erste und die zweite Ziffer von A gleich sind; ansonsten ist es eins.
Wenn 1 <n <d, dann ist die n-te Ziffer von B Null, wenn die (n-1) -te, n-te und (n + 1) -te Ziffer von A gleich sind; ansonsten ist es eins.
Die d-te Ziffer von B ist Null, wenn die (d-1) -te und die d-te Ziffer von A gleich sind; ansonsten ist es eins.
Regeln
Das Eingabe- / Ausgabeformat für Zeichenfolgen / Listen ist in Ordnung. Eine andere erlaubte Art der Eingabe / Ausgabe ist eine ganze Zahl, gefolgt von der Anzahl der vorangegangenen Nullen (oder der Anzahl der vorangegangenen Nullen).
Machen Sie Ihren Code so kurz wie möglich.
Testfälle
00 -> 00
01 -> 11
11 -> 00
010111100111 -> 111100111100
1000 -> 1100
11111111 -> 00000000
01010101 -> 11111111
1100 -> 0110
1100 -> 0110
(Die ersten beiden Stellen der Ausgabe sind in allen anderen Testfällen immer identisch; das Gleiche gilt für die letzten beiden Stellen.)Antworten:
Haskell,
595854 BytesProbieren Sie es online!
Bearbeiten: @ Ørjan Johansen 4 Bytes gespeichert. Vielen Dank!
quelle
"0110"!!(a+b+c)
ein Byte gespeichert.[last s]
kann auf denscanr
Anfangswert verschoben werden.Gelee , 9 Bytes
Probieren Sie es online!
I / O als Ziffernliste.
Erläuterung:
quelle
.ị
- Ruft das Element bei Index 0,5 ab . Da floor (0.5) ≠ ceil (0.5) ist , werdenị
die Elemente bei den Indizes 0 und 1 zurückgegeben . Jelly ist eins indiziert, also packt 0 tatsächlich das letzte Element.Ṛ
kehrt das Paar um (weil sie als zurückgegeben werdenlast, first
). Dannj
schließt sich das Paar an dem Eingang undṡ3
teilt sie in Scheiben mit einer Länge von 3 überlappendenE€
Kontrollen (für jede Liste) , wenn alle Elemente gleich sind, und¬
negiert logisch jedem.05AB1E , 6 Bytes
I / O ist in Form von Bit-Arrays.
Probieren Sie es online!
Wie es funktioniert
quelle
05AB1E , 11 Bytes
Probieren Sie es online! oder als Testsuite
Erläuterung
quelle
Haskell ,
666159 BytesProbieren Sie es online! Die Eingabe ist eine Liste von Nullen und Einsen, die Ausgabe ist eine Zeichenfolge. Anwendungsbeispiel:
g [0,1,0,1,1,1,1,0,0,1,1,1]
Erträge"111100111100"
.Vorherige 61-Byte-Lösung:
Probieren Sie es online!
quelle
J ,
26-14BytesDank an die 05AB1E-Lösung von Emigna
Probieren Sie es online!
Ursprünglicher Versuch
Probieren Sie es online!
quelle
Python 3 , 58 Bytes
Probieren Sie es online!
quelle
Schale ,
1511 BytesNimmt Eingaben als Liste, versuche es online! Oder probieren Sie diesen aus , der Zeichenfolgen für E / A verwendet.
Erläuterung
quelle
Gelee , 8 Bytes
I / O ist in Form von Bit-Arrays.
Probieren Sie es online!
Wie es funktioniert
quelle
I0,0jI¬¬
JavaScript (ES6), 45 Byte
Nimmt die Eingabe als Array von Zeichen. Gibt ein Array von Ganzzahlen zurück.
Testfälle
Code-Snippet anzeigen
Kommentiert
quelle
Mathematica, 56 Bytes
Probieren Sie es online!
quelle
Gelee , 16 Bytes
Probieren Sie es online!
Ich wollte Golf spielen, aber Erik hat bereits eine kürzere Lösung und Golf würde meine nur näher zu seiner bringen. Ich spiele immer noch Golf, aber ich werde nicht auf den neuesten Stand bringen, wenn ich ihn nicht schlagen oder eine einzigartige Idee finden kann.
Erläuterung
quelle
Perl 5 , 62 + 1 (
-n
) = 63 BytesProbieren Sie es online!
quelle
s;..$;
Konstrukt am Ende ist geschickt. Ich werde mich daran erinnern müssen.Schale , 10 Bytes
Probieren Sie es online!
Danke an Zgarb für -1 Byte.
quelle
Ẋo±≠
Speichert ein Byte.Japt ,
141312 BytesTeilweise aus Dennis 'Jelly-Lösung portiert. Eingabe und Ausgabe sind Arrays von Ziffern.
Dank ETHproductions ein Byte gespart.
Versuch es
Erläuterung
Implizite Eingabe eines Arrays
U
.ä-
Ruft die Deltas des Arrays ab.pT
drückt 0 an das Ende des Arrays.äaT
Fügen Sie dem Anfang des Arrays zunächst eine weitere 0 hinzu, bevor Sie die absoluten Deltas abrufen.mg
Ordnet die Elemente des Arrays zu und gibt das Vorzeichen jedes Elements als -1 für negative Zahlen, 0 für 0 oder 1 für positive Zahlen zurück.quelle
.ø
erstellen, bei der ein Element am Anfang und am Ende eines Arrays steht, wie in der 05AB1E-Antwort. Ich denke, das würde es 1 Byte kürzer machen ...A.ä()
das zweite Argument vorangestellt ist, können Sie ein drittes Argument hinzufügen, das angehängt wird. Also, in diesem FallpT äaT
könnte sichäaTT
für eine 2 - Byte - Einsparung.Python 3 , 54 Bytes
E / A erfolgt in Form von Booleschen Arrays.
Probieren Sie es online!
quelle
J, 32 Bytes
Wie es funktioniert:
Ich habe einige @s und Klammern weggelassen, die nur sicherstellen, dass es gut zusammenpasst.
Ein schrittweises Beispiel:
quelle
Retina , 35 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung: Der reguläre Ausdruck beginnt damit, dass nacheinander jede eingegebene Ziffer abgeglichen wird. Eine Erfassungsgruppe versucht, eine andere Ziffer vor oder nach der betreffenden Ziffer abzugleichen. Das
?
Suffix ermöglicht dann, dass die Erfassung 0- oder 1-mal übereinstimmt.$#2
verwandelt dies in die Ausgangsziffer.quelle
Pyth , 15 Bytes
Probieren Sie es hier aus!
Alternative:
mtl{d.:s+hQeBQ3
..aM._M.+++Z.+QZ
.Dadurch wird das erste Element vorangestellt und das letzte Element angehängt, dann werden alle überlappenden Teilzeichenfolgen der Länge 3 abgerufen und schließlich die Anzahl der unterschiedlichen Elemente in jeder Unterliste ermittelt und dekrementiert. Dieses Durcheinander wurde um Mitternacht auf dem Handy durchgeführt, sodass ich mich nicht wundern würde, wenn es ein paar einfache Golfplätze gäbe.
quelle
Gaia , 9 Bytes
Probieren Sie es online!
Erläuterung
Gaia , 9 Bytes
Probieren Sie es online!
quelle
C , 309 Bytes
Nicht gerade eine Golfsprache, aber dennoch eine Antwort wert. Probieren Sie es hier aus !
Erläuterung
quelle
APL + WIN, 29 Bytes
Fordert zur Bildschirmeingabe als Ziffernvektor auf und gibt einen Ziffernvektor aus.
Erläuterung
quelle
SNOBOL4 (CSNOBOL4) , 273 Bytes
Probieren Sie es online!
quelle
C (tcc) ,
646256 BytesI / O ist in Form von Strings. Die Funktion f ändert ihr Argument s an Ort und Stelle.
Probieren Sie es online!
quelle
Common Lisp, 134 Bytes
Probieren Sie es online!
quelle