Przed odkryciem odcisków palców i testami DNA brytyjska policja stosowała system antropometryczny do identyfikacji powtarzających się przestępców. Niektóre części ciała przestępców zostały zmierzone i zapisane w rejestrach - założono, że te części ciała nie zmieniają się po dorosłości. Ten system był znany jako bertillonnage .
Poniższy schemat pokazuje system archiwizacji używany przez policję w celu szybkiego dostępu do tych rejestrów.
Schemat 1: System segregowania z numerowanymi szufladami.
Uwaga: jeśli nie widzisz obrazu, wypróbuj lustro imgur lub skompiluj go samodzielnie .
Szafka składa się z 81 ponumerowanych szuflad. Każda szuflada zawiera karty, a każda karta ma wymiary poszczególnych części ciała przestępcy:
- Długość ich głowy (
H
) - Szerokość ich głowy (
B
) - Szerokość ich prawego ucha (
E
) - Długość ich palca wskazującego (
F
)
Każdy pomiar jest klasyfikowany jako mały, średni lub duży.
Na przykład, szuflada 56 zawiera karty z następujących cech: mała H, duże B, podłoża E i F. Ta mała można zapisaną pomocą liter S
, M
lub L
w miejsce, małe, średnie i duże:
SH,LB,ME,SF
Zwróć uwagę, że najpierw jest litera rozmiaru, a następnie jaki jest pomiar. Ponadto wykrzyknik !
można umieścić z przodu, aby spowodować negatywne:
!SH,LB,!ME,SF
Wskazuje to na karty, które mają następujące cechy: niezbyt małe H, duże B, nie średnie E i małe F. Istnieją cztery szuflady, które zawierają karty o tych cechach - 58, 60, 61 i 63.
Twoim zadaniem jest napisanie programu, który, gdy otrzyma ciąg znaków z pewnymi cechami, wyprowadzi wszystkie szuflady zawierające karty o tych właściwościach. Jeśli nie ma szuflad zawierających karty o podanej charakterystyce, wyjdź 0
.
Oto kilka przykładowych danych wejściowych i wyjściowych.
- Wejście:
SH,LB,ME,SF
Wyjście:56
- Wejście:
!SH,LB,!ME,SF
Wyjście:58,60,61,63
- Wejście:
SB,!MF,!LF
Wyjście:1,2,3,4,5,6,7,8,9
- Wejście:
MH,!MH
Wyjście:0
To jest golf golfowy, więc wygrywa najkrótszy wpis. Zadawaj pytania w komentarzach, jeśli specyfikacja nie jest jasna.
Odpowiedzi:
GolfScript 95 ( DEMO )
źródło
Rubin 1.9.3 -
173 157143Edytować:
Demo online: http://ideone.com/lodTLt
źródło
select
jest krótszym synonimemfind_all
. Możesz przyciąć kolejne dwie postacie, zastępujący[-2..-1]
jey[-2,2]
, a trzy kolejne nadal, używając==[]
zamiast.empty?
.Scala - 951
Zdecydowanie nie wygra tego, głównie ze względu na nazwy wbudowanych funkcji.
Argument jest przekazywany do funkcji
f
f("SH,LB,ME,SF")
=56
źródło
T-SQL -
547544Nie jest to zwycięski wpis, ale pasuje do tego rodzaju problemu.
Konfiguracja tabeli siatki - 254
Zapytanie -
293290Wprowadzanie odbywa się poprzez zadeklarowanie @i przed zapytaniem
Mógłbym zapisać kolejne 89 znaków, jeśli wynik nie musi być wierszem rozdzielanym przecinkami
źródło
Matematyka
191235Reprezentuje każdy numer komórki w bazie 3. Każda pozycja cyfry reprezentuje funkcję cielesną. Wartość cyfry {0,1,2} reprezentuje odpowiednio „Mały”, „Średni”, „Duży”.
Funkcje odpowiadają cyfrom w następujący sposób:
Na przykład dane wejściowe
oznacza:
2001
w bazie 3 jest 55 w bazie 10.Musimy dodać jeden, ponieważ liczymy komórki od 1, a nie od zera.
Kod
Przypadki testowe
źródło
Python 3 - 192 - Wypróbuj!
źródło
Python 2 - 194
Dane wyjściowe mają nawiasy klamrowe i nie dbają o kolejność produkcji.
Niektóre sugestie Falko i kilka ode mnie, aby zdjąć 10 znaków.
źródło