Reto tomado con permiso de mi concurso de desafío de código universitario
Desde hace algunos años, el número de estudiantes en mi escuela ha estado creciendo constantemente. Primero, el número de estudiantes aumentó por aula, pero luego fue necesario convertir algunos espacios para que algunos grupos dieran clases allí, como las gradas del gimnasio o, este último curso, hasta la sala de escobas.
El año pasado, las autoridades académicas obtuvieron el presupuesto para construir un nuevo edificio y comenzaron las obras. Por fin han terminado y el nuevo edificio ya se puede utilizar, por lo que podemos movernos (el antiguo edificio será rehabilitado y se utilizará para otra función), pero nos ha atrapado a mitad del curso. El director quiere saber si la mudanza será posible sin dividirse o unirse a grupos, o si algunos estudiantes tienen que cambiar de grupo.
Reto
Dada la cantidad de estudiantes de los grupos actuales y las nuevas aulas (capacidad), arroje un valor verdadero si es posible asignar un aula diferente, con capacidad suficiente, a cada uno de los grupos actuales, o un valor falsey de lo contrario.
Casos de prueba
Input: groups of students => [10, 20, 30], classrooms capacity => [31, 12, 20]
Output: True
Input: groups of students => [10, 20, 30], classrooms capacity => [100, 200]
Output: False
Input: groups of students => [20, 10, 30], classrooms capacity => [20, 20, 50, 40]
Output: True
Input: groups => [30, 10, 30, 5, 100, 99], classrooms => [40, 20, 50, 40, 99, 99]
Output: False
Input: groups => [], classrooms => [10, 10, 10]
Output: True
Input: groups => [10, 10, 10], classrooms => []
Output: False
Input: groups => [], classrooms => []
Output: True
Input: groups => [10, 1], classrooms => [100]
Output: False
Input: groups => [10], classrooms => [100, 100]
Output: True
Input: groups => [1,2,3], classrooms => [1,1,2,3]
Output: True
Notas
- Puede tomar la entrada en cualquier formato razonable
- Puede dar salida a cualquier valor Truthy / Falsey- (
1/0
,True/False
, etc ...) - código-golf
fuente
g=[1,2,3], c=[1,1,2,3]
0
un valor válido para grupos o aulas?Respuestas:
Brachylog , 4 bytes
Siempre es agradable ver un desafío y saber que brachylog va a vencer a todos. Toma las clases actuales como entrada y las nuevas aulas como salida; Saldrá verdadero si encuentra una manera de adaptarse a los estudiantes, falso de lo contrario
Explicación
El código tiene 3 partes de las cuales el orden en realidad no importa
Pruébalo en línea!
fuente
Pyth, 11 bytes
Toma la entrada como una lista de listas, el tamaño del aula primero, el tamaño del grupo segundo. Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente
Jalea , 9 bytes
Toma las aulas como primer argumento y los grupos como segundo argumento.
Pruébalo en línea!
Comentado
NB: Esto
Ṡ‘ḌẠ¬
es demasiado largo. Pero sospecho que este no es el enfoque correcto de todos modos.fuente
Japt , 9 bytes
Pruébelo o ejecute todos los casos de prueba en TIO
Pruébelo o ejecute todos los casos de prueba en TIO
fuente
2 - n
In Japt? ¿Qué tipo de casos de uso tiene para justificar que sea un byte incorporado de 1 byte?Í
es un acceso directo paran2<space>
y fue creado para usar con cadenas, convirtiéndolas de números base-2 a base-10 (una necesidad bastante común). Sin embargo, eln
método, cuando se aplica a un número, resta ese número del argumento del método (predeterminado =0
). Entonces, aunque restar de0
sería suficiente para ordenar la matriz en orden inverso, usar el atajo me ahorra un byteñn<space>
. También podría haberlo usado al ordenar,V
pero no habría guardado ningún byte, ya que todavía necesitaría un espacio, en lugar del)
, para cerrar elí
método.Python 2 , 49 bytes
Salidas por código de salida, falla por entrada falsa.
Pruébalo en línea!
fuente
MATL , 10 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere las entradas
[20, 10, 30]
,[20, 20, 50, 40]
como un ejemplo. La pila se muestra de abajo hacia arriba.fuente
Haskell , 40 bytes
Pruébalo en línea!
fuente
05AB1E ,
14128 bytesPuerto de @Sok 's Pyth respuesta , así que asegúrese de que le Upvote así!
Toma la entrada como una lista de listas, con la lista de aula como primer elemento y la lista de grupo como segundo elemento.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Antigua respuesta de 12 bytes:
Primero toma la lista del aula y luego la lista del grupo.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
C # (compilador interactivo de Visual C #) ,
7774 bytesPruébalo en línea!
Código comentado:
fuente
Haskell, 66 bytes
Pruébalo en línea!
fuente
Bash + herramientas GNU, 68 bytes
69 bytes
TIO
toma las habitaciones de los estudiantes como primer y segundo argumento, ya que los números de cadena delimitados por la nueva línea devuelven el estado de salida 1 para verdadero o 0 para falso
fuente
Perl 5
-pal
,6762 bytes@NahuelFouilleul ahorró 5 bytes con una reorganización y un grep
Pruébalo en línea!
Versión de 67 bytes
Toma la lista de tamaños de clase separados por espacios en la primera línea y la lista de tamaños de habitaciones separados por espacios en la siguiente.
fuente
Lisp común, 74 bytes
(defun c(s r)(or(not(sort s'>))(and(sort r'>)(<=(pop s)(pop r))(c s r))))
No minificado
Pruébalo
Tenga en cuenta que sort cambia permanentemente la lista y pop vuelve a vincular la variable al siguiente elemento.
En efecto, esto solo verifica recursivamente que el grupo de estudiantes más grande pueda caber en la sala más grande. Hay 3 casos base:
fuente
Python 2 ,
716764 bytesPruébalo en línea!
fuente
zip(...)
para guardar 5 bytes.Retina 0.8.2 , 50 bytes
Pruébalo en línea! El enlace incluye un conjunto de pruebas. Toma dos listas de grupos y salas (el conjunto de pruebas se usa
;
como separador de listas). Explicación:Convierte a unario.
Invierta la clasificación de cada lista por separado.
Agregue una coma a cada lista.
Verifique que cada uno de los números en la primera lista pueda coincidir con el número apropiado en la segunda lista. Cada vez
\3
contiene las habitaciones previamente combinadas y, por lo tanto, el siguiente grupo\2
debe poder encajar en la habitación siguiente. Los(?>\3?)
Trata el caso de la primera habitación cuando no hay habitaciones anteriores todavía.fuente
Carbón , 28 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma una lista de listas de salas y grupos y salidas
-
si las salas pueden acomodar a los grupos. Explicación:Repita mientras se puede asignar un grupo a una habitación.
Elimine la sala y el grupo más grandes de sus listas.
Compruebe que no quedan grupos sin asignar.
fuente
JavaScript, 56 bytes
Intentalo
fuente
7
y9
en clases de8
y10
.Perl 6 , 34 bytes
Pruébalo en línea!
Toma la entrada como una lista de dos listas, los grupos y las aulas, y devuelve una unión de ninguno que se puede boolificar a verdadero / falso.
Explicación:
fuente
Ruby , 57 bytes
Pruébalo en línea!
Toma
c
para clases,r
para habitaciones. Comprueba todas las permutaciones de habitaciones en lugar de usar sort, porque la ordenación inversa cuesta demasiados bytes. Sin embargo, todavía parece bastante largo ...fuente
C # (compilador interactivo de Visual C #) ,
1059391828179777674 bytes¡Ahora coincide con el puntaje de dana!
Lanza un error si es falso, nada si es verdadero.
-12 bytes gracias a @Destrogio!
Pruébalo en línea!
Explicación
fuente
Java (OpenJDK 8) , 183 bytes
Pruébalo en línea!
Con un pequeño consejo útil de Kevin Cruijssen y simplemente otra mirada sobre mi código, ¡puedo disminuir mi puntaje en un 9% con solo reemplazar tres palabras en inglés!
Java (OpenJDK 8) , 166 bytes
Pruébalo en línea!
fuente
import java.util.*;
en tu conteo de bytes. Sin embargo, puede jugar golf a 144 bytes en Java 8, o 140 en Java 10 reemplazando elboolean
convar
.true
/false
en tu código,1>0
/0>1
son alternativas más cortas . :)1/0
y supongo que está bien en este caso, tenga en cuenta que en Java, a diferencia de Python, JavaScript, C, etc.1/0
, generalmente no se consideran salidas de verdad / falsey válidas . Y en mi primer comentario mencioné una versión de 144 bytes . :) Aunque, ahora también es inválido porque no funciona para el último caso de prueba, como lo menciona @Shaggy .PowerShell , 80 bytes
Pruébalo en línea!
Menos guión de prueba de golf:
fuente
R , 65 bytes
Pruébalo en línea!
fuente