29 ms·
Zero Lines Maze: What the 8-Bit Guy's One-Liner Can Still Teach Us
- fortyseven 5mo agoNothing like ignoring the spirit of the thing by turning it from one line to nearly a dozen.
- smilespray 5mo agoThink about it the other way: It's an opportunity to talk about lookup tables, loop unrolling and tricks like that. Also, now different people are pitching in with their own takes, so it turned into a bit of friendly competition.
- jason_s 5mo agoOh that -- I used to print those out from my C64 to my Star Micronics dot-matrix printer and add selected white-out / ink to make them more interesting.
- aa-jv 5mo agoIt seems that the BASIC's of yesteryear still have a lot to teach us. My favourite example is the annual BASIC 10 liner competition: https://basic10liner.com/ https://basic10liner.com/ Basically, folks compete to write the best, most interesting, most inspiring 10 lines of BASIC code imaginable .. and ooh boy, has there ever been some truly amazing stuff! A dynamically generated dungeon crawler, a full implementation of lunar lander, countless arcade-style games, an implementation of Brainfuck .. the list goes on and on .. all in just 10 LINES OF BASIC! Another source of BASIC inspiration, I find, is in the synthesis one-liner scene - which of course, is dominated by the C64 for its synth goodness, but there are other examples out there where, in just a single line of code, entire techno and other electronic-music tracks are generated, on the fly, by ye' olde 8-bit computer of choice (C64, mostly, though..) The bytebeat techniques in use by some synth-one-liner hackers seem to be continually producing extraordinary results. For example: https://replicate.com/andreasjansson/synth-one-liner/readme https://replicate.com/andreasjansson/synth-one-liner/readme .. and a good treatise on the various techniques: https://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html https://countercomplex.blogspot.com/2011/10/algorithmic-symp... I think there is a lot of value in learning BASIC using these kinds of techniques in this day and age. I know for sure I'd struggle to have a full Lunar Lander or Asteroids implementation of just 10 lines of javascript, if that is even feasible .. but seeing so many BASIC implementations is just truly inspiring. What we have lost in the rush for shiny bloat, eh folks? The old adage that limits produce wonders, is never truer than in the 10 Line BASIC competition entries ...
- madanparas 5mo agoThere's a 300-page MIT Press book analyzing exactly this line of code: 10 PRINT CHR$(205.5+RND(1)); :GOTO 10. It's free as a PDF and covers the mathematics (Truchet tilings), the C64 hardware, and the cultural history. The article doesn't mention it.
- deleted 5mo ago[deleted]
- bombcar 5mo agoAll this and no link? Shame! https://10print.org/10_PRINT_121114.pdf https://10print.org/10_PRINT_121114.pdf
- gnabgib 5mo agoAll this and no link to past discussions? 2019 (142 points, 60 comments) https://news.ycombinator.com/item?id=19481207 https://news.ycombinator.com/item?id=19481207 Original/2012 (153 points, 89 comments) https://news.ycombinator.com/item?id=4856207 https://news.ycombinator.com/item?id=4856207
- teaearlgraycold 5mo agoThe author of the article says the 8-Bit Guy is controversial. Why is that?
- smilespray 5mo agoMaybe it's because he's a bit of a gun nut on the side? He did some computer videos casually carrying a rifle of some kind slung over his shoulder. I still enjoy his videos.
- sedimannapoleon 5mo ago[dead]
- karlgkk 5mo agoA lot of vintage restorers don't like him and people like him because he goes Wow! Look at This! and then suddenly a bunch of middle aged men with beards have that exact thing on their shelf. And those of us doing preservation and restoration suddenly are priced out of the hobby we've been in for decades. Also, his technical "work" is not great. In fact, it's really bad. Even his successful fixes show a lack of attention to detail. It's worth noting that he started his career as a computer scrapper.
- smilespray 5mo agoYeah, I've seen some fixes that gave me the wrong kind of goosebumps. I like his history videos, though, for instance the ones that talk about graphics modes for a given computer. Also, your bio says you don't shave. Sure you're not one of those bearded, middle-aged men?
- karlgkk 5mo agoI also live in my mom's basement and write currency libraries.
- 5mo ago
- newmana 5mo agoIt takes 40 seconds to precompute the lookup table. Robin released at least 2 faster/improved versions that run in a couple of seconds - less string concatenation which is slow in BASIC https://www.youtube.com/watch?v=Dw2hvtF95Qw https://www.youtube.com/watch?v=Dw2hvtF95Qw
- ErroneousBosh 5mo agoThe lookup table is interesting. I wonder why pretty much no 1980s home computer BASICs included bitwise operations?
- RiverCrochet 5mo agoThey did. AND, OR and NOT were bitwise operations as well as conditional operators. E.g. POKE 254, PEEK(254) AND 127 would turn off bit 7 of memory location 254 without affecting other bits.
- ErroneousBosh 5mo agoIn which BASIC?
- RiverCrochet 5mo agoAll the Commodore BASICs, Applesoft, GW-BASIC, QBASIC from what I remember. Very certain about the Commodore BASICs.
- ErroneousBosh 5mo agoI did actually know that Commodore BASIC had it but had forgotten. I don't think I'd ever used GW-BASIC or QBASIC, weren't they on PCs? Apple IIs weren't really a thing over here although the very first home computer I ever used was an Apple II belonging to a friend of my mother's - Tony van der Kuyl, father of video games magnate Chris van der Kuyl ;-)
- teddyh 5mo agopython3 -c 'import random, time, itertools; any(time.sleep(0.01) or print(random.choice("\u2571\u2572"), end="", flush=True) for x in itertools.repeat(None))'
- flykespice 5mo agoThis isn't much impressive because can always import some package to do everything to you.
- teddyh 5mo agoNote that only Python standard modules are imported, no third-party libraries. The “random” module is needed, because Python does not have a built-in replacement for BASIC’s RND(). The “time” module is merely to add delays, to emulate the style of normal BASIC interpreters on old – i.e. very slow – computers. You could remove it without any change in output. And lastly, the “itertools” module is used to get an infinite loop on a Python one-liner; Python, with its whitespace-based block structure, has a hard time doing anything significant in a single line otherwise.
- stratos123 5mo agoYou could use `iter(lambda:1,0)` to get an infinite iterator, then itertools can be dropped.
- teddyh 5mo agoNice! python3 -c 'import random, time; any(time.sleep(0.01) or print(random.choice("\u2571\u2572"), end="", flush=True) for x in iter(lambda: 0, 1))'
- rob74 5mo ago> The 8-Bit Guy’s first nerd flex is making it shorter than one line. Hate to be that guy, but a line you enter at the prompt is still a line, even if it's not part of an "actual" (stored) program.
- timbit42 5mo agoIt's a non-numbered line.
- pimlottc 5mo agoIt's a classic, but removing the line number does not make it zero lines... :P
- tacomagick 5mo agoYou could also argue the head compute does not make it faster tbh
- busfahrer 5mo agoNot a one-liner, but I was impressed by this simple rogue-like written in 10 lines of BASIC: https://bunsen.itch.io/the-snake-temple-by-rax https://bunsen.itch.io/the-snake-temple-by-rax
- juancn 5mo ago8-bit Show and tell has a response: https://www.youtube.com/watch?v=Dw2hvtF95Qw https://www.youtube.com/watch?v=Dw2hvtF95Qw with an even faster implementation in BASIC (much lowers startup time).