Anda mungkin pernah melihat puzzle seperti ini:
Temukan
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
Tantangannya adalah untuk menulis sebuah program yang menemukan indeks surat yang berbeda diberikan gambar.
Memasukkan
Input akan menjadi Image
. Gambar akan terdiri dari satu baris dari hitam teks dalam Helvetica 24 pt. font pada latar belakang putih . Teks akan terdiri dari pilihan dua karakter: satu karakter yang diulang, dan satu karakter yang hanya muncul sekali. Contohnya:
Keluaran
Output akan menjadi Integer
, indeks karakter yang berbeda. Pada contoh di atas, hasilnya akan menjadi 4
. (Perhatikan bahwa indeks string dimulai pada 0
)
Spesifikasi Program
Seperti biasa untuk golf kode, program terpendek menang.
Uji Kasus
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Jawaban:
Dyalog APL ,
3132 byte⎕IO←0
untuk mendapatkan indeks yang dimulai dengan 0 (per OP), dan yang merupakan default di banyak sistem APL.1,⍵
tambahkan kolom piksel putih (untuk memastikan margin)∧⌿
boolean untuk setiap kolom jika boolean semua-putih (vertikal DAN-reduksi)2>/
di tepi kiri masing-masing karakter (berpasangan lebih besar dari)⍵⊂⍨
dibagi menjadi blok yang dimulai pada masing-masing BENAR.{
...}¨
untuk setiap blok∧⌿⍵
boolean untuk setiap kolom jika semua-putih (vertikal DAN-reduksi)⍵/⍨~
kolom yang tidak [semua-putih]∘.≡⍨
cocok dengan setiap elemen dengan semua elemen+⌿
jumlah blok identik dengan setiap blok (vertikal plus-reduksi)1⍳⍨
indeks yang pertama (yaitu elemen unik)Mengasumsikan gambar berwarna hitam (0) dan putih (1) piksel dalam matriks
I
, dan setidaknya ada satu kolom piksel semua-putih di antara karakter."!SAYA!!":
"mmnmm":
sumber
{⍵/⍨~∧⌿⍵}¨
dan tetap dengan saja{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 byte
Ahh, Mathemeatica builtins. Begitu menakjubkan. (Dan sangat lama ...) Meledakkan | /! : /; , /. `/ 'dan meledak berbeda di m / n.
sumber
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 byte
Kegagalan yang sama dengan solusi Mathematica lainnya karena bergantung pada
TextRecognize
fungsi yang sama .sumber
Length@First@Split@Characters@TextRecognize@#&
@*
tidak menyelamatkan.