Einführung
Hinweis: Dies ist keine Methode, um das Betrügen zu fördern. Wie Cᴏɴᴏʀ O'Bʀɪᴇɴ bereits sagte, ist das Lernen die beste Lösung, um einen Test zu bestehen: 3.
Betrachten Sie die folgenden Antworten auf den Multiple-Choice-Test:
ABCBCAAB
Hier ist eine Tabelle, die angibt, ob die Antworten übereinstimmen:
A B C B C A A B
A 1 0 0 0 0 1 1 0
B 0 1 0 1 0 0 0 1
C 0 0 1 0 1 0 0 0
Dies gibt uns die folgenden Zahlen:
10000110, 01010001, 00101000
Die Herausforderung besteht darin, diese Binärzahlen zu drucken. Es ist jedoch wichtig zu sehen, welche Buchstaben im Multiple-Choice-Test verwendet werden. Beispielsweise:
ABCDCDBCDABC
Dieser höchste Buchstabe ist D
der 4. Buchstabe des Alphabets . Daher müssen wir 4 verschiedene Binärzahlen ausgeben . Nämlich:
100000000100, 010000100010, 001010010001, 000101001000
Beachten Sie, dass Sie sich den höchsten Buchstaben ansehen müssen . Betrachten Sie das folgende Beispiel:
AACCACAC
Obwohl das B
nicht verwendet wird, müssen wir das binäre Ergebnis für ausgeben B
. Das heißt, die Antwort wäre:
11001010, 00000000, 00110101
Aufgabe
Ausgehend von den Antworten auf einen Multiple-Choice-Test geben Sie die Binärzahlen aus. Sie können davon ausgehen, dass die Eingabe nicht leer ist und nur die Buchstaben enthält[A-Z]
. Anstelle von Einsen und Nullen können Sie auch Wahr und Falsch verwenden.
Testfälle:
Input: ABBBABABA
Output: 100010101, 011101010
Input: AAAAAAAAA
Output: 111111111
Input: AFGHEEHFD
Output: 100000000 000000000 000000000 000000001 000011000 010000010 001000000 000100100
Input: Z
Output: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
Input: ABCDCDBCDABC
Output: 100000000100, 010000100010, 001010010001, 000101001000
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
[a-z]
stattdessen verwenden?Antworten:
Pyth, 12 Bytes
Ausgabe als verschachteltes Array von Booleschen Werten.
Probieren Sie es hier aus .
quelle
Python 3, 71
22 Bytes dank Ogaday gespart.
3 Bytes gespart dank DSM.
Eine Reihe von Bytes wurde gespeichert, da eine Reihe von Bools gültig ist.
Übernimmt die Eingabe in Großbuchstaben.
quelle
*k,=map(ord,input())
PowerShell,
959473 ByteNimmt die Eingabe als Großbuchstaben, wandelt sie jedoch sofort um
[char[]]
. Wir durchlaufen dann eine Schleife von0..
bis zum Maximalwert von$a
alphabetisch (daher die-65
Konvertierung von ASCII). Zum BeispielADCEB
kann dies als eine Schleife vonA
bis betrachtet werdenE
.Bei jeder Iteration setzen wir eine Hilfsvariable
$d
, die dem aktuellen alphabetischen Wert (nicht ASCII) entspricht. Wir durchlaufen dann$a
jedes Mal , wenn wir entweder0
oder1
in die Pipeline stellen, alle , je nachdem, ob$_-$d-65
es sich um Wahrheit oder Falschheit handelt (dh ob wir uns im richtigen "Slot" befinden). Dies funktioniert, weil jeder Wert ungleich Null in PowerShell der Wahrheit entspricht. Das heißt, wenn unser aktueller Buchstabe$_
nicht dem Slot "entspricht", in dem wir uns befinden$d
, ist der!
von$false
oder0
.Jedes dieser Arrays von
0
s und1
s wird dann-join
zusammengefügt und erneut in die Pipeline eingefügt. Wenn die äußere Schleife endet, haben wir ein Array von Zeichenfolgen, die eine Zeichenfolge pro Zeile drucken.Beispiele
Edit 1 - speicherte ein Byte mit Boolean-not anstelle von -eq.
Edit 2 - speicherte weitere 21 Bytes durch Eliminieren des zusätzlichen Arrays $ b
quelle
LabVIEW,
302220 LabVIEW-GrundelementeGeht von az durch, bis die Summe aller Bools gleich der Eingabelänge ist. Wandelt dann die Bools in Zahlen um.
Jetzt wird direkt das Maximum genommen, anstatt die Bool-Summe zu überprüfen.
Da 2D-Bools jetzt brauchbar sind, spare ich 2 Primitive, indem ich den grünen Draht davor ausgebe. Ich
?1:0
könnte es wiederholen, bin aber zu faul ...quelle
Cjam, 25 Bytes
Seufzer,
Erläuterung
quelle
Haskell,
4634 BytesAnwendungsbeispiel:
g "ACDC"
->[[True,False,False,False],[False,False,False,False],[False,True,False,True],[False,False,True,False]]
.Wie es funktioniert:
quelle
Pyth,
2019171514 BytesErläuterung:
Gibt ein 2D-Array von Bools aus
Probieren Sie es hier aus
quelle
ES6, 92 Bytes
Gibt ein Array von Arrays von Falschen und Wahrheiten zurück. Wenn Sie ein Array von Zeichenfolgen mit Nullen und Einsen bevorzugen, dann für 97 Bytes:
quelle
Oktave, 19 Bytes
Verwendet die automatische Übertragung von Octave über die Reichweite
A
bis zum Element max in der Eingabe, um ein boolesches 2D-Array übereinstimmender Elemente zu erstellen.Beispiel:
Probieren Sie es hier auf ideone .
quelle
Lua,
208189 BytesDas war in lua schwierig, wie immer müssen wir alles von Grund auf neu machen, und es nimmt viel Platz ein! Dieses Programm nimmt einen String als Argument und gibt das Ergebnis aus :).
Edit: @Adnan hat mir gesagt, dass wir jetzt eine Matrix von Booleschen Werten zurückgeben dürfen. Hier ist eine neue Version! Es ist jetzt eine Funktion, die eine Zeichenfolge mit Großbuchstaben verwendet und die Matrix zurückgibt :).
Alte 208 Byte Version
Dies ist diejenige, die mit Argumenten und Druckergebnissen arbeitet.
Ungolfed und Erklärungen
Der Versuch, ein Array in Lua zu drucken, würde dazu führen, dass dessen Adresse gedruckt wird und das Verketten von Bools nicht möglich ist. Hier ist eine Funktion, die Ihnen hilft, wenn Sie diese Einreichung testen möchten
quelle
Perl, 84 Bytes
Oh je, ich habe anscheinend den Textmarker kaputt gemacht.
Ungolfed-Version:
quelle
PHP,
106929087 BytesVerwendet die Windows-1252-Codierung.
Laufen Sie wie folgt (
-d
nur aus ästhetischen Gründen hinzugefügt):$i=0
$x
anderen Stelle und Inkrementieren$c
zur Kompensation gespeichertquelle
C #, 68 Bytes
Führen Sie in C # Pad
Diese anonyme Funktion nimmt ein
char[]
als Eingabe und gibt einIEnumerable<IEnumerable<int>>
mit nur Nullen und Einsen aus.quelle
k, 15 Bytes
Probieren Sie es online!
quelle