• Breaking News

    Monday, September 21, 2020

    Bloons TD 6 Daily Challenge - September 21, 2020

    Bloons TD 6 Daily Challenge - September 21, 2020


    Daily Challenge - September 21, 2020

    Posted: 21 Sep 2020 01:00 AM PDT

    Discussion about the today's daily challenge in Bloons TD 6.

    Please keep all discussion, question and strategies about the daily challenge and advanced challenge to this post to keep subreddit clutter low.

    Make sure to distinguish whether you are posting about the daily challenge or the advanced challenge clearly in your comment.

    Click here to see previous daily challenge posts

    Happy popping!

    submitted by /u/BloonsBot
    [link] [comments]

    I gotcha bro

    Posted: 21 Sep 2020 07:05 AM PDT

    Hey! Check this !

    Posted: 21 Sep 2020 05:57 AM PDT

    Monkey unemployment rates are spiking up

    Posted: 21 Sep 2020 01:29 AM PDT

    Oh no!

    Posted: 20 Sep 2020 05:51 PM PDT

    Heli pilot but I typed in 3 letters of the text and clicked a recommendation (hello oil)

    Posted: 21 Sep 2020 05:19 AM PDT

    Next rework for my monkeys which is Monkey miner

    Posted: 21 Sep 2020 04:42 AM PDT

    I think I may use sub as a crutch...

    Posted: 20 Sep 2020 07:28 PM PDT

    The fact that you get the equivalent of 10 race attempts for 1st place is not ok

    Posted: 21 Sep 2020 08:43 AM PDT

    Nothing like two towers supporting each other

    Posted: 21 Sep 2020 06:49 AM PDT

    I don't need sleep, I need a brief guide to BTD6

    Posted: 21 Sep 2020 12:11 AM PDT

    They changed Quincy's level 3 description!

    Posted: 21 Sep 2020 08:10 AM PDT

    They don’t social distance

    Posted: 21 Sep 2020 05:03 AM PDT

    Don't take this seriously, turn off your brain.

    Posted: 20 Sep 2020 06:53 PM PDT

    low effort sentry gun took like 5 minutes

    Posted: 21 Sep 2020 07:03 AM PDT

    Saw a post earlier about the two ice monkeys supporting eachother, learned you can just kinda break placements with it, not sure if known bug or not but thought it was neat (note they are not counted as water towers I tried using energizer and no cooldown buff from reactor)

    Posted: 21 Sep 2020 08:42 AM PDT

    Tried to make Etienne without Glasses/Goggles

    Posted: 20 Sep 2020 07:20 PM PDT

    {Hold It Back and- ZOOM!} - Quincy Poster

    Posted: 20 Sep 2020 08:39 PM PDT

    Oh no ISAB

    Posted: 20 Sep 2020 09:42 PM PDT

    Grand Sabo in Among us (I know it isn't great)

    Posted: 20 Sep 2020 02:16 PM PDT

    Can’t relate, I suck at Bloons TD 6.

    Posted: 20 Sep 2020 08:52 PM PDT

    So, I tried to drawn a dart monkey in my drawing style.

    Posted: 20 Sep 2020 10:19 PM PDT

    A BTD6 and Javascript Programming crossover: Determining if an upgrade set is valid.

    Posted: 20 Sep 2020 07:21 PM PDT

    A BTD6 and Javascript Programming crossover: Determining if an upgrade set is valid.

    Introduction

    Hey! A quick introduction. I'm rmlgaming and I am one of the three developers of one of the the best BTD6 bots out there: QuincyBot -- a tool so helpful that even Rohan uses it on the daily.

    I wanted to reach out and provide an opportunity to combine BTD6 with javascript programming (shudders) to solve an issue that lies at the core of this game: Given a string (what programmers call a field of text), determine if it represents a valid BTD6 upgrade path.

    Examples

    First, to warm up, let's enumerate some valid examples of BTD6 upgrades:

    • 520
    • 210
    • 000
    • 004

    And now some invalid examples

    • 035
    • 111
    • 016

    Rules Introduction

    It's important to recognize valid and invalid examples so we can draft some logical rules that determine what to allow and what not to allow. I see two ways to approach the problem:

    1. Write rules for what is valid. Any upgrade set that isn't caught by these checks gets flagged as invalid.
    2. Write rules for what is not valid. Any upgrade set that isn't caught by these checks gets noted as valid.

    So what happens when we pick 1? Well without going through too much detail, there end up being too many rules to write (if you can find a concise set of rules that can diagnose an upgrade set valid, let me know in the comments), so I decided to go with 2. So we'll want a function that returns `true` in the end if it passes a set of conditions.

    Developing and Programming Rules

    Here's what we'll start with:

    function isValidUpgradeSet(upgradeSet) { // Rules will go here. By the way, this is a comment and this isn't executed as code, it's text written by one coder to another to explain their work return true; } 

    Right off the bat, there is one obvious rule

    A) There shouldn't be a digit greater than 5 in the upgrade set

    This is because Tier 5 is the highest that upgrades go in BTD6. The best way to do this programatically is to check if we can find the digits 6, 7, 8, or 9 in the upgrade set. This can be achieved through a regular expression:

    if (/6|7|8|9/.test(upgradeSet)) return false; 

    note that | means OR in regular expressions and test sees if the left-hand side is contained within the right-hand side of test(). So far we have:

    function isValidUpgradeSet(upgradeSet) { // More rules will go here if (/6|7|8|9/.test(upgradeSet)) return false; return true; } 

    Another somewhat obvious rule is that there can't be 2 crosspaths. What this means is that there must be a 0 digit somewhere because there needs to be a path that isn't used. In fact, the general rule is:

    B) There must be at least one 0 in the upgrade set

    ..."at least" because having more than one 0 is ok, as in 500. This is easy to write out:

    if (!upgradeSet.includes('0')) return false; 

    Note that the prefixed ! means "not", so if the upgrade set does not include a 0, the upgrade set is invalid. So far:

    function isValidUpgradeSet(upgradeSet) { // Just one more rule to go! if (!upgradeSet.includes('0')) return false; if (/6|7|8|9/.test(upgradeSet)) return false; return true; } 

    The last supposed rule, although easy to describe in BTD6 terms, is actually kinda tricky to lay out in logical form. The rule goes, as we know, the crosspath can't be higher than tier 2.

    Simple, right? But how do you check which digit is a crosspath? How do you know if you find a digit higher than 3, that it's the main path as in 203? or is it an invalid crosspath as in 503. In logical terms the rule put most simply is:

    C) There cannot be more than 1 digit greater than 2.

    Written so concisely it seems simple but ultimately it would be easy to get stuck up in the semantics of what a crosspath vs. a path is. For example, what's the crosspath for a 022 super monkey? A 303 ninja?

    Another way to write out the rule, now that we've ensured that all digits in the upgrade set are between 0 and 5 inclusive is that there cannot be more than 1 digit equal to any of the digits 3, 4, or 5. Otherwise, there would be a second path, the crosspath, that's greater than tier 2. So using regular expressions again, here's what we get

    result = upgradeSet.match(/3|4|5/g); if (result && result.length > 1) return false; 

    result will be the evaluation of the regular expression matching. What match() does is it returns a list of all instances in which the right can be found in the left (yeah the sides are backwards from test(), it's dumb). So, remembering that | means OR, result will equal ['4','3'] if the upgradeSet is 403 or ['3'] if the upgradeSet is 203. The next line with the if check ensures that

    1. There are results (if upgradeSet is 220 then the match() check returns null or "nothing" in programming land)
    2. That there is more than one match (that there are more than two Tier3+ upgrades)

    If both conditions are met, then the upgrade set is invalid.

    Results and Try it Yourself!

    So finally, we have:

    function isValidUpgradeSet(upgradeSet) { if (!upgradeSet.includes('0')) return false; if (/6|7|8|9/.test(upgradeSet)) return false; result = upgradeSet.match(/3|4|5/g); if (result && result.length > 1) return false; return true; } 

    And that's basically it!!

    Now go ahead and try out some examples. Here's a link with the above code with a few changes:

    • Allows dashes: 3-0-2 is allowed along with 302
    • Ensures that the input (after dashes are removed) is a 3-character string
    • Ensures that the 3-character string is a number
    • Prints out the result in an easy to read way

    Go to the link above and hit "Console (beta)" as shown in the image below. Then click your mouse where the code is and hit <Ctrl+Enter> on Windows or <Cmd+Enter> on mac and watch the result in the console! Change UPGRADE_SET on the left to other values; play around with it and try to break it. Happy Programming!

    https://preview.redd.it/joys1wkeyeo51.png?width=1661&format=png&auto=webp&s=aa556e8fb2512ef3171ca0289bbdf6cd224dfd7f

    submitted by /u/rmlrmlchess
    [link] [comments]

    FnaF and BTD6 Crossed over! (It looked better in my head)

    Posted: 21 Sep 2020 08:09 AM PDT

    No comments:

    Post a Comment