Sebelum penemuan sidik jari dan pengujian DNA, polisi Inggris menggunakan sistem antropometrik untuk mengidentifikasi pelaku berulang. Bagian-bagian tertentu dari tubuh penjahat diukur dan disimpan dalam catatan - bagian-bagian tubuh ini diasumsikan tidak berubah ukurannya setelah dewasa. Sistem ini dikenal sebagai bertillonnage .
Diagram di bawah ini menunjukkan sistem pengarsipan yang digunakan oleh polisi untuk mengakses catatan-catatan ini dengan cepat.
Diagram 1: Sistem pengarsipan dengan laci bernomor.
Catatan: jika Anda tidak dapat melihat gambar, coba cermin imgur atau kompilasi sendiri .
Lemari arsip terdiri dari 81 laci bernomor. Setiap laci berisi kartu, dan setiap kartu memiliki ukuran bagian-bagian tertentu dari tubuh penjahat:
- Panjang kepala mereka (
H
) - Luasnya kepala mereka (
B
) - Lebar telinga kanan mereka (
E
) - Panjang jari telunjuk mereka (
F
)
Setiap pengukuran diklasifikasikan sebagai kecil, sedang atau besar.
Misalnya, laci 56 berisi kartu dengan karakteristik sebagai berikut: H kecil, besar B, menengah E, dan kecil F. ini dapat dinotasikan dengan menggunakan huruf S
, M
dan L
di tempat kecil, menengah, dan besar:
SH,LB,ME,SF
Perhatikan bahwa huruf ukuran lebih dulu, lalu apa ukurannya. Selain itu, tanda seru !
dapat ditempatkan di depan untuk menyebabkan negatif:
!SH,LB,!ME,SF
Ini menunjukkan kartu yang memiliki karakteristik berikut: bukan H kecil, B besar, tidak sedang E, dan kecil F. Ada empat laci yang berisi kartu dengan karakteristik ini - 58, 60, 61, dan 63.
Tugas Anda adalah menulis sebuah program, yang, ketika diberi string yang mencatat beberapa karakteristik, mengeluarkan semua laci yang berisi kartu dengan karakteristik tersebut. Jika tidak ada laci yang berisi kartu dengan karakteristik yang diberikan, output0
.
Berikut adalah beberapa contoh input dan output.
- Input:
SH,LB,ME,SF
Output:56
- Input:
!SH,LB,!ME,SF
Output:58,60,61,63
- Memasukkan:
SB,!MF,!LF
Output:1,2,3,4,5,6,7,8,9
- Input:
MH,!MH
Output:0
Ini kode golf, jadi entri terpendek menang. Ajukan pertanyaan dalam komentar jika spesifikasinya tidak jelas.
Jawaban:
GolfScript 95 ( DEMO )
sumber
Ruby 1.9.3 -
173 157143Edit:
Demo online: http://ideone.com/lodTLt
sumber
select
adalah sinonim yang lebih pendek untukfind_all
. Anda dapat memangkas dua karakter lainnya dengan menggantiy[-2..-1]
dengany[-2,2]
, dan tiga karakter lainnya dengan menggunakan==[]
alih-alih.empty?
.Scala - 951
Pasti tidak akan memenangkan yang ini, terutama karena nama fungsi bawaan yang saya pikir.
Argumen diteruskan ke fungsi
f
f("SH,LB,ME,SF")
=56
sumber
T-SQL -
547544Bukan entri yang menang, tetapi cocok untuk jenis masalah ini.
Pengaturan Tabel Grid - 254
Permintaan -
293290Input dilakukan dengan mendeklarasikan @i sebelum kueri
Saya dapat menyimpan 89 karakter lebih lanjut jika output tidak harus berupa baris yang dibatasi koma
sumber
Mathematica
191235Merupakan setiap nomor sel dalam basis 3. Setiap posisi digit mewakili fitur tubuh. Nilai digit, {0,1,2}, masing-masing mewakili "Kecil", "Sedang", "Besar".
Fitur-fiturnya sesuai dengan digit sebagai berikut:
Misalnya, input,
menandakan:
2001
di base 3 adalah 55 di base 10.Kita perlu menambahkan satu karena kita menghitung sel dari 1, bukan nol.
Kode
Uji Kasus
sumber
Python 3 - 192 - Cobalah!
sumber
Python 2 - 194
Output memiliki tanda kurung, dan tidak peduli tentang urutan output.
Beberapa saran dari Falko, dan beberapa dari saya sendiri untuk melepas 10 karakter.
sumber