1,066 karma · joined February 12, 2013
But yeah, definitely pretty doable with a brute-force memoized search. I imagine a lot of state space could be pruned by doing some analysis of when squares can only move further away from their home dots (and not be turned around or pushed back or anything).
Both look pretty cool, I'd like to see some more traction in this area.
Nit: it is possible. Maybe not in a simple human-readable way, but there are mappings, such as [0]. A simple example is representing a 2D bitmap image as a 1D string of bits, which could easily be generalized to 3D as well.
Check this out: https://www.youtube.com/watch?v=WhGG__boRxU
Perhaps my favorite TED talk, it was quite mind-blowing to me.
9x9 Sudoku has a constant size, which means that it can be evaluated in O(1) time, if such notation makes sense.
Mine is different in that it it's way less polished, starts with a randomly-initialized grid, and rows/columns that are all the same color disappear (so the goal is to make them all disappear).
It wasn't quite fun enough for me to clean it up more, but it was mildly amusing for a while. It's here in case anyone would like to try: https://rawgit.com/zwegner/switchy/master/switchy.html (or the source repo: https://github.com/zwegner/switchy)
(Is it weird that the first thing I did was to see if this story was there?)
http://usgovxml.com
http://aws.amazon.com/datasets
http://databib.org
http://datacite.org
http://figshare.com
http://linkeddata.org
http://reddit.com/r/datasets
http://thedatahub.org
http://ckan.net
http://quandl.com
http://www.growmeme.com/overview
http://www.kdnuggets.com/datasets/index.html
http://enigma.io
http://archive.ics.uci.edu/ml/
http://crawdad.org/
http://data.austintexas.gov
http://data.cityofchicago.org
http://data.govloop.com
http://data.gov.uk/
http://data.medicare.gov
http://data.seattle.gov
http://data.sfgov.org
http://data.sunlightlabs.com
https://datamarket.azure.com/
http://developer.yahoo.com/geo/geoplanet/data/
http://econ.worldbank.org/datasets
http://en.wikipedia.org/wiki/Wikipedia:Database_download
http://factfinder.census.gov/servlet/DatasetMainPageServlet
http://ftp.ncbi.nih.gov/
http://gettingpastgo.socrata.com
http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html
http://books.google.com/ngrams/
http://medihal.archives-ouvertes.fr
http://public.resource.org/
http://rechercheisidore.fr
http://snap.stanford.edu/data/index.html
http://timetric.com/public-data/
https://wist.echo.nasa.gov/~wist/api/imswelcome/
http://www2.jpl.nasa.gov/srtm
http://www.archives.gov/research/alic/tools/online-databases.html
http://www.bls.gov/
http://www.crunchbase.com/
http://www.dartmouthatlas.org/
http://www.data.gov/
http://www.datakc.org
http://dbpedia.org
http://www.delicious.com/jbaldwinconnect/DataSets
http://www.faa.gov/data_research/
http://www.factual.com/
http://research.stlouisfed.org/fred2/
http://www.freebase.com/
http://www.google.com/publicdata/directory
http://www.guardian.co.uk/news/datablog
http://www.infochimps.com
http://www.kaggle.com/
http://build.kiva.org/
http://www.nationalarchives.gov.uk/doc/open-government-licence/open-government-licence.htm
http://www.nyc.gov/html/datamine/html/home/home.shtml
http://www.ordnancesurvey.co.uk/oswebsite/opendata/
http://www.philwhln.com/how-to-get-experience-working-with-large-datasets
http://www.imdb.com/interfaces
http://imat-relpred.yandex.ru/en/datasets
http://www.dados.gov.pt/pt/catalogodados/catalogodados.aspx
http://knoema.com
http://daten.berlin.de/
http://www.qunb.com
http://databib.org/
http://datacite.org/
http://data.reegle.info/
http://data.wien.gv.at/
http://data.gov.bc.ca
https://pslcdatashop.web.cmu.edu/
http://www.icpsr.umich.edu/icpsrweb/CPES/That's mutual recursion, not corecursion. Check the article out, corecursion has a much more... "mathematical" definition, relating to the types of initial data and final data.
By my quick reading, your second example might be considered corecursion (but I think is also just regular recursion). It might not be considered recursion at all, in this particular sense, as it's only one piece of infinite data, not a function that takes an input. I'm not the best algebraist though.
Thanks for the kind words. Even though there's the part of me that is saying all these emotions are pointless, it still feels good to hear things like that.
Basically, yeah, it's more complicated than what I expressed in my comment. I used some poetic license.
But thanks, though.
All the grief, anger, and beyond that, the feeling that any emotion I have is absolutely useless. I search for an explanation, all the while my brain is telling me that I'm stupid for even looking. What's the point of explaining what I'm going through to anyone? What can they do?
I don't really know what my point is. I'd be tempted to just say "life sucks", but I'd rather not be unreasonably pessimistic.
But then again, my mom just died.
Life. Fucking. Sucks.
Long story short, there's browser extensions for this.
Some really cool music in it too, featuring Edgard Varese!
I'm mostly a software/compiler guy, where I know there can be a whole lot of improvement (especially in mainstream tools, not just toy/research projects), but my impression is that hardware isn't much better off. You've given me some good pointers for further topics to research, though. My email is in my profile if you want to chat more about this stuff!
Of course there's the well-known reasons, nonlinearity of power vs frequency scaling, diminishing returns in hardware design, etc. But there are others that we don't hear so much about.
Hardware design is still in pretty nascent stage, technology-wise. The languages used (say SystemC or Verilog) offer very little high-level abstraction, and the simulation tools suck. Sections of the CPU are still typically designed in isolation in an ad-hoc way, using barely any measurements, and rarely on anything more than a few small kernels. Excel is about the most statistically advanced tool used in this. Of course, CPUs are hugely intertwined and complicated beasts, and the optimal values of parameters such as register file sizes, number of reservation stations, cache latency, decode width, whatever, are all interconnected. As long as design teams only focus on their one little portion of the chip, without any overarching goal of global optimization, we're leaving a ton of performance on the table.
And for that matter, so is software/compiler design. The software people have just been treating hardware as a fixed target they have no control over, trusting that it will keep improving. That makes us lazy, and our software becomes more and more slow, by design (The Great Moore's Law Compensator if you will, also known as https://en.wikipedia.org/wiki/Wirth%27s_law).
The same problems we see in hardware design, huge numbers of deeply intertwined parameters, also applies to software/compiler design. We're still writing in C++ for performance code, for chrissakes. And even beyond that, the parameters in software and hardware are deeply intertwined with each other. To optimize hardware parameters, you need to make lots of measurements of representative software workloads. But where do those come from, and how are they compiled? Compiler writers have the liberty to change the way code is compiled to optimize performance on a specific chip (even if this isn't done so much in practice). To get an actually representative measurement of hardware, these compiler changes need to be taken into account. Ideally, you'd be able to tune parameters at all layers of the stack, and design software and hardware together as one entity. That is, make a hardware change, then do lots of compiler changes to optimize for that particular hardware instantiation. This needs to be automated, easy to extend, and super-duper fast, to try all of the zillions of possibilities we're not touching at the moment. There's even "crazy" possibilities like moving functionality across the hardware/software barrier. Of course it's a difficult problem, but we've made almost zero progress on it.
Backwards compatibility is another reason. New instructions get added regularly, but those are only for cases where big gains are achieved in important workloads. For the most part, CPU designers want improvements that work without a recompile, because that's what most businesses/consumers want. One can envision a software ecosystem that this wouldn't be such a problem for, but instead we have people still running IE6/WinXP/etc. Software can move at a glacial pace, and hardware needs to accommodate it. But this of course also enables this awfully slow pace of software progress.
does not compute