Być może widziałeś takie układanki:
Znajdź
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
Wyzwanie polega na napisaniu programu, który znajdzie indeks innej litery na podstawie obrazka.
Wejście
Dane wejściowe będą Image
. Obraz składa się z jednej linii z czarnym tekstem Helvetica 24 pkt. czcionka na białym tle. Tekst będzie się składał z wyboru dwóch znaków: jednego znaku, który jest powtarzany, i jednego znaku, który pojawia się tylko raz. Na przykład:
Wynik
Wynikiem będzie Integer
indeks innego znaku. W powyższym przykładzie wynikiem będzie 4
. (Zauważ, że indeksy łańcucha zaczynają się od 0
)
Specyfikacja programu
Jak zwykle w przypadku golfa kodowego, wygrywa najkrótszy program.
Przypadki testowe
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Odpowiedzi:
Dyalog APL ,
3132 bajtów⎕IO←0
aby uzyskać indeksy zaczynające się od 0 (na OP), które i tak są domyślne w wielu systemach APL.1,⍵
wstaw kolumnę z białymi pikselami (dla zapewnienia marginesu) wartość∧⌿
logiczną dla każdej kolumny, jeśli całkowicie biała (pionowa redukcja AND) wartość2>/
logiczna na lewej krawędzi każdego znaku (para większa niż)⍵⊂⍨
podzielona na bloki rozpoczynające się od każdej PRAWDY.{
…}¨
Dla każdego∧⌿⍵
logicznego bloku dla każdej kolumny, jeżeli kolumny całkowicie białe (pionowa redukcja AND)⍵/⍨~
, które nie są [całkowicie białe],∘.≡⍨
dopasowują każdy element do wszystkich elementów+⌿
liczba bloków identycznych z każdym1⍳⍨
indeksem (indeks pionowy plus redukcja) pierwszego (tj. unikalny element)Zakłada, że obraz ma czarne (0) i białe (1) piksele w matrycy
I
i że między znakami jest co najmniej jedna kolumna z białymi pikselami."!JA!!":
„mmnmm”:
źródło
{⍵/⍨~∧⌿⍵}¨
i pozostać tylko z{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 bajtów
Ahh, wbudowane Mathemeatica. Tak niezwykłe. (I tak długo ...) Wysadza | /! : /; , /. `/ 'i wysadza się inaczej na m / n.
źródło
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 bajtów
Te same awarie, co inne rozwiązanie matematyczne, ponieważ opiera się na tej samej
TextRecognize
funkcji.źródło
Length@First@Split@Characters@TextRecognize@#&
@*
nie oszczędzać.