Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 Just now, Olly said: That's not a thing. ...dental implants...? <> Link to comment Share on other sites More sharing options...
Lucky Bolt 35,061 July 3, 2019 Share July 3, 2019 *pokes muzzle in* I think I should make my presence known here. *sips coffee* ...hm. Y’all got espresso? 1 ☆ My socials ☆ Link to comment Share on other sites More sharing options...
Cash In 22,180 July 3, 2019 Share July 3, 2019 46 minutes ago, Lucky Bolt said: *pokes muzzle in* I think I should make my presence known here. *sips coffee* ...hm. Y’all got espresso? We have everything. Muffins included . At first I rejected the zero, but that was because I simply didn't understand it. Now I do. Link to comment Share on other sites More sharing options...
Lucky Bolt 35,061 July 3, 2019 Share July 3, 2019 2 hours ago, Cash In said: We have everything. Muffins included . Well in that case.... *takes a shot of espresso* I needed that How are you all? ☆ My socials ☆ Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 1 hour ago, Lucky Bolt said: Well in that case.... *takes a shot of espresso* I needed that How are you all? Could be worse I prefer a french press to espresso - easier to pick out the more subtle flavours, and doesn't have you pinging off the walls if you drink a bunch of it. 1 ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 5 minutes ago, CypherHoof said: Could be worse I prefer a french press to espresso - easier to pick out the more subtle flavours, and doesn't have you pinging off the walls if you drink a bunch of it. ...that made me visualise Celly-bug bouncing all over the walls... I also spent all night figuring out the data flow of this one monster class I just wrote... <> Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 3 minutes ago, Ganaram Inukshuk said: ...that made me visualise Celly-bug bouncing all over the walls... I also spent all night figuring out the data flow of this one monster class I just wrote... Pinkie-bug sounds more likely - or given Silverstream has a piece of the Perl, I am suspicious that she can't formshift to some other form like a changeling if she wants to.... ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 8 minutes ago, CypherHoof said: Pinkie-bug sounds more likely - or given Silverstream has a piece of the Perl, I am suspicious that she can't formshift to some other form like a changeling if she wants to.... Wait, Pinkie but as a changeling...? <> Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 10 minutes ago, Ganaram Inukshuk said: Wait, Pinkie but as a changeling...? Maybe she was ALWAYS a changeling. As Sunset Shimmer says - that explains SOOO much... ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Jeric 46,850 July 3, 2019 Share July 3, 2019 5 hours ago, Lucky Bolt said: Y’all got espresso? Actually, I do I do Link to comment Share on other sites More sharing options...
Olly 1,011 July 3, 2019 Share July 3, 2019 I just saw a huge moth. It was BIG. Big boy moth We have two ears and one mouth, so we should listen more than we say. Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 1 minute ago, Olly said: I just saw a huge moth. It was BIG. Big boy moth Well, if there aren't also ants... you moth-ant worry ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 Just now, Olly said: I just saw a huge moth. It was BIG. Big boy moth There was this "but every other beat is missing" song, but it was "Metallica - Moth into Flame", so it turned into "Meta - Mothie". <> Link to comment Share on other sites More sharing options...
Olly 1,011 July 3, 2019 Share July 3, 2019 I think my terror is proportionate to the size of the bug so ants don't really affect me We have two ears and one mouth, so we should listen more than we say. Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 Just now, Olly said: I think my terror is proportionate to the size of the bug so ants don't really affect me But what if it was inversely proportional? Side note: I'm thinking about a distressed Ocellus for no good reason... <> Link to comment Share on other sites More sharing options...
Prometheus 3,038 July 3, 2019 Share July 3, 2019 Oh damn, this thread is actually hot?! Could this... could this be the return of the WPCC? Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 2 minutes ago, Prometheus said: Oh damn, this thread is actually hot?! Could this... could this be the return of the WPCC? Hopefully not AS bad as it was last summer - but more active is good ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Olly 1,011 July 3, 2019 Share July 3, 2019 4 minutes ago, Prometheus said: Oh damn, this thread is actually hot?! Could this... could this be the return of the WPCC? By virtue of being identical to the general chat thread and the fact that thread is as dead as it gets, yes. 5 minutes ago, Ganaram Inukshuk said: But what if it was inversely proportional? Like an elephant being scared of a mouse? side note did you know cats are terrified of cucumbers We have two ears and one mouth, so we should listen more than we say. Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 3, 2019 Share July 3, 2019 3 minutes ago, Olly said: By virtue of being identical to the general chat thread and the fact that thread is as dead as it gets, yes. Like an elephant being scared of a mouse? side note did you know cats are terrified of cucumbers I already know about the cucumbers, but have you ever seen a birb annoy a cat? <> Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 3, 2019 Share July 3, 2019 12 minutes ago, Ganaram Inukshuk said: I already know about the cucumbers, but have you ever seen a birb annoy a cat? Could make a bear out of cucumbers. A cucumbear.... ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Olly 1,011 July 3, 2019 Share July 3, 2019 33 minutes ago, CypherHoof said: Could make a bear out of cucumbers. A cucumbear.... The anaconda does not want none unless you got the buns huns We have two ears and one mouth, so we should listen more than we say. Link to comment Share on other sites More sharing options...
Ganaram Inukshuk 3,682 July 4, 2019 Share July 4, 2019 2 hours ago, Olly said: The anaconda does not want none unless you got the buns huns Sneks can be such adorable noodles sometimes. Also, uhh... There's like a tango between eight different classes right now... Remember how I said my MarkovTextGenerator was the most complex thing I've ever written? Now this is. I'm still documenting it... Spoiler using System.Collections; using System.Collections.Generic; using UnityEngine; // Don't attach to a regular old GameObject (unless testing); instead attach to a UI element, empty // GameObject, or have it be a member of an even larger class (that's attached to a UI or empty GameObject) // Functionality // - This combines the functionality of the HousingManager, OccupancyManager, and PopulationManager into one // - This class's Generate function requires up to 5 inputs: residentialBldgs, occupiedLivingUnits, // housingAffector, occupancyAffector, and populationAffector; all but the last one are either floats or ints, // with the last being an array of floats // - There are multiple Generate functions depending on how simple or complex the simulation is // Dataflow between each manager and counter // 1. _hsgCtr.Count (the number of residential bldgs) goes into _hsgMgr // 2. _hsgMgr.Occupancy (the maximum number of living units) goes into _occCtr as _occCtr.Max // 3. _occCtr.Count (the number of occupied living units) goes into _occMgr // 4. _occMgr.Population goes into _popMgr // 5. _popMgr generates a population breakdown for use with other simulators/managers // In other words, _hsgMgr.Occupancy != _occMgr.OccupancyTotal; // instead, _hsgMgr.Occupancy == _occCtr.Max and _occCtr.Count == _occMgr.OccupancyTotal public class ResidentialSimulator { // Let's make the WeightAffector a class within the ResidentialSimulator // General rules about affectors: // - If the probabilities can be generated by a function, like with a Poisson distribution, // then the affectors are the function's parameters // - If the probabilities are hardcoded and modified afterwards, then the affector is an // array of values, each affector changing an individual weight independently of the others; // the resulting vector of weights is then reconciled and used for calculations // - If the probabilities are hardcoded and modified afterwards but an array of affectors // aren't needed, then multiple parameters may be passed in like with the case of a function private static class WeightAffector { // Default housing weights; translates to an affector of 8 public static float[] DefaultHousingWeights { get { return new float[] { .875f, .109f, .014f, .002f }; } } // Default occupancy weights; translates to an affector of 2.5 public static float[] DefaultOccupancyWeights { get { return new float[] { 0.2236f, 0.2795f, 0.2329f, 0.1455f, 0.0728f, 0.0303f, 0.0108f, 0.0034f, 0.0009f, 0.0003f, }; } } // Default population weights; these are modified by affectors public static float[] PopulationWeights { get { return new float[] { .062f, .061f, .064f, .064f, .065f, .072f, .067f, .066f, .060f, .062f, .062f, .069f, .064f, .053f, .043f, .029f, .019f, .012f, .005f, .001f }; } } // Affector function for housing; this is just a geometric progression // (1/n^0, 1/n^1, 1/n^2, 1/n^3) converted into probabilities; the only // parameter to change is n; recommended range 1-100, default is 8 public static float[] GenerateHousingWeights(float n) { int length = Probabilities.HousingWeights.Length; float[] weights = ExtraMath.Geometric(n, length); return DistributionGen.Probability.Reconcile(weights); } // Affector function for occupancy; this is a Poisson distribution // Recommended range 2-4, default is 2.5 public static float[] GenerateOccupancyWeights(float n) { int upper = Probabilities.OccupancyWeights.Length; return DistributionGen.Function.PoissonZeroReconcile(n, 1, upper); } // Affector function for population; this is the affect-an-array-with-params method // I specified; the affectors translate to desirability towards different types // of residents (college students, young workers, families, senior citizens) } // For use with savefiles and debugging public struct ResidentialVectors { public int[] housingVector; // Represents bldgs that are simplexes, duplexes, triplexes, fourplexes public int[] occupancyVector; // Represents living units with 1..10 persons per living unit public int[] populationVector; // Represents population age groups of 0-4, 5-9, ... , 95-99 year ranges } // For use with getters public struct ResidentialTotals { public int housingTotal; // Total number of residential buildings public int occupancyTotal; // Total number of (occupied) living units public int populationTotal; // Total number of people living within all living units } // A simplified version of the populationVector; corresponds with the PopulationManager's // getter for each population group public struct PopulationBreakdown { public int infantPopulation; public int childPopulation; public int teenPopulation; public int youngAdultPopulation; public int adultPopulation; public int seniorPopulation; } // Managers private readonly HousingManager _hsgMgr = new HousingManager(); private readonly OccupancyManager _occMgr = new OccupancyManager(); private readonly PopulationManager _popMgr = new PopulationManager(); // Counters private readonly Counter _hsgCtr = new Counter( ); // This doesn't need a (specified) max unless you wanna simulate construction private readonly Counter _occCtr = new Counter(0); // This max is initially zero until _hsgMgr generates an occupancy // A simplified Generate function that doesn't need any parameters; it uses whatever values are // stored in its counters and the default weights // A simplified Generate function that uses default weights and two parameters that set // the counters accordingly public void GenerateResidents(int housingAffector, int occupancyAffector) { } // A three-paramater Generate function; this should be the default for simulation and should be // called every in-game week public void GenerateResidents(float[] housingWeights, float[] occupancyWeights, float[] populationWeights) { _hsgMgr.GenerateHousingVector(_hsgCtr.Count, housingWeights); _occCtr.Max = _hsgMgr.Occupancy; _occMgr.GenerateOccupancyVector (_occCtr.Count , occupancyWeights ); _popMgr.GeneratePopulationVector(_occMgr.Population, populationWeights); } // A five-parameter Generate function that sets the counters accordingly; the first two parameters // are residentialBldgs (the total number of residential buildings) and occupiedLivingUnits (the number of // occupied living units); set occupiedLivingUnits to -1 to force using the highest possible value // The other three parameters are self-explanatory public void GenerateResidents(int residentialBldgs, int occupiedLivingUnits, float housingAffector, float occupancyAffector, float[] populationWeights) { float[] housingWeights = WeightAffector.GenerateHousingWeights(housingAffector); float[] occupancyWeights = WeightAffector.GenerateOccupancyWeights(occupancyAffector); _hsgCtr.Count = residentialBldgs; _hsgMgr.GenerateHousingVector(_hsgCtr.Count, housingWeights); _occCtr.Max = _hsgMgr.Occupancy; if (occupiedLivingUnits == -1) _occCtr.MaxOutCount(); else if (occupiedLivingUnits >= 0) _occCtr.Count = occupiedLivingUnits; else _occCtr.Count = 0; _occMgr.GenerateOccupancyVector (_occCtr.Count , occupancyWeights ); _popMgr.GeneratePopulationVector(_occMgr.Population, populationWeights); } public ResidentialVectors Vectors { set { _hsgMgr.HousingVector = value.housingVector; _occMgr.OccupancyVector = value.occupancyVector; _popMgr.PopulationVector = value.populationVector; // The struct doesn't have values that directly repopulate the counters, but // once the managers are populated, they can be used to repopulate the counters // Note: _occMgr.OccupancyTotal and _occCtr.Count are equivalent // and _hsgMgr.HousingTotal and _hsgCtr.Count are equivalent _hsgCtr.Count = _hsgMgr.HousingTotal; _occCtr.Count = _occMgr.OccupancyTotal; } get { ResidentialVectors rv; rv.housingVector = _hsgMgr.HousingVector; rv.occupancyVector = _occMgr.OccupancyVector; rv.populationVector = _popMgr.PopulationVector; return rv; } } // The only reason I'm allowing this to be its own getter is to bypass the need to // call DistributionGen.Histogram.SumOfElements() public ResidentialTotals Totals { get { ResidentialTotals rt; rt.housingTotal = _hsgMgr.HousingTotal; rt.occupancyTotal = _hsgMgr.Occupancy; rt.populationTotal = _occMgr.Population; return rt; } } public PopulationBreakdown PopulationTotals { get { PopulationBreakdown pb; pb.infantPopulation = _popMgr.InfantPopulation; pb.childPopulation = _popMgr.ChildPopulation; pb.teenPopulation = _popMgr.TeenPopulation; pb.youngAdultPopulation = _popMgr.YoungAdultPopulation; pb.adultPopulation = _popMgr.YoungAdultPopulation; pb.seniorPopulation = _popMgr.SeniorPopulation; return pb; } } public void PrintDebugString() { string outputString = GetDebugString(); Debug.Log(outputString); } public string GetDebugString() { return "[ResidentialSimulator]: Hsg: " + _hsgMgr.HousingTotal + ", Occ: " + _occCtr.Count + " out of " + _occCtr.Max + ", Pop: " + _popMgr.PopulationTotal + "\n" + _hsgMgr.GetDebugString() + "\n" + _occMgr.GetDebugString() + "\n" + _popMgr.GetDebugString(); } } <> Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 4, 2019 Share July 4, 2019 9 hours ago, Ganaram Inukshuk said: Sneks can be such adorable noodles sometimes. They just want you to think that (avoid the 24Ω danger noodles though) *passes the other grey pone a coffee* ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Longhaul 6,831 July 4, 2019 Share July 4, 2019 *accepts the coffee* *sets up another one in case it wasn't meant for him* Link to comment Share on other sites More sharing options...
CypherHoof 26,482 July 4, 2019 Share July 4, 2019 28 minutes ago, Unimportant Pony said: *accepts the coffee* *sets up another one in case it wasn't meant for him* Is there anypony else I refer to as that then? ᚾᛖᚹ ᛚᚢᚾᚨ ᚱᛖᛈᚢᛒᛚᛁᚴ - ᚦᛖ ᚠᚢᚾ ᚺᚨᚦ ᛒᛖᛖᚾ ᛞᛟᚢᛒᛚᛖᛞ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Join the herd!Sign in
Already have an account? Sign in here.
Sign In Now