Eingang
- Eine Liste von 1 bis 255 positiven ganzen Zahlen (einschließlich), jeweils im Bereich von 1 bis 2 32 - 1 (einschließlich).
- Ihr Eingabeformat muss nicht mit den Testfällen identisch sein.
- Eingaben ohne führende Nullen müssen akzeptiert werden.
- Eingaben mit führenden Nullen müssen nicht akzeptiert werden.
- Sie können ein beliebiges Trennzeichen zwischen den ganzen Zahlen verwenden.
- Eine Ganzzahl kann durch eine Zeichenfolge dargestellt werden, die einzelnen Ziffern einer bestimmten Ganzzahl müssen jedoch zusammenhängend sein.
- Sie können eine beliebige Basis für die Eingabe verwenden (einschließlich binär und unär), vorausgesetzt, die Ausgabe befindet sich ebenfalls in dieser Basis.
Ausgabe
- Eine einzelne Ganzzahl.
- Die Ausgabe darf keine führenden Nullen haben.
- Die Ausgabe muss sich in derselben Basis wie die Eingabe befinden.
- Die Ausgabe kann nach Belieben berechnet werden, muss jedoch mit dem Ergebnis der folgenden Berechnung übereinstimmen:
Biplex berechnen
- Die Bits einer Binärdarstellung werden von rechts beginnend mit Null nummeriert, sodass Bit i in der Spalte 2 i darstellt .
- Die i- te Bitsumme ist die Summe der i- ten Bits der binären Darstellungen jeder der Eingangszahlen.
- Das Bitmaximum ist der höchste Wert, den die Bitsummen annehmen.
- Das Bitsummenminimum ist der niedrigste von Null verschiedene Wert, den die Bitsummen annehmen.
- Die i- te Ziffer der Binärdarstellung des Ausgangs lautet:
- 1, wenn die i- te Bit - Summe gleich dem Bit-Maximum oder dem Bit-Minimum ist.
- 0 sonst.
Gearbeitetes Beispiel
In diesem Beispiel wird Binär für die Ein- und Ausgabe verwendet.
Input: 100110
1101110
1100101
_______
Bitsums: 2301321
Output: 101101
Das Bitsummenmaximum ist 3 und das Bitsummenminimum ist 1, daher hat der Ausgang überall 1s, das Bitsummenmaximum 3 oder 1 und überall 0s.
Testfälle
Testfälle sind in der Form:
Input => Output
Die Testfälle in Binär:
[1] => 1
[10] => 10
[1, 10, 101] => 111
[11111111111111111111111111111111] => 11111111111111111111111111111111
[10010010010010010010010010010010, 10101010101010101010101010101010, 11011011011011011011011011011011] => 11100011100011100011100011100011
[10001011100010100110100101001001, 10110000111110010000111110111010, 1101110001101101011010010100101, 1010101010001011101001001010101] => 11
Dieselben Testfälle in Dezimalform:
[1] => 1
[2] => 2
[1, 2, 5] => 7
[4294967295] => 4294967295
[2454267026, 2863311530, 3681400539] => 3817748707
[2341103945, 2969112506, 1849078949, 1430639189] => 3
Bestenliste
Vielen Dank an Martins Leaderboard Snippet
Der Operator wurde nach einer Diskussion im Chat als Biplex (Binary Plane Extrema) bezeichnet .
code-golf
base-conversion
binary
Trichoplax
quelle
quelle
You may choose to use any base for input and output (including binary and unary), provided they are both in the same base
. Also ja, machen Sie es :)Antworten:
Gelee, nicht konkurrierend
14 bytes Diese Antwort ist nicht konkurrierend, da die Herausforderung älter ist als die Erstellung von Jelly.
Probieren Sie es online!
Wie es funktioniert
quelle
Pyth,
2625 BytesProbieren Sie es online aus: Demo oder Test Suite
Erläuterung
quelle
_B
Verwendung ist brillantJ,
3130242321 BytesDies ist ein stillschweigendes, monadisches Verb, das eine Liste von Dezimalzahlen aufnimmt und deren Dezimal-Biplex zurückgibt.
Vielen Dank an @Zgarb für seine Vorschläge, die 4 Bytes direkt gespeichert und den Weg für 2 weitere geebnet haben!
Vielen Dank an @randomra für das Golfen mit 2 weiteren Bytes!
Testfälle
Wie es funktioniert
quelle
Minkolang 0,10 ,
10979 BytesEingabe und Ausgabe erfolgen dezimal. Probieren Sie es hier aus.
Erläuterung
Alte Version:
Probieren Sie es hier aus!
Erläuterung
Der springende Punkt dabei ist, dass die Array- Funktion häufig verwendet wird (
a A
), um die Bitsummen zu speichern, von denen das Minimum und das Maximum gefunden werden. Dann werden1
s und0
s entsprechend ausgegeben, wobei führende0
s an zwei Stellen ausgegeben werden .quelle
Brainfuck , 619 Bytes
Die erste Antwort ist viel zu lange her, also dachte ich, ich würde eine gute machen!
Habe ... Habe ich gewonnen?
Dieses Programm erwartet Zeilenumbrüche (ASCII
10
) nach jeder Binärzahl und benötigt32
am Ende ein Leerzeichen (ASCII ).Testläufe:
(Neue Zeilen nach jedem Fall mit
++++++++++.
am Ende des Programms hinzugefügt)Erläuterung
Noch in Arbeit, aber langsam. Aus Zeitgründen habe ich die Notizen, die ich beim Schreiben dieses Programms gemacht habe, nur kopiert, was für eine Erklärung vorerst ausreicht:
quelle
CJam, 27 Bytes
Nimmt Eingaben als Liste im CJam-Stil zur Basis 10. Teste es hier. Alternativ können Sie alle Testfälle ausführen (das Skript verwirft die erwartete Ausgabe und konvertiert das Eingabeformat nach Bedarf).
Erläuterung
quelle
1
s in den Bits enthält, die den Bitebenen entsprechen, auf denen die Minima und Maxima aufgetreten sind.JavaScript (ES6),
215185176 ByteVerwendung
Erläuterung
quelle
f=(a)=>{}
=f=a=>{}
2) Sie könnten Ihrefor...in
Schleifen infor...of
Schleifen verwandeln und ein paar Bytes sparen:for(i in a)for(b=a[i]...
=for(i of a)for(b=i...
,for(i in s)r=s[i],d=...
=for(r of s)d=...
3) Bitweises ODER|
ändert automatisch Wahr zu 1 und Falsch zu 0,o+=r==q|r==d?1:0;
ist also dasselbe wieo+=r==q|r==d;
.return parseInt(o,2)
bis:return+('0b'+o)
s[l-d-1]=(s[l-d-1]|0)
mits[T=l-d-1]=(s[T]|0)
. Rasieren mehr 2, ersetzenb=i.toString(2),l=b.length,d=l
mitd=l=(b=i.toString(2)).length
.Julia, 141 Bytes
Ungolfed:
quelle
Simplex v.0.7 , 38 Bytes
Simpl ified Kommentare. Eingabe in Binär, momentan arbeitet kein Interpreter. Hoffentlich sind die Kommentare ausreichend.
quelle
Oktave, 50 Bytes
Beispiel:
quelle
@(a)
definiert eine anonyme Funktion , die eine Eingabe nimmt Vektora
.[""
erzwingt die Ausgabe in eine Zeichenfolge (glaube ich).(b=sum(a-48))
definiertb
den Vektor, der die Bitsummen enthält.b==max(b)
wird ein Vektor sein, der1
an einer gegebenen Stelle ein hat, wenn die Bitsumme dort ein Maximum hat, und0
ansonsten ein. Istb(b>0)
ein Vektor von jedem Elementb
größer als0
, sob==min(b(b>0))
ist ein Vektor ein, der a enthält,1
wenn die Bitsumme das Minimum ist, und0
ansonsten. Dann ist es zusammen ODER und+48
für ASCII.function o=b(i)
(newline)r=sum(i>48);o=['' (r==max(r)|r==min(r))+48];
JavaScript (ES6), 158
Eine Funktion mit einem numerischen Array-Parameter, die eine Zahl zurückgibt. Mit der gleichen Byteanzahl kann ein String-Array-Parameter (der Basis-2-Darstellungen enthält) abgerufen und ein Basis-2-String zurückgegeben werden. Verschieben Sie dazu einfach
.toString(2)
das Ende nachr
.quelle
Haskell,
198182178161 ZeichenIch bin noch Anfänger im Golfen. Nur 80 Ruf kommt von der Antwort.
Wie funktioniert es.
Anstelle des Auffüllens kehre ich das Array um und füge es mit dem benutzerdefinierten (&) hinzu. Ich verwende kein foldl1 (zipWith (+)), das kürzer ist, weil zipWith das überflüssige Element löscht. Dann finde ich das Maximum und das Minimum ungleich Null, das auch eine benutzerdefinierte Funktion erforderte. Dann ordne ich das Element dem Maximum und dem Minimum ungleich Null zu, 1, wenn es übereinstimmt, 0, wenn es nicht übereinstimmt. Dann kehren wir es um und wandeln es in eine Binärzahl um.
MACHEN:
Data.List
quelle
k
,c
nur einmal verwendet, daher muss es nicht in diewhere
Klausel eingefügt werden. Verwenden Sie es direkt:...||(x==a#b)...
. Warum die geschweiften Klammern? Inl
:concat.map show
istconcatMap show
oder noch besser>>=
:l=(>>=show).v...
. (Anmerkung: Es gibt auch=<<
welche, die dasselbe tun, jedoch mit gespiegelten Argumenten:)(show=<<).v...
.>>=
und hier=<<
im Listenkontext arbeiten und verschiedene Dinge in Funktion oder anderen Kontexten tun.[]
in den letzten Fällen von&
und ersetzen#
durch_
:b&_=b
und_#l=l
.(x==b)||(x==c)
(oder(x==b)||(x==a#b)
wenn Sie entfernenc
) kann durchelem x[b,c]
(respelem x[b,a#b]
. :) ersetzt werden .u=maximum
undk a=m(\x->fromEnum$elem x[u a,a#u a])a
sollte funktionieren._&a=a
, es muss bleiben[]&a=a
, sonst geht die erste Liste verloren, wenn die zweite leer ist. Verwenden Sie_
nur im letzten Fall - vielleicht ist das Ihr Fehler.Python 3,
181126122 Bytes(Ich habe die meisten Schrägstriche bei der Byteanzahl entfernt, weil es ein bisschen lächerlich wurde.) 21 Bytes weniger dank Sp3000 !
Etwas weniger Golf gespielt:
Die Eingabe wird in Binärform erwartet, wobei die Zahlen nur durch Leerzeichen voneinander getrennt werden. Die Ausgabe erfolgt ebenfalls binär.
quelle
Javascript,
154150 BytesVielen Dank für die edc65-Methode für die Min / Max-Berechnung, die meinen Code um 4 Byte verkürzt hat.
Erläuterung
quelle
f=i=>(m=0,r=[],i.map(n=>{for(k=32;k--;n=n/2|0)r[k]=~~r[k]+n%2}),r.map(n=>m+=m+(n==Math.min(...r.filter(x=>x))|n==Math.max(...r))),m)
ShapeScript , 186 Byte
Eine wichtige, nutzlose Sprache für einen wichtigen, nutzlosen Operator.
I / O ist binär. Das Programm erwartet jede Nummer in einer eigenen Zeile, die mit einem Zeilenvorschub endet.
Probieren Sie es online!
Testfälle
quelle
APL, 27 Bytes
Dies ist eine monadische Funktion, die eine Liste von Dezimalzahlen verwendet und deren Dezimal-Biplex zurückgibt.
Probieren Sie es online in der ngn / apl-Demo aus .
Wie es funktioniert
quelle
Wolfram-Sprache, 113 Bytes
Diese Version nimmt Eingaben von einem Popup-Fenster entgegen, wobei die Zahlen in der Form "{x, y, z, ...}" eingegeben werden (keine Anführungszeichen).
Eingang:
Ausgabe:
Nimmt Eingaben in einer dynamischen Manipulation als Zeichenfolge der Form "{x, y, z}" entgegen, wobei x, y und z ganze Zahlen zur Basis 10 sind (mit oder ohne führende Nullen). Die Ausgabe erfolgt ebenfalls in Basis 10.
Es gibt andere Möglichkeiten, dies auf eine Art und Weise einzugeben, die die Anzahl der Zeichen einspart, aber ich denke, diese Lösung ist eine elegante Verwendung einer dynamischen GUI, die die Berechnung durchführt
Wenn Sie dies in der Cloud ausführen möchten, können Sie CloudDeploy verwenden:
Die Cloud-Bereitstellung erhöht die Anzahl der Charaktere jedoch auf 256 ...
Die Eingabe in FormPage ist auch eine Zeichenfolge der Form "{x, y, z}", wobei x, y und z Ganzzahlen zur Basis 10 sind.
Ich habe dies selbst in der Cloud implementiert und Sie können es unter https://www.wolframcloud.com/objects/97b512df-64f8-4cae-979b-dba6d9622781 ausprobieren
quelle
Python 3, 197
Es werden durch Leerzeichen begrenzte Binärzahlen verwendet.
Ungolfed-Version:
quelle
C #, 255
Ein vollständiges Programm, das als Kommandozeilenargumente (durch Leerzeichen getrennt) in Dezimalzahl eingegeben wird.
Besser lesbar:
quelle
Ruby, 127 Bytes
Nimmt ein Array als Eingabe.
quelle
CoffeeScript, 194 Bytes
Nimmt Eingaben als durch Kommas getrennte Binärzahlen an, gibt sie als Binärzahlen aus.
Versuch es.
quelle
GolfScript, 46 Bytes
Probieren Sie es online im Web GolfScript aus .
Testfälle
quelle
C ++, 192 Bytes
Akzeptiert die Eingabe eines vorzeichenlosen 32-Bit-Integer-Arrays und einer Anzahl von Elementen in diesem Array.
Ungolfed:
quelle