DEV Community

dev.to staff
dev.to staff

Posted on

4 1

Daily Challenge #133 - Suitcase Packing

Mr. Square is going on holiday. He wants to bring 2 of his favorite squares with him, so he put them in his rectangle suitcase.

Write a function that, given the size of the squares and the suitcase, return whether the squares can fit inside the suitcase.

fit_in(a,b,m,n)
a,b are the sizes of the squares
m,n are the sizes of the suitcase

Example
fit_in(1,2,3,2) should return True
fit_in(1,2,2,1) should return False
fit_in(3,2,3,2) should return False
fit_in(1,2,1,2) should return False


This challenge comes from SADragonMaker on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (7)

Collapse
 
andreasjakof profile image
Andreas Jakof • Edited

The long side is the obvious case, but what if

  • Square A: 1x1
  • Square B: 2x2
  • Rectangle 3x1

=> FitIn(1,2,3,1)?

in C#

public bool FitIn(int a, int b, int m, int n)
{
   //both squares (added) must fit into the long side of the rectangle AND
   //the bigger single square must fit into the short side of the rectangle

   int longSide = Math.Max(m,n);
   int shortSide = Math.Min(m,n);
   int addedSquareLengths = a + b;
   int biggerSingleSquareSize = Math.Max(a,b);

   //do they fit?
   bool fitsLong = addedSquareLengths <= longSide;
   bool fitsShort = biggerSingleSquareSize <= shortSide;

   return fitsLong && fitsShort;
}

I know, it's a bit verbose, but very self explanatory. A short version will look like this:

public bool FitIn(int a, int b, int m, int n) =>
   (a + b <= Math.Max(m,n)) && //longSide
   (Math.Max(a,b) <= Math.Min(m,n)); //shortSide
Collapse
 
vaibhavyadav1998 profile image
Vaibhav Yadav • Edited

In JavaScript.

const fit_in = (a, b, m, n) => a + b <= Math.max(m, n);
Collapse
 
andreasjakof profile image
Andreas Jakof

Assert.IsFalse(fit_in(1,2,3,1)

Collapse
 
nickholmesde profile image
Nick Holmes

In F#.

let fit_in a b m n = a + b <= max m n
Collapse
 
andreasjakof profile image
Andreas Jakof
let actual = fit_in 1 2 3 1
Assert.That(actual, Is.False)
Collapse
 
erezwanderman profile image
erezwanderman

JS

fit_in = (a,b,m,n) => ((a + b) <= m && a <= n && b <= n) || ((a + b) <= n && a <= m && b <= m)
Collapse
 
vaibhavyadav1998 profile image
Vaibhav Yadav

Thanks for pointing that out, edited the solution.

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay