Ces rectangles peuvent-ils remplir un espace rectangulaire?
Étant donné un tas de rectangles, on vous demande s'ils peuvent être disposés ou non pour remplir un espace rectangulaire.
Spécifications
Étant donné un tas de m x n
rectangles arbitraires ; 0 <= m, n <= 1000
, déterminez s'il est possible ou non de les disposer de manière à couvrir exactement une zone rectangulaire sans trous ni chevauchements. Les rectangles ne peuvent pas être tournés et chaque rectangle ne peut être placé qu'une seule fois.
Contribution
L'entrée pour cela est très flexible, tant que l'entrée donne une sorte de liste de dimensions à 2 espaces. Par exemple, les deux éléments suivants sont valides:
Séparé par l'espace, retour
1 2
1 5
4 5
3 6
Liste des dimensions
[[1, 2], [1, 5], [4, 5], [3, 6]]
Sortie
Toutes sortes de valeurs vraies / fausses comme true / false, 0/1, T / F, True / False, etc. Si vous allez utiliser une méthode de sortie qui n'est pas très évidente, veuillez préciser dans votre réponse.
Exemples
Cas de test 1
Contribution:
1 1
1 5
2 6
Sortie:
true
(ou quelque chose de similaire)
Comment l'organiser:
XYYYYY
ZZZZZZ
ZZZZZZ
Cas de test 2
Contribution:
1 1
2 2
Sortie:
false
(ou quelque chose de similaire)
Explication: Il devient évident que vous ne pouvez pas disposer deux carrés de tailles différentes et aligner leurs bords.
Cas de test 3
Contribution:
1 1
1 2
1 2
2 1
2 1
Sortie:
true
(ou quelque chose de similaire) Comment l'organiser:
AAB
DEB
DCC
Comme l'a souligné @ETHProductions, pour tous les autres cas de test, vous pouvez continuer à combiner des rectangles avec une longueur de bord commune jusqu'à ce que vous n'ayez qu'un seul rectangle, donc ce cas de test est juste pour casser tout code qui utilise cette idée.
Cas de test 4
Contribution:
3 2
4 1
2 1
4 1
2 1
5 2
3 2
1 4
3 2
2 1
2 1
1 1
5 1
Sortie:
true
(ou quelque chose de similaire)
Comment l'organiser:
AAABBBBEE
AAACCDDDD
FFFFFGGGH
FFFFFGGGH
IIIJJKKLH
IIIMMMMMH
Remarque : Vous n'avez pas besoin d'indiquer comment l'organiser, il vous suffit de déterminer s'il ne peut pas être organisé.
C'est le golf de code, donc la réponse la plus courte en octets gagne! J'accepterai la réponse la plus courte à partir du 14 janvier, mais n'hésitez pas à soumettre des réponses plus tard car je peux encore donner des votes! :)
Bon golf!
~ AL
PS Si vous savez quelle balise doit être appliquée à ce problème, veuillez l'ajouter, je n'ai absolument aucune idée de ce qu'il faut mettre comme balise autre que code-golf.
EDIT : Votre programme devrait être capable de traiter jusqu'à 25 rectangles, en au plus 10 secondes sur un ordinateur décent (je serai assez flexible sur cette règle).
EDIT : J'ai prolongé la date limite d'acceptation des soumissions jusqu'au dernier jour de l'année, mais je doute que j'obtienne une réponse d'ici là ...
EDIT : J'ai prolongé le délai d'acceptation des soumissions de 2 semaines, donc si aucune autre réponse n'arrive d'ici là, la réponse C actuelle sera acceptée! :)
[[1, 2], [2, 1], [1, 1], [1, 2], [2, 1]]
(ce qui peut être organisé ABB ACD EED
). Vous voudrez peut-être ajouter ce cas de test simple.