Antes del descubrimiento de las huellas digitales y las pruebas de ADN, la policía británica utilizó un sistema antropométrico para identificar a los delincuentes reincidentes. Ciertas partes de los cuerpos de los delincuentes se midieron y almacenaron en registros; se supuso que estas partes del cuerpo no cambiarían de tamaño después de la edad adulta. Este sistema se conocía como bertillonnage .
El siguiente diagrama muestra un sistema de archivo utilizado por la policía para acceder a estos registros rápidamente.
Diagrama 1: Un sistema de archivo con cajones numerados.
Nota: si no puede ver la imagen, pruebe el espejo imgur o compílelo usted mismo .
El archivador consta de 81 cajones numerados. Cada cajón contiene cartas, y cada carta tiene medidas de partes particulares del cuerpo de un criminal:
- La longitud de su cabeza (
H
) - La anchura de su cabeza (
B
) - El ancho de su oreja derecha (
E
) - La longitud de su dedo índice (
F
)
Cada medida se clasifica como pequeña, mediana o grande.
Por ejemplo, el cajón 56 contiene tarjetas con las siguientes características: pequeña H, B grandes, medio E, y pequeña F. Esto se puede notated usando las letras S
, M
y L
en lugar de pequeñas, medianas y grandes:
SH,LB,ME,SF
Tenga en cuenta que la letra de tamaño va primero, luego cuál es la medida. Además, !
se puede colocar un signo de exclamación delante para causar un negativo:
!SH,LB,!ME,SF
Esto indica cartas que tienen las siguientes características: no pequeña H, grande B, no mediana E y pequeña F. Hay cuatro cajones que contienen cartas con estas características: 58, 60, 61 y 63.
Su tarea es escribir un programa que, cuando se le da una cadena que anota algunas características, genera todos los cajones que contienen tarjetas con esas características. Si no hay cajones que contengan cartas con las características dadas, salida 0
.
Aquí hay algunas entradas y salidas de muestra.
- Entrada:
SH,LB,ME,SF
Salida:56
- Entrada:
!SH,LB,!ME,SF
Salida:58,60,61,63
- Entrada:
SB,!MF,!LF
Salida:1,2,3,4,5,6,7,8,9
- Entrada:
MH,!MH
Salida:0
Este es el código de golf, por lo que gana la entrada más corta. Haga preguntas en los comentarios si la especificación no es clara.
Respuestas:
GolfScript 95 ( DEMO )
fuente
Rubí 1.9.3 -
173 157143Editar:
Demostración en línea: http://ideone.com/lodTLt
fuente
select
es un sinónimo más corto parafind_all
. Puede recortar otros dos caracteres reemplazándolosy[-2..-1]
cony[-2,2]
, y tres más aún utilizando en==[]
lugar de.empty?
.Scala - 951
Definitivamente no ganará este, principalmente debido a los nombres de las funciones integradas, creo.
El argumento pasa a la función.
f
f("SH,LB,ME,SF")
=56
fuente
T-SQL -
547544No es una entrada ganadora, pero es adecuada para este tipo de problema.
Configuración de tabla de cuadrícula - 254
Consulta -
293290La entrada se realiza declarando @i antes de la consulta
Podría guardar otros 89 caracteres si la salida no tiene que ser una fila delimitada por comas
fuente
Mathematica
191235Representa cada número de celda en la base 3. Cada posición de dígito representa una característica corporal. El valor del dígito, {0,1,2}, representa "Pequeño", "Medio", "Grande", respectivamente.
Las características corresponden a los dígitos de la siguiente manera:
Por ejemplo, la entrada,
significa:
2001
en la base 3 es 55 en la base 10.Necesitamos agregar uno porque estamos contando celdas desde 1, no desde cero.
Código
Casos de prueba
fuente
Python 3 - 192 - ¡ Pruébalo!
fuente
Pitón 2 - 194
La salida tiene paréntesis, y no me importa el orden de salida.
Algunas sugerencias de Falko y un par de mí para sacar 10 caracteres.
fuente