BeachComber - fast and efficient beach combing

Veracity

Developer
Staff member
Regarding the error, my session logs say:

Code:
(9077,2,9) is an 'uncommon' tile.
(9077,3,10) is an 'uncommon' tile.
(9077,8,9) is a 'unknown' tile.
(9077,8,10) is an 'uncommon' tile.
(9077,9,4) is an 'uncommon' tile.
(9077,10,2) is an 'uncommon' tile.
(9077,10,5) is a 'uncommon' tile.
(9077,10,6) is an 'uncommon' tile.
(9077,10,10) is an 'uncommon' tile.

Note that columns go from 1-10 - as logged in the session log - but as reported by KoLmafia, they are zero-indexed, and in my (and combo's) JSON data, they go from 0-9.

Looking at that session log:

Code:
Encounter: Comb the Beach (9077 minutes down the beach)
> 1 squares in beach 9077 contain combed sand
> 65 squares in beach 9077 contain rough sand
> 4 squares in beach 9077 contain rough sand with a twinkle
> Combing the square at coordinates (9077,8,9) which contains rough sand with a twinkle
Combing square 0,1 (0 minutes down the beach)
> (9077,8,9) is a 'unknown' tile.
I did not like that logging, so I fixed it and tried again.

Code:
Encounter: Comb the Beach (9077 minutes down the beach)
> 1 squares in beach 9077 contain combed sand
> 65 squares in beach 9077 contain rough sand
> 4 squares in beach 9077 contain rough sand with a twinkle
> Combing the square at coordinates 10,90765 which contains rough sand with a twinkle
Combing square 10,6 (9077 minutes down the beach)
You acquire an item: dull fish scale
> (9077,10,5) is a 'uncommon' tile.
I did not like that logging, so I fixed it and tried again.

Code:
Encounter: Comb the Beach (6270 minutes down the beach)
> 68 squares in beach 6270 contain rough sand
> 2 squares in beach 6270 contain rough sand with a twinkle
> Combing the square at coordinates 5,62696 which contains rough sand with a twinkle
Combing square 5,5 (6270 minutes down the beach)
You acquire an item: sand dollar
> (6270,5,5) is a 'uncommon' tile.
That was good and was how I logged it henceforth.

You found the single tile that got logged - and stored - incorrectly. :)
I will remove (9077,10,5) from the uncommons set.
Thanks!

I'm about to add more stuff for spading - which will not be used if you are simply looking for rares, like combo:
commons (rough sand and sand castle)
combed (unknown)
heads (well, these are static, but what the heck.)

Since there are about 950,000 commons, this is data bloat for people (not me) who are not actively spading.

Over the next 5 days or so, I'll have identified the vast majority of commons.
Subsequent passes will go only to beaches where I have seen (not yet identified) combed tiles.

And combed will be exclude things that I, personally, have combed, and have identified as rare, uncommon, or common.
That will eventually be the equivalent of what you are doing, in that all unknowns will come out of the combed set.

Did you want me to make a PR to add any new tiles to your lists?

Sure, thank you. That will be very helpful!

Regarding whales, I have seen 5 of them in the last 3 months.
I have seen both whales and normal rares in the same tile.
I have no reason to think that they only appear in certain rare tiles; I expect KoL randomizes what you get in a rare tile.

Code:
Encounter: Comb the Beach (4067 minutes down the beach)
> 3 squares in beach 4067 contain combed sand
> 76 squares in beach 4067 contain rough sand
> 1 squares in beach 4067 contain rough sand with a twinkle
> Combing the square at coordinates (4067,3,9) which contains rough sand with a twinkle
Combing square 3,9 (4067 minutes down the beach)
You acquire an item: piece of driftwood
> (4067,3,9) is a 'rare' tile.
and
Code:
Encounter: Comb the Beach (4067 minutes down the beach)
> 1 squares in beach 4067 contain a beached whale
> 2 squares in beach 4067 contain combed sand
> 77 squares in beach 4067 contain rough sand
> You found a beached whale!
> Saving page HTML to Veracity_4067_3_9_20230823234110454.html
> Combing the square at coordinates (4067,3,9) which contains a beached whale
Combing square 3,9 (4067 minutes down the beach)
You gain 10,723,919 Meat
> (4067,3,9) is a 'rare' tile.
> Saving page HTML to Veracity_4067_3_9_20230823234110636.html
 

Irrat

Member
Hmm, comparing both datasets. We have 41 beaches that likely have a hoarded rare we're unaware of yet.
Number reached by filtering out the minutes that contain a known rare, and the minute contains a combed or unknown sparkle as per my own dataset.

I have about 900 beaches with unknown tiles left, including known rares as my dataset doesn't include anything it hasn't found itself. Only roughly 3% of the turns are finding a tile to spade now. As the number goes down, I expect to spade more hoarded tiles as this is a standalone script that runs on a cronjob, and will visit the same beach multiple times a day as more adventures are remaining left over as beaches are crossed off.

As for whales, yeah. I left it as a special tile instead of a rare cos I wasn't 100% if it was a normal rare and found it cute in the data.
 

Veracity

Developer
Staff member
Thanks for the PR. I accepted & merged it.

I have added detection of commons - rough sand (if you have TwinkleVision™) and sand castles - from the beach map returned by KoLmafia.
I also save combed tiles - if they are not known rares, uncommons, or commons.
Seeing twinkles, rough sand, sand castles, and beached whales from that same beach map removes them from previously seen combed tiles.

I populated the set of commons with those I combed myself over the last 3 months of spading; BeachComberFix scraped the session logs of all my characters and extracted the common tiles.

I estimate there will end up being about 950,000 commons, so this is a big file - and it takes noticeable time to load at startup, but in memory, it is in a much faster data structure for searching, so it is not noticeably slower to visit beaches and comb tiles.

I've only been saving commons and combed tiles for a couple days.

Here's the current data:

Code:
> BeachComber data

Known rare tiles: 935
Locally discovered rare tiles: 44
Erroneous rare tiles: 1

Verified rare tiles: 352
Newly verified rare tiles: 8
Total: 360

Known uncommon tiles: 48732
New uncommon tiles: 11
Total: 48743

Known common tiles: 18159
New common tiles: 393167
Total: 411326

Known combed tiles: 341

Known sand castle beaches: 180
New sand castle beaches: 0

Beach Heads: 11

Unvisited twinkle tiles: 3
Last minutes down the beach spaded: 430

Beaches with rare tiles: 892
Beaches with verified rare tiles: 353
Beaches with uncommon tiles: 9944
Beaches with common tiles: 7935
Beaches with combed tiles: 271
Beaches with sand castles: 180
Beaches with unvisited twinkles: 3

I also souped up BeachComberUtilities to have 3 kinds of analysis.

As before:

Code:
> BeachComberUtilities uncommon

56 beaches have no known uncommons.
4 beaches with no uncommons have a verified rare tile.
2 beaches with no uncommons have an unverified rare tile.
50 beaches with no uncommons have no known rare tile.

This is with your new data.

Code:
> BeachComberUtilities combed

There are 341 unknown combed tiles on 271 beaches.

Ditto.

Code:
> BeachComberUtilities tides

There are 7935 beaches with observed commons.
1251 beaches have been spaded with tides = 0
977 beaches have been spaded with tides = 1
2542 beaches have been spaded with tides = 2
1750 beaches have been spaded with tides = 3
1412 beaches have been spaded with tides = 4
3 beaches have only seen higher rows

Note that those are not "fully spaded" beaches; as I said, I initialized the set of commons from my session logs, which have many beaches visited at lower tides.

After I've made a few passes over the whole tide cycle, I'll write another function which will determine which beaches have been fully spaded - known rares, uncommons, commons, beach head add up to 100 tiles.

It will take a while. You are definitely ahead of me. :)
 

Veracity

Developer
Staff member
I made (a bit more than) 1 pass through all 10000 minutes of the beach.
"A bit more" because I ended up with tides = 0 today, and looked at 2,000 or so beaches that way.

You have to enable "commons and "combed" tracking, since the tiles.common.jason is almost 35 MB (!).
Noticeably slow to read the file into a fast data structure in memory, but, once loaded, actual combing is still zippy.

Revision 29 has this:

Code:
> BeachComber data

Known rare tiles: 935
Locally discovered rare tiles: 45
Erroneous rare tiles: 1

Verified rare tiles: 352
Newly verified rare tiles: 26
Total: 378

Known uncommon tiles: 48732
New uncommon tiles: 20
Total: 48752

Known common tiles: 18159
New common tiles: 771607
Total: 789766

Known combed tiles: 525

Known sand castle beaches: 180
New sand castle beaches: 0

Beach Heads: 11

Unvisited twinkle tiles: 2
Last minutes down the beach spaded: 8488

And:

Code:
> BeachComberUtilities combed

There are 525 unknown combed tiles on 383 beaches.

> BeachComberUtilities tides

There are 10000 beaches with observed commons.
3052 beaches have been spaded with tides = 0
2336 beaches have been spaded with tides = 1
2002 beaches have been spaded with tides = 2
1475 beaches have been spaded with tides = 3
1135 beaches have been spaded with tides = 4
0 beaches have only seen higher rows

I am glad the tides never exceeded the maximum. :)

I'm going to do the following:

1) Write another utility to see how many beaches are "incomplete" at tides 4, 3, 2, 1, 0
That is to say, all visible tiles are common (rough sand or sand castles), uncommon (twinkles), rare (twinkle or whale), or beach head.

2) Given that, based on the tide, only look at beaches which are "incomplete" at that tide level.
There is no need to combed the beach at tide=4 if there are no unknown "combed" tiles to be discovered.

This will result in faster discovery - visiting only beaches with previously unidentified combed patches.
I think this is more-or-less the equivalent of Irrat's approach.

It will eventually (once I have seen all tiles at tides=0) result in a single character being able to visit all of the "incomplete" beaches each day.
 

Veracity

Developer
Staff member
Progress report:

I've added "completeness" checking based on all the beaches I've combed over the last three months at the various tidal levels. Had I been saving commons from the beginning, I'd be a lot closer, but tides = 0 happens once every 8 days and tides = 1 happens twice, so those are lagging.

Code:
> BeachComberUtilities complete

Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading beach castle data...
Done loading tile data

Iterating over 10,000 beaches, 10 rows, 10 columns

Total rares = 937
Total uncommons = 48768
Total commons = 847417
Total heads = 11
Total combed = 322
Total unseen = 102545
Total: 1000000

rowrareuncommoncommonheadscombedbeachesunseenbeachesunknownbeaches
1017049629482504342004342
916047849501733636003636
812348699496283837003837
711048199503703433003433
69248719498705047005047
55748939501203836003836
47649139499002121002121
3654883950440880088
25048416361804535314463367314913402
134493323925098710997561711087569

Code:
Accumulating tidal data for 10 rows
rowrareuncommoncommonheadscombedbeachesunseenbeachesunknownbeaches
1017049629482504342004342
9330974618984237975007975
8453146152848041111711000117110
7563194343798411115113800151138
6655243054748281120117500201175
5712291985698401123920300239203
4788341116648301126021600260216
3853389947598741126822300268223
29034383582349211313253314463367317593566
1937487688474171132226010254575611028677692

That last table is cumulative:

tides = 4 -> rows 5-10 are visible
tides = 3 -> rows 4-10 are visible
tides = 2 -> rows 3-10 are visible
tides = 1 -> rows 2-10 are visible
tides = 0 -> rows 1-10 are visible

Which means that when tides are at 3 (like today), spading only needs to look at 217 beaches to look for the 241 ties which have only been seen as combed on those particular beaches.

I'm about to code that up: is you do "BeachComber spade all", it will determine what the tides are and will visit ONLY the list of beaches with combed and/or unseen tiles at that level.

This means I will only need my whole army of spading multis for tides = 0 or 1.
By and by, I should be able to get by on using two multies:
one to spade the (few remaining) beaches with combed tiles
one to visit unverifed rares.
 

Veracity

Developer
Staff member
Revision 30 is now out.

1) I have now combed through tides = 1, 0, 1 and here is the current state of my spading:

rowrareuncommoncommonheadcastle#combed#unseen#unknown#
101714971948250003333003333
91604793950173002727002727
81234876949628003130003130
7110482294945093843029003029
6924884949910003332003332
5574898950120003332003332
47649189479401961561616001616
365488395049000330033
251484195101000770077
13449344793102221771110468684974468794984

Accumulating tidal data for 10 rows

rowrareuncommoncommonheadcastle#combed#unseen#unknown#
101714971948250003333003333
933197641898423006059006059
84541464028480411009187009187
75641946237974911938412111600121116
66562434647474011938415414300154143
57132924456975211938418717000187170
4789341626645461128916420318400203184
3854390457595951128916420618700206187
2905438868546961128916421319300213193
19394882090262711511180224202468684974470925108

I have looked at all beaches with tides 1 or higher.
With tides at 0 - which happens one day out of 8 - I have not inspected 4974 beaches.
I should be able to set all of my multis doing "BeachComber spade all" on the next two tides=0 days (Dec 8 & 16) and end up with only combed tiles - not unseen - left to spade.

BeachComber spade all will visit unseen tiles first and, if not remain in the database, combed.
BeachComber all rare unverified twinles will try to verify "known" rare.

Those will be the only "spading" things required.

I am sure that Irrat is ahead of me, here, but between the two of use, we WILL finish mapping the entire beach. :)

2) Note that I originally collected sand castle tiles, but thought they were unnecessary - but I'm doing it again.
Notice that sand castles are all in rows 7, 4, and 1. That's why it took so long to verify the beaches; row 1 is difficult.

3) I also added a couple of commands:

Code:
> BeachComberUtilities minutes=9375

Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Done loading tile data

minutesrareuncommoncommonheadcastlecombedunseenunknown
9375159202000


Code:
> BeachComberUtilities minutes=9375 verbose

Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Done loading tile data

Beach 9375
rowrareuncommoncommonheadcastlecombedunseenunknown
1010900000
9001000000
801900000
7001000000
6001000000
502800000
400901000
301900000
201900000
100901000

4) I have discovered some new rare tiles and verified a bunch more.
I have verified 408 out of the 939 "published" rares.
Slow process...

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Done loading tile data

Known rare tiles: 939
Locally discovered rare tiles: 47
Erroneous rare tiles: 1

Verified rare tiles: 408
Newly verified rare tiles: 0
Total: 408

Known uncommon tiles: 48820
New uncommon tiles: 0
Total: 48820

Known common tiles: 902627
New common tiles: 0
Total: 902627

Known combed tiles: 224

Known sand castle tiles: 511
New sand castle tiles: 0
Known sand castle beaches: 180
New sand castle beaches: 0

Beach Heads: 11

Unvisited twinkle tiles: 1
Last minutes down the beach spaded: 2311

Beaches with rare tiles: 894
Beaches with verified rare tiles: 400
Beaches with uncommon tiles: 9944
Beaches with common tiles: 10000
Beaches with combed tiles: 202
Beaches with sand castle tiles: 180
Beaches with sand castles: 180
Beaches with beach heads: 11
Beaches with unvisited twinkles: 1
 

Irrat

Member
Huh, I missed the notifications.

You're further ahead than me for the rare tiles funny enough. I've found only 335, and that's including the hoarded ones.

Code:
Sand: 949,500
Uncommon Sparkle: 48,548
Unknown tiles: 1,094
Combed: 1,058
Castle: 512
Rare Sparkle: 335
Unknown tiles not on rare beach: 38
Mystery Sparkle: 36
Head: 11

I have about 5 tiles that might be sand, but that looks like a nice clean number. Combo will comb the first tile in the beach if there's no good targets.
My % of spading has slowed down drastically unfortunately. Today I spent 724 turns visiting beaches, only 7 of those beaches had a tile I could look at.
I've adjusted my script so now it'll only hit the known beaches once a day, and the unknown beaches hourly..
I really want to finish unhoarding those beaches so I don't have to worry about fighting other combers for potential rares :p
 

fronobulax

Developer
Staff member
In the realm of inconsistencies that hurt no one, the script said "You found a cursed pirate hoard!" but data\beach\html\README.txt says "Combing a pirate treasure trove". Or perhaps there are many types of pirate treasure trove and I don't know about the others?

Less trivial, the resulting HTML cannot be displayed directly by my browser. That is consistent with my own experience of saving pages for debugging or testing - there are lines present in the file that must be deleted before it will be rendered. This is not an action item as much as a "heads up" for other users who might not be prepared to edit the saved file.

And thank you again for writing and maintaining this.
 

Veracity

Developer
Staff member
1) Irrat published a new data set for combo. I looked at it and noticed a fair number that I had published - and the error I found was deleted. Perhaps this came from my data or was independently found; either is fine.

I added the new tiles I had not seen to tiles.rare.json
I did not add them to tiles.verified.json, since I have not seen them personally, yet. Sorry. :)

2) Today I send my army of spading multis to take a look at unspaded beaches at tides = 0.

BeachComber spade no longer cycles sequentially over all beaches, but looks first at:
- beaches we have not seen at the current tide level
- beaches with combed tiles

Since there are more of the former than turns I had available, it was all "unseen" beaches.
(I aso deleted spade.minutes.txt, since that is no longer needed.)

After merging the newly discovered stuff in with my existing data:

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Done loading tile data

Known rare tiles: 978
Locally discovered rare tiles: 50
Erroneous rare tiles: 1

Verified rare tiles: 425
Newly verified rare tiles: 0
Total: 425

Known uncommon tiles: 48866
New uncommon tiles: 0
Total: 48866

Known common tiles: 930796
New common tiles: 0
Total: 930796

Known combed tiles: 144

Known sand castle tiles: 511
New sand castle tiles: 0
Known sand castle beaches: 180
New sand castle beaches: 0

Beach Heads: 11

Unvisited twinkle tiles: 1

Beaches with rare tiles: 930
Beaches with verified rare tiles: 416
Beaches with uncommon tiles: 9944
Beaches with common tiles: 10000
Beaches with combed tiles: 128
Beaches with sand castle tiles: 180
Beaches with sand castles: 180
Beaches with beach heads: 11
Beaches with unvisited twinkles: 1

Here is my "completeness" report:

rowrareuncommoncommonheadcastle#combed#unseen#unknown#
101814977948250001717001717
91674794950173001919001919
81294882949628001918001918
7114482894945093842019002019
6964895949910001818001818
5584909950120002121002121
47849229479401961561010001010
366488495049000110011
252484195105000220022
13749347609602221771715186941980187111995

Accumulating tidal data for 10 rows

rowrareuncommoncommonheadcastle#combed#unseen#unknown#
101814977948250001717001717
934897711898423003635003635
84771465328480411005551005551
7591194813797491193847570007570
6687243764747401193849386009386
57452928556975211938411410300114103
4823342076645461128916412411200124112
3889390917595951128916412511300125113
2941439328547001128916412711500127115
19784886693079611511180144128186941980188382092

In 8 days, when tides are at 0 again, I will send the army to look at the 1980 beaches I have not seen row 1 of.

Henceforth, spading will visit only beaches with unidentified combed tiles.

Since I only know of 144 combed tiles on 128 beaches, that will be easily accomplished by a single multi.
Perhaps several times a day, to look for twinkles that have regenerated.

Also, there is still attempting verify the rest of the rares.
There are more unverified rares than I generate via consumption with any single character - and it takes a long time for rares to regenerate, and the universe of combo users is compting ("interfering") with my spading, so it will take a while, I expect.

I'll make another data dump in 8 days.
 

Veracity

Developer
Staff member
In the realm of inconsistencies that hurt no one, the script said "You found a cursed pirate hoard!" but data\beach\html\README.txt says "Combing a pirate treasure trove". Or perhaps there are many types of pirate treasure trove and I don't know about the others?
I need to update README. I have made a LOT of changes - and added additional files, like BeachComberUtilities.ash, which have their own parameterized command lines.

Less trivial, the resulting HTML cannot be displayed directly by my browser. That is consistent with my own experience of saving pages for debugging or testing - there are lines present in the file that must be deleted before it will be rendered. This is not an action item as much as a "heads up" for other users who might not be prepared to edit the saved file.
Have you tried test showhtml data/beach/html/FILENAME?

That will pop up a mini-browser window. It doesn't render as well as a real browser, but the images and scripts on KoL's image servers are all available.

I have no idea what "lines must be deleted before it will be rendered". Can you elaborate?

And thank you again for writing and maintaining this.
I am definitely running out of new features. I still want to accumulate results for each character individually - in addition to combining them in a total results file. That's only an issue if you have more than one character combing the beach.
 

fronobulax

Developer
Staff member
test showhtml data/beach/html/FILENAME worked as expected - cursed tricorn hat, some pork gems and some meat.

Double clicking on the file to display it in my default browser generated an error "ERR_FILE_NOT_FOUND" but the address bar included "/dist/data/game.php"

Deleting the lines
Code:
<!--
if (parent.frames.length == 0) location.href="game.php";
top.charpane.location.href="charpane.php";
//-->
from where they occur at the top of the files results in a file that my browser displays.

Those lines have caused me problems in preparing HTML for use in tests which I solve by deleting them but that may be a problem of my own making :)
 

Veracity

Developer
Staff member
Revision 33 has the following changes:

1) Irrat submitted a package of new rares to combo.
11 of them were new to me, so I added them to tiles.rare.json

2) I have now looked at all beaches with tides = 0.

Code:
> BeachComberUtilities complete

Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Iterating over 10,000 beaches, 10 rows, 10 columns

Total rares = 991
Total uncommons = 48911
Total commons = 949499
Total beach heads = 11
Total sand castles = 512
Total combed = 76
Total: 1000000

rowrareuncommoncommonheadcastle#combed#
1018349859482500077
91704800950173001010
81304889949628001111
7117483594945093841010
6974902949910001010
5604911950120001717
479492494794019615677
36648849504900011
25248419510500022
137494094799022317811

Code:
Accumulating tidal data for 10 rows

rowrareuncommoncommonheadcastle#combed#
1018349859482500077
935397851898423001717
84831467428480411002827
7600195093797491193843837
6697244114747401193844846
5757293225697521193846561
483634246664546112891647268
390239130759595112891647369
295443971854700112891647571
199148911949499115121807672

I no longer have "unseen" or "unknown" columns.
That's not quite right, since this race condition exists:

I parse the beach and see that a formerly combed tile is now a twinkle.
I remove it from the list of combed tiles.
I visit another twinkle and when I look at the beach again, the previously combed tile is now combed again
I don't re-add it to the list of combed tiles. Instead, I save it as an unvisited twinkle.

I'll think about this.

Notice that there are a total of 76 tiles on 72 beaches that are unknown.
Ergo, BeachComber spade all will visit 72 beaches - and comb up to 76 times, in total.

Even with Crimbo now underway, I should be able to manage that at least once a day. :)

3) Here's the current summary:

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Known rare tiles: 991
Locally discovered rare tiles: 52
Erroneous rare tiles: 1

Verified rare tiles: 448
Newly verified rare tiles: 0
Total: 448

Known uncommon tiles: 48911
New uncommon tiles: 0
Total: 48911

Known common tiles: 949499
New common tiles: 0
Total: 949499

Known sand castles: 512
New sand castles: 0

Beach Heads: 11

Known combed tiles: 76

Beaches with rare tiles: 942
Beaches with verified rare tiles: 439
Beaches with uncommon tiles: 9946
Beaches with common tiles: 10000
Beaches with sand castles: 180
Beaches with beach heads: 11

- I discovered a couple more hoarded rares.
- I have verified 46.6% of the "known" rares.
- There remain 553 unverified rares. That is more than my cheap diet generates per day, BeachComber all rare unverified twinkles makes slow and steady progress.
- I have seen all 512 sand castles that Irrat has seen. That's a nice round number.

Code:
> BeachComberUtilities uncommon

Loading rare tile data...
Loading verified tile data...
Loading uncommon tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data
54 beaches have no known uncommons.
4 beaches with no uncommons have a verified rare tile.
0 beaches with no uncommons have an unverified rare tile.
50 beaches with no uncommons have no known rare tile.
0 beaches with no uncommons have an unknown combed tile.

No conclusions yet.

Speaking of Crimbo, I am finally ready to start spending turns on it for the first time.
I wanted to finish examining row 1, so today is mostly shot, but I'll be diving in tomorrow.
 

Irrat

Member
Code:
Sand: 949,500
Uncommon Sparkle: 48,864
Unknown tiles: 613
Combed: 594
Castle: 512
Rare Sparkle: 500
Mystery Sparkle: 19
Head: 11
Unknown tiles not on rare beach: 4

This is only data that was actually visited, so it's missing quite a bit of the known rares. I'm 99% sure that the "unknown tiles" are actually rares. So yeah. 4 rares for sure.
I feel pretty confident in saying there's 1000 total rares, and 2 of the rares are on beaches with a rare already marked. Or it could be on those 4 beaches I haven't finished yet, I don't feel like adding code just to check that.
The sand looks like a nice number, so we can probably determine the amount of uncommon tiles just by adding all the other numbers together and finding the remaining unaccounted for after that is done.
Uncommon = 1,000,000 - (Sand + Rares + Castles + Heads)
 

Veracity

Developer
Staff member
Having been through tides = 0 again, here's the current state of my data (revision 34).
Executive summary:

26 combed tiles on 24 beaches (so BeachComber spade all will only visit 24 beaches).
478 out of 998 rares verified (so BeachComber all rare unverified twinkles wants to visit 520 tiles on 510 beaches).

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Known rare tiles: 998
Locally discovered rare tiles: 52
Erroneous rare tiles: 1

Verified rare tiles: 478
Newly verified rare tiles: 0
Total: 478

Known uncommon tiles: 48953
New uncommon tiles: 0
Total: 48953

Known common tiles: 949500
New common tiles: 0
Total: 949500

Beach Heads: 11

Known sand castles: 512
New sand castles: 0

Known combed tiles: 26

Beaches with rare tiles: 949
Beaches with verified rare tiles: 466
Beaches with uncommon tiles: 9946
Beaches with common tiles: 10000
Beaches with beach heads: 11
Beaches with sand castles: 180
Beaches with combed tiles: 24

Detailed analysis:

Code:
> BeachComberUtilities complete

Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Iterating over 10,000 beaches, 10 rows, 10 columns

Total rares = 998
(Unverified rares = 520)
Total uncommons = 48953
Total commons = 949500
Total beach heads = 11
Total sand castles = 512
Total combed = 26
Total unseen = 0
Total: 1000000

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
1018311311249909482500022
917210810748069501730022
8131747448949496280055
711769694842949450938433
699686849079499100033
560404049209501200088
4793131492994794019615622
3665548849504900011
2546648419510500000
13766494094800022317800

Code:
Accumulating tidal data for 10 rows

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
1018311311249909482500022
9355221219979618984230044
848629529314690284804110098
7603364360195323797491193841211
6702432425244394747401193841514
5762472465293595697521193842321
484150349334288664546112891642523
390750849839172759595112891642624
296151450444013854700112891642624
199852051048953949500115121802624

Shouldn't be TOO long before I can visit all the "combed" tiles (at which point I will remove those columns), but it will be a slog to verify all the remaining rares.

I'm leaving town from Jan 6 to mid-March and will not have access to my KoLmafia dev environment, but I should be able to run turns (and thus finish my Standard 2024 ascensions) and continue verifying more rares, at least.
 

Irrat

Member
I've added the last rares to combo, which is a total of 998 rares.

There's a chance the last 2 rares are just not available, having a castle or beach head on top of them.
I think someone may have already spaded all rares too and said as such.

Otherwise, there's 26 tiles on a rare beach that I don't know, that are not marked as a rare. It could be 2 of those. I need to do a writeup somewhere.
 

Veracity

Developer
Staff member
Here are two tiles I have in tiles.rare.json that you do not have in raretiles.json:

Code:
  { "minute": 2065, "row": 6, "column": 9 },
  { "minute": 3920, "row": 5, "column": 4 },

What do you have for them?

Here are session logs where I combed those tiles:

Code:
[38485] Wandering 2065 minutes down the beach
Encounter: Comb the Beach (2065 minutes down the beach)
> 4 squares in beach 2065 contain combed sand
> 85 squares in beach 2065 contain rough sand
> 1 squares in beach 2065 contain rough sand with a twinkle
> 173 rare tiles have already been verified
> 664 unverified rare tiles are candidates for combing
> Combing the square at coordinates (2065,6,10) which contains rough sand with a twinkle
Combing square 6,10 (2065 minutes down the beach)
You acquire an item: piece of driftwood
> (2065,6,10) is a 'rare' tile.

[189080] Wandering 3920 minutes down the beach
Encounter: Comb the Beach (3920 minutes down the beach)
> 5 squares in beach 3920 contain combed sand
> 84 squares in beach 3920 contain rough sand
> 1 squares in beach 3920 contain rough sand with a twinkle
> Combing the square at coordinates (3920,5,5) which contains rough sand with a twinkle
Combing square 5,5 (3920 minutes down the beach)
You acquire an item: piece of driftwood
> (3920,5,5) is a 'rare' tile.

You have one tile in raretiles.json that I have in tiles.combed.json:

Code:
  { "minute": 1105, "row": 8, "column": 9 },

If I move that to tiles.rare.json (but not tiles.rare.verified.json, since I haven't seen it yet :) ) I currently have this:

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Known rare tiles: 1000
Locally discovered rare tiles: 52
Erroneous rare tiles: 1

Verified rare tiles: 478
Newly verified rare tiles: 48
Total: 526

Known uncommon tiles: 48953
New uncommon tiles: 16
Total: 48969

Known common tiles: 949500
New common tiles: 0
Total: 949500

Beach Heads: 11

Known sand castles: 512
New sand castles: 0

Known combed tiles: 8

Beaches with rare tiles: 951
Beaches with verified rare tiles: 513
Beaches with uncommon tiles: 9946
Beaches with common tiles: 10000
Beaches with beach heads: 11
Beaches with sand castles: 180
Beaches with combed tiles: 8

I'll release this today.

I have 8 tiles that are not known to be rare, uncommon, or common that I have only seen as combed.
I have 474 tiles listed as rare that I have not yet verified. I.e., have only seen as combed.

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
1018310410349929482500000
9355199197979918984230011
848827026814695284804110022
76053373341953937974911938433
67043973912444847474011938444
57644344282937456975211938466
4843464456343046645461128916477
3909469461391887595951128916488
2963471463440298547001128916488
11000474466489699495001151218088
 

Veracity

Developer
Staff member
I did a few more days of spading. Revision 35 has this:

We are down to 4 tiles which have only been seen as combed and are not unverified rares.
We are also down to 553 verified and 447 unverified rares.

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Known rare tiles: 1000
Locally discovered rare tiles: 52
Erroneous rare tiles: 1

Verified rare tiles: 553
Newly verified rare tiles: 0
Total: 553

Known uncommon tiles: 48973
New uncommon tiles: 0
Total: 48973

Known common tiles: 949500
New common tiles: 0
Total: 949500

Beach Heads: 11

Known sand castles: 512
New sand castles: 0

Known combed tiles: 4

Beaches with rare tiles: 951
Beaches with verified rare tiles: 539
Beaches with uncommon tiles: 9946
Beaches with common tiles: 10000
Beaches with beach heads: 11
Beaches with sand castles: 180
Beaches with combed tiles: 4

Code:
> BeachComberUtilities complete

Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Iterating over 10,000 beaches, 10 rows, 10 columns

Total rares = 1000
(Unverified rares = 447)
Total uncommons = 48973
Total commons = 949500
Total beach heads = 11
Total sand castles = 512
Total combed = 4
Total unseen = 0
Total: 1000000

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
10183979649929482500000
9172919148089501730000
8133676748979496280000
711761614844949450938411
699565649109499100000
560363649279501200011
4792929493094794019615611
3665548849504900011
2542248419510500000
13733494094800022317800

Code:
Accumulating tidal data for 10 rows

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
10183979649929482500000
9355188187980018984230000
848825525414697284804110000
76053163141954137974911938411
67043723672445147474011938411
57644084032937856975211938422
4843437430343086645461128916433
3909442435391927595951128916444
2963444437440338547001128916444
11000447440489739495001151218044
 

Veracity

Developer
Staff member
Revision 36 does this:

1) 3 of the 4 "combed" tiles are "uncommon", as expected.
2) 65 more "rare" tiles have been verified.

Code:
> BeachComber data

Loading tile data...
Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Known rare tiles: 1000
Locally discovered rare tiles: 52
Erroneous rare tiles: 1

Verified rare tiles: 618
Newly verified rare tiles: 0
Total: 618

Known uncommon tiles: 48976
New uncommon tiles: 0
Total: 48976

Known common tiles: 0
New common tiles: 0
Total: 0

Beach Heads: 11

Known sand castles: 512
New sand castles: 0

Known combed tiles: 1

Beaches with rare tiles: 951
Beaches with verified rare tiles: 599
Beaches with uncommon tiles: 9946
Beaches with common tiles: 0
Beaches with beach heads: 11
Beaches with sand castles: 180
Beaches with combed tiles: 1

I need to visit 1 (!) "uncommon" tile I have only see as "combed"
I need to verify 382 "rare" tiles I have only seen as combed.

Code:
> BeachComberUtilities complete

Loading rare tile data...
Loading verified rare tile data...
Loading uncommon tile data...
Loading common tile data...
Loading beach head data...
Loading sand castle data...
Loading combed tile data...
Done loading tile data

Iterating over 10,000 beaches, 10 rows, 10 columns

Total rares = 1000
(Unverified rares = 382)
Total uncommons = 48976
Total commons = 949500
Total beach heads = 11
Total sand castles = 512
Total combed = 1
Total unseen = 0
Total: 1000000

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
10183878649929482500000
9172787848089501730000
8133545448979496280000
711750504845949450938400
699474749109499100000
560333349289501200000
4792323493194794019615600
3665548849504900011
2542248419510500000
13733494094800022317800

Code:
Accumulating tidal data for 10 rows

rowrare(unverified#)uncommoncommonheadcastle#(combed#)
10183878649929482500000
9355165164980018984230000
848821921814697284804110000
76052692671954237974911938400
67043163122445247474011938400
57643493452938056975211938400
4843372366343116645461128916400
3909377371391957595951128916411
2963379373440368547001128916411
11000382376489769495001151218011

Once I get that last "combed" tile, I will remove those columns and change BeachComber spade to verify the rest of the rare tiles.
There are few enough of those that my spading multi can visit all of them each day with a cheap diet.

I notice that combo only has 994 rare tiles.
I just opened a PR to share the last 6 tiles - with proof from my session logs.
Once that is merged, both BeachComber and combo will have all 1000 rares.

Combo started with 849 rares.
I discovered 1 error and 52 previously "hoarded" rares.
Irrat's bot discovered another 100 (before I did; I have subsequently "verified" many of them, so would have discovered them myself, soon enough. ;) ).

Between the two of us, there are no more "hoarded" rares.

I'll make a general announcement to that effect once I finish verifying the last 382 rares I have not personally seen.
I'm getting, oh, 3 per day or so, so it will be several months yet.
Probably more; I've looked for that last combed "uncommon" scores of times, and uncommons regenerate much faster than rares.
 

Irrat

Member
Actually that's weird.

My current rares file has 1000 rares in it, but 2065 is the only tile that I don't know that isn't in combo as a rare... Which is the one you've marked as a rare.

On the other hand.
{ "minute": 9063, "row": 3, "column": 6 },

This is a rare.
So that's 1001 rares?.. Probably another false rare somewhere.

Code:
Sand: 949,500
Uncommon Sparkle: 48,976
Rare Sparkle: 775
Castle: 512
Unknown tiles: 226
Combed: 219
Head: 11
Mystery Sparkle: 7
Unknown not rare tiles: 1

I have 226 tiles left to spade.
I was waiting for that tile to be found, because it would be the "last non-rare".
But now it seems like there's a false rare somewhere.
 
Top