• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

[SPOILER ALERT] Advent of Code: Day 14 solutions

 
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:
It's possible to brute force part 2 by simulating every unit of sand dropped. I will draw a complete picture in my next (minimized) post.

The brute force solution takes about 12 seconds on my machine, but the image it produces clearly hints at a much faster solution that determines the size of the "shade" that each platform casts below it.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:
Content minimized. Click to view
 
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
How do you minimize a post, anyway?

I posted my own part 2 image in the main AoC 2022 thread, before seeing this thread.  If someone wants to minimize it there for me, or delete it, feel free, and I will put it in this thread instead.

I didn't really think of this as "brute force", and I can run parts 1 and 2 combined in 0.3-0.4 sec.  Is it possible you're printing too many intermediate results?  Output along the way can slow things down - especially giant ASCII images.  

Having said that, yes it's true that it seems like an even faster algorithm is possible, for part 2.  I may have to work that out too, for fun.  Good catch.

This was the most fun puzzle so far, for me.  
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
OK, this new method speed up part 2 from about 0.4 sec to just under 0.1 sec:

This uses my previous code to populate the grid based on the input file (including the infinite floor for part 2) - the fill method just fills in the sand and returns the amount sand used. This was actually simpler than the original fill method, as well as faster.  Though the original had the advantage of being usable for part 1 and part 2.  This one only works for part 2.

[Edited to add:] Note that Vector here is not a java.util.Vector (ugh!), but a typealias for a custom class of mine, IntVector2D, that represents an actual vector in the traditional match/science sense, a quantity with two or more dimensions, e.g. x and y.   With some overloaded methods that allow me to add vectors easily with a + operator, things like that.  So "queue += p + it " actually means "queue.addLast(p.plus(it))".  I was previously calling this class Point (or IntPoint2D), but decided Vector is better since that's a more generalized term.  Sometimes it represents a delta between two points  rather than a point, for example.  I feel it's time to reclaim the term vector for its proper math/science usage.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I believe my performance issues stem from the fact that i made my Cave class immutable, and each time a new unit of sand is added, the entire Cave is copied.
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |