Möglicherweise haben Sie folgende Rätsel gesehen:
Finden Sie die
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
Die Herausforderung besteht darin, ein Programm zu schreiben, das den Index der verschiedenen Buchstaben eines Bildes findet.
Eingang
Eingabe wird ein sein Image
. Das Bild besteht aus einer Zeile von schwarzem Text in der Helvetica 24 pt. Schrift auf weißem Hintergrund. Der Text besteht aus einer Auswahl von zwei Zeichen: einem Zeichen, das wiederholt wird, und einem Zeichen, das nur einmal vorkommt. Zum Beispiel:
Ausgabe
Die Ausgabe ist ein Integer
Index des verschiedenen Zeichens. Im obigen Beispiel wird die Ausgabe sein 4
. (Beachten Sie, dass die Indizes einer Zeichenfolge bei beginnen. 0
)
Programmspezifikationen
Wie beim Code Golf üblich, gewinnt das kürzeste Programm.
Testfälle
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Antworten:
Dyalog APL ,
3132 Bytes⎕IO←0
Indizes ab 0 (pro OP) zu erhalten, was in vielen APL-Systemen ohnehin Standard ist.1,⍵
Stellen Sie∧⌿
für jede Spalte eine Spalte mit weißen Pixeln (um den Rand zu gewährleisten) voran, wenn2>/
am linken Rand jedes Zeichens (paarweise größer als) ein rein weißer Boolescher Wert (vertikale UND-Reduzierung)⍵⊂⍨
in Blöcke aufgeteilt ist, die an jedem TRUE beginnen.{
…}¨
Für jeden Block∧⌿⍵
Boolescher Wert für jede Spalte, wenn rein weiße (vertikale UND-Reduktion)⍵/⍨~
Spalten, die nicht [rein weiß] sind∘.≡⍨
, jedes Element mit allen Elementen+⌿
übereinstimmen. Anzahl der Blöcke identisch mit jedem Blockindex (vertikale Plus-Reduktion)1⍳⍨
der ersten (dh einzigartiges Element)Angenommen, das Bild enthält schwarze (0) und weiße (1) Pixel in der Matrix
I
und zwischen den Zeichen befindet sich mindestens eine rein weiße Pixelspalte."!ICH!!":
"mmnmm":
quelle
{⍵/⍨~∧⌿⍵}¨
und nur bei bleiben{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 Bytes
Ahh, Mathemeatica gebaut. So erstaunlich. (Und so lange ...) Sprengt auf | /! : /; , /. `/ 'und explodiert anders auf m / n.
quelle
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 Bytes
Gleiche Fehler wie bei der anderen mathematica-Lösung, da sie auf derselben
TextRecognize
Funktion beruht .quelle
Length@First@Split@Characters@TextRecognize@#&
@*
nicht zu sparen.