Entrada:
La entrada es una matriz aleatoria de tuercas (en su idioma), siguen las posibles tuercas. Su programa debe tener una forma de representar cada tipo de tuerca, como un código entero. El programa debe ser capaz de manejar cualquier tamaño de matriz de cualquier configuración de tuercas.
Nueces posibles:
Kola nut
Macadamia
Mamoncillo
Maya nut
Mongongo
Oak acorns
Ogbono nut
Paradise nut
Pili nut
Pistachio
Walnut
Salida:
La salida debe ser la matriz ordenada de tal manera que no haya tuercas adyacentes del mismo tipo. Si esto es imposible, la salida debería ser una matriz vacía.
Entrada de ejemplo (simplificada):
["walnut", "walnut", "pistachio"]
Salida de ejemplo:
["walnut", "pistachio", "walnut"]
Las soluciones no pueden simplemente barajar la matriz hasta que se vuelva única por casualidad. El tipo empleado debe ser determinista.
perl6 -e 'my @a="aaaaabbbbccccdddee".comb;my @b = @a.pick(*) while @b.squish !== @a;say [~] @b'
baedcbdacdecbabaca
(3,3,2) también pueden hacer que fallen.Respuestas:
GolfScript,
42413738 caracteresEl código espera entrada en STDIN e imprime el resultado en STDOUT, por ejemplo:
El guión se hizo más largo de lo esperado, pero supongo que hay margen de mejora.
Editar: el caso de una lista con un solo elemento me cuesta 1 personaje (la mejor comparación que puedo encontrar es la misma que la de Peter).
fuente
$.,)2//zip
es exactamente lo que tenía en mente. Mi interpretación de la especificación fue que podría recibir información en la pila y dejarla en la pila, por lo que tal vez deberíamos presionar para obtener una aclaración.["walnut"]
en la sección de comparar los dos primeros.GolfScript, 32 caracteres
Mismo formato de entrada y salida que la solución de Howard.
fuente
Brachylog v2, 10 bytes
Pruébalo en línea!
Solución de fuerza bruta. (Esta es una función, permitida porque el desafío no dice "programa completo"). También es principalmente una traducción directa de la especificación (la única sutileza real es que logré organizar las cosas para que todas las restricciones implícitas llegaran exactamente lugares correctos, por lo que no necesita caracteres adicionales para desambiguarlos).
Tenga en cuenta que este es un algoritmo genérico para reorganizar cualquier tipo de lista para que no tenga dos elementos en contacto; puede manejar representaciones en cadena de los elementos y también puede manejar códigos enteros. Por lo tanto, realmente no importa cómo "Su programa debe tener una forma de representar cada tipo de tuerca, como un código entero". requisito de la pregunta se interpreta.
Explicación
fuente
J, 80 caracteres
No realmente en la misma liga que Golfscript en este caso. Sospecho que hay ganancias por hacer, pero los 14 caracteres necesarios solo para obtener la lista en el programa
[;.1' ',1!:1[1
es una gran desventaja.Básicamente, el programa toma la lista, agrupa elementos similares, ordena por número de elementos en cada grupo descendente y alterna la salida entre la primera mitad y la segunda mitad de la lista. El resto si el código se deshace de elementos extraños y decide si la lista es una salida válida (salida infinita
_
si no lo es).Ejemplo:
grupo
(</.])
:ordenar
(\:#&.>)
:ravel
((],.|.)~>.@-:@#)
:fuente
Jalea , 14 bytes
Pruébalo en línea!
Los últimos 6 bytes se pueden eliminar si podemos tener un comportamiento indefinido para entradas no válidas.
fuente
Stax , 10 bytes
Ejecutar y depurarlo
Aquí está el mismo programa desempaquetado, sin golf y comentado.
Ejecute este
fuente