Monday, November 9, 2015

Lock unlock doors - PrismoSkills



Lock unlock doors - PrismoSkills

  • There are 100 doors, all closed. A man does 100 passes infront of the doors.

In 1st pass, he opens all doors. In 2nd pass, he closes all doors multiples of 2.

In 3rd pass, he opens all doors multiples of 3 and so on.

In 100th pass, he closes door no 100 only.

After 100th pass, how many doors would be open?

------------------------------------------------------------------------------------

Doors are all closed initially.

So, if a door opens and does not close till the end, then it will remain open.

Also, if a door is opened, closed and re-opened (i.e. toggled 3 times), then it will be open.

So basically if a door is toggled an odd number of times, it will be open in the end.


All doors except 1st are toggled twice - once in the first pass and once in pass numbered after the door. Example: 5th door is toggled once initially and then in the 5th pass.


Also, doors are toggled in those passes when the pass is done for one of the factors making up that door number. Example: 6 will be toggled on 2nd and 3rd pass apart from 1st and 6th pass.

So, doors with an odd number of factors will remain open after the 100th pass.

Every number who has one factor, has another factor obtained by dividing the number by first factor. Only perfect squares are the numbers where this 2nd factor is same as the first factor.

So, only perfect squares and 1st door will have an odd number of toggles and so they will remain open after 100th pass.


Corollary: What if the man only makes N/2 passes i.e. in the above case, what if he makes only 50 passes and then stops?


In such a case, doors below 50 will follow the same logic as above.

Doors above 50 will be opened at least once (in the first pass). Then for every unique factor, then will be opened and closed once. Since all number between 50 and 100 have factors between 1 and 50, we can say that the passes which were to be made after 50 would have always involved toggling of a single door always. Example, pass 51 will toggle door 51 only, pass 87 would toggle door 87 only and so on.

This implies that if no passes are made after 50, every door above 50 will be in a state opposite to that if all 100 passes were made.

So, in this case, perfect square doors would be open below 50 and all doors except perfect squares will be open above 50!


Read full article from Lock unlock doors - PrismoSkills

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts