Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This seems like a great candidate for a future Advent of Code! Old languages have a special place in my heart, so doing Advent of Code with them is kind of fun.

I'm doing this year's in UniVerse BASIC[0] which traces its roots back to Pick[1] which is only six years newer than COBOL, but manages to be less well-known.

[0] https://news.ycombinator.com/item?id=25250582

[1] https://en.wikipedia.org/wiki/Pick_operating_system



I'm doing in COBOL: https://github.com/GaloisGirl/Coding/tree/master/AdventOfCod...

I'm having a problem with day 7 with the lack of hash tables.

Care to share your BASIC solutions?


You can do it without hash tables.

If you're able to create a graph structure with references/access/pointer types or whatever COBOL uses you can have records with contents similar to:

  record Bag:
    string : Description
    array of Bag Pointer : Children
    array of Integer : Count
Where the indexes into the two arrays correlate. Since, as you parse, you don't know where the children may be, you can use an array to store the bags as you read them in. And in a second pass construct the graph proper. You may also want a set of pointers up to the bags containing a bag, but it's not, strictly, needed.

If I were doing this year's in C, I'd have done something like that since it, also, doesn't have a built-in hash table/dictionary.


Thanks! I'll give that a try over the week-end.


So was I! https://thequux.github.io/posts/advent-of-cobol/advent-of-co...

Sadly, I got jammed up with dealing with stream files on day 4, and then a C3 talk got accepted, so I haven't gotten much time to work on it since


Very nice - I'll have to take a look at your COBOL when I've got some free time.

My AOC code is also on GitHub: https://github.com/kimmeld/AOC2020

There are two things to keep in mind here:

First, UniVerse BASIC isn't the old BASIC like you'd find on an Apple ][ or C-64, nor is it the QBasic you'd find in MS-DOS. It has its own unique features, such as dynamic arrays.

Second, I'm taking advantage of UniVerse features where they make sense. When I do this I document it since the code only has a portion of the solution. So far, I've done these for an alternate version of day 4 and for day 7. In particular, I used a UniVerse file in place of a hash table for day 7.


Thank you for sharing! I tried this one year on one challenge, but was barely familiar with writing COBOL programs, so I didn't continue with it. But after seeing your repo, I might go back and try this alongside the Lisp and Python I've been doing this year.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: