Ya que se acerca el primer fin de semana de octubre, ¡tengamos nuestro propio Oktoberfest!
Fondo
Usted y algunos otros programadores han sido contratados por los salchichas locales en Munich, Alemania. Los tipos de salchichas proporcionan a Oktoberfest todas las salchichas que el gigante Volksfest necesita. Se las arregla para escuchar a su jefe hablando con los otros empleados sobre por qué usted y los demás fueron contratados sin ninguna experiencia previa relacionada con la salchicha. Te das cuenta de que te contrataron por tus habilidades de programación impecables, y tu jefe aparentemente quiere que codifiques un analizador de salchichas.
Este año, los salchichas han decidido aumentar la variedad de salchichas en el Oktoberfest, pero no tienen idea de cuánto han importado.
Reto
Debes ayudar a tu jefe a determinar cuánta salchicha de cierto tipo realmente importó. Tendrá que programar un analizador de salchichas que genere el tipo y la cantidad de cada salchicha que importaron. Su jefe ha comprado una unidad de disquete especial para esta ocasión que, dada una salchicha, la canaliza stdin
.
Entrada
Una serie de salchichas stdin
, cada salchicha separada por un espacio. Las salchichas se dan en el siguiente formato:
Prinskorv (P)
¤
| |
| |
| |
¤
Salchichón (S)
l
| |
| |
| |
| |
l
Landjäger (L)
\ /
| |
| |
| |
| |
/ \
Kabanos (K)
.
|
|
|
|
|
.
Cotechino Modena (C)
___
| |
| |
| |
|___|
Rød pølse (R)
^
| |
| |
| |
| |
v
Salida
Las ocurrencias de una salchicha dada junto con un identificador de qué tipo de salchicha es, separada por un espacio. El identificador es la primera letra en el nombre de la salchicha. El orden no es importante.
La salida se escribirá en stdout
, se permiten líneas y espacios finales.
Ejemplos
Entrada
^ ^ ^ ^ .
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
v v v v |
.
Salida
4R 1K
Entrada
\ / ___ l ¤ ¤
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | |___| | | ¤ ¤
/ \ l
Salida
1L 1C 1S 2P
Entrada
l ¤ l
| | | | | |
| | | | | |
| | | | | |
| | ¤ | |
l l
Salida
2S 1P
¡El programador con el programa más corto en bytes es pagado por los salchichas (gana)!
Trivia de salchichas
Prinskorv
Prinskorv que se traduce directamente como "príncipe-salchicha" es una pequeña salchicha sueca que a menudo se vende en enlaces. Generalmente se fríe en una sartén y se sirve con una generosa ración de mostaza.
Salchichón El
salchichón es una salchicha española de verano que a menudo se hace con carne de cerdo, aunque algunas recetas usan otras carnes, como buey, ternera o caballo. La carne y la grasa se cortan en trozos delgados, se sazonan con sal, pimienta, nuez moscada, orégano y ajo y luego se insertan en los intestinos gruesos de cerdo natural.
Landjäger
Landjäger es una salchicha semiseca elaborada tradicionalmente en el sur de Alemania, Austria, Suiza y Alsacia. Es popular como aperitivo durante actividades como el senderismo. También tiene una historia como alimento de soldado porque se mantiene sin refrigeración y viene en porciones de una sola comida.
Kabanos
Kabanos es una salchicha seca polaca larga y delgada hecha de cerdo o pavo kosher. Son de sabor ahumado y pueden ser de textura suave o muy seca dependiendo de la frescura. Kabanosy a menudo se sazonan solo con pimienta. A diferencia de otras carnes, estas salchichas generalmente se comen solas como aperitivo y, excepto cuando son kosher, a menudo se sirven con queso.
Cotechino Modena
Cotechino Modena o Cotechino di Modena es una salchicha fresca hecha de cerdo, fatback y corteza de cerdo, y proviene de Modena, Italia, donde tiene el estado de IGP. Cotechino a menudo se sirve con lentejas o frijoles cannellini con una salsa junto con puré de papas, especialmente alrededor del Año Nuevo.
Rød pølse
Rød pølse (salchicha roja) es un tipo de salchicha de cerdo hervida de color rojo brillante muy común en Dinamarca. Dado que los puestos de perritos calientes son omnipresentes en Dinamarca, algunas personas consideran que el røde pølser es uno de los platos nacionales.
Toda la información de salchichas copiada descaradamente de Wikipedia
Respuestas:
Pyth, 30 bytes
Pruébelo en línea: Demostración o conjunto de pruebas
Explicación:
Como todos los demás participantes, solo miro la primera línea de la entrada. Digamos que la primera línea de la entrada es
\ / ___ l ¤ ¤ ____
.Al principio me dividí por espacios, lo que me da la lista
Ahora queremos obtener
'/'
s y''
s y ordenar el resto.Ahora puedo ejecutar-length-codificarlo.
Como resultado, el orden (valor ascii) de estos caracteres o de la cadena
'___'
se puede asignar muy bien a los números[0, 1, 2, 3, 4, 5]
.Y esto se puede utilizar para asignarlos directamente a las letras
SKLCRP
.fuente
Pyth,
36343230 bytesGuardado otros 2 bytes gracias a ... ¿adivina quién? :RE
Ignora toda la entrada, excepto la primera línea, elimina todos los
/
espacios y espacios, la traduce a los identificadores de destino, la ordena, utiliza la codificación de longitud de ejecución e imprime el resultado.Demo en vivo.
Versión de 32 bytes
Demo en vivo.
¡Ahorré otros 2 bytes gracias a @Jakube!
Versión de 34 bytes
Demo en vivo.
¡Ahorré 2 bytes gracias a @Jakube!
Versión de 36 bytes
Demo en vivo.
fuente
hM-czd\\
es lo mismo que-hMfTczd\\
¤
es de dos bytes.Javascript (ES6), 105
Es bastante simple, pero aquí hay una explicación de todos modos:
fuente
a=>(h=-1,[for(g of'¤l/._^')if(f=(a.split(g).length-1)/'222261'[++h])f+'PSLKCR'[h]].join` `)
Si tan solo pudiera simplificar la declaración deh
...CJam,
383533 bytesPruébalo aquí.
Explicación
La primera línea de cada tipo de salchicha es única, y dado que las salchichas están alineadas en la parte superior, es suficiente contar los caracteres relevantes en esa primera línea. Dos tipos requieren un tratamiento especial:
\
y/
. Queremos deshacernos de uno de ellos, luego podemos contar el otro como todos los demás personajes.C
inmediato.Ahora para el código real:
fuente
Mathematica 116
Algunos bytes probablemente podrían reducirse, pero nada para acercarse a los idiomas de golf.
ImportString[#,"Table"][[1]]
devuelve una lista de cadenas separadas por espacios que aparecen en la línea superior de la entrada. La cadena puede incluir cualquiera de los elementos de la lista{"¤","l","/","___",".","^"}
, incluidas las repeticiones. Cada elemento está asociado con un tipo único de salchicha.Tally
cuenta el número de veces que aparece cada cadena de este tipo./.{"¤"->"P","l"->"S",...
reemplaza¤
conP
,l
conS
y así sucesivamente.Reverse
coloca cada cuenta antes del elemento al que está asociado.Los dos
Row
s formatean la salida.fuente
MATLAB, 113
Suponiendo que los espacios finales están permitidos(sí lo están), aquí hay una función anónima de MATLAB:Y una explicación:
Parece funcionar correctamente. Todavía tiene el espacio final, pero ahora maneja todas las salchichas correctamente.
fuente
Perl,
8477 bytesAlguien probablemente podría afeitarse un poco de esto ...
84 bytes
77 bytes
Descompostura:
Tome la primera línea de STDIN, transcriba valores en códigos de letras, elimine basura adicional. El
d
modificador realmente no debería ser necesario, pero me encontré con problemas unicode extraños en el¤
personaje sin él.Utilice la referencia simbólica para crear y / o incrementar la variable para cada carácter encontrado.
Dividir la variable C entre 3, debido al triple subrayado
Recorra el alfabeto e imprima las variables mayúsculas de una letra junto con la letra si tienen un valor mayor que cero
Resultado de la prueba: http://ideone.com/alpUlI
Editar : corta 7 bytes haciendo transliterar el valor de retorno anónimo directamente en
split
.fuente
Perl, 172 bytes
Daresay aún más se puede cortar de esta salchicha, pero aquí hay un entrante para diez.
Versión sin golf
Resultados de la prueba
fuente
Python 3, 120 bytes
Estoy bastante seguro de que puede acortar esto, pero aún no había una solución de Python, así que aquí vamos:
Explicación
Es bastante simple, algunos incluso podrían decir legible, pero de todos modos aquí hay una breve explicación:
Se lee la primera línea de entrada, ya que cada salchicha se puede determinar solo desde la primera línea.
Ahora
a={z:x.count(y)for y,z in zip('¤l/.^_','PSLKRC')}
es una comprensión del diccionario que asigna el identificador de cada tipo de salchicha (z
) al recuento de cada tipo de salchicha (x.count(y)
dondey
está el carácter que define la salchicha).Luego dividimos el recuento de salchichas Cotechino Modena (C) por 3 debido al triple guión bajo.
Por último, imprimir el resultado:
print(' '.join(str(a[x])+x for x in a if a[x]))
. Esto crea el recuento de salida de cada salchicha de uno en uno, pero solo si esa salchicha se vio al menos una vez (a[x]
no es cero => Verdad). Cada cadena de conteo se une por un espacio y se imprime.fuente