ソースを参照

Merge branch 'master' of git.joostsijm.nl:cb/rr_functions

JoostSijm 6 年 前
コミット
74bc98cd1b
5 ファイル変更68 行追加28 行削除
  1. 1 1
      Pipfile
  2. 8 8
      Pipfile.lock
  3. 9 7
      deep_expo.py
  4. 48 0
      deep_expo_percentage.py
  5. 2 12
      productivity/productivity.py

+ 1 - 1
Pipfile

@@ -10,4 +10,4 @@ python-dateutil = "*"
 [dev-packages]
 
 [requires]
-python_version = "3.7"
+python_version = "3"

+ 8 - 8
Pipfile.lock

@@ -1,11 +1,11 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "1e3547d7aef6bedcc29acc46645b8ad7d490b3ae0e57a8158529e7f7ddf509c4"
+            "sha256": "cf85343f72f67f4e9a474c7831d1a2db515922716fc53baab86d632710192f31"
         },
         "pipfile-spec": 6,
         "requires": {
-            "python_version": "3.7"
+            "python_version": "3"
         },
         "sources": [
             {
@@ -18,11 +18,11 @@
     "default": {
         "python-dateutil": {
             "hashes": [
-                "sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb",
-                "sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"
+                "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
+                "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
             ],
             "index": "pypi",
-            "version": "==2.8.0"
+            "version": "==2.8.1"
         },
         "rival-regions-calc": {
             "hashes": [
@@ -34,10 +34,10 @@
         },
         "six": {
             "hashes": [
-                "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
-                "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
+                "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
+                "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
             ],
-            "version": "==1.12.0"
+            "version": "==1.13.0"
         }
     },
     "develop": {}

+ 9 - 7
deep_expo.py

@@ -1,22 +1,24 @@
 """Calculate resources koef"""
 
-def calc_koef(resource_limit, koef_value):
+def calc_resource_factor(resource_limit, koef_value):
     """Calculate koef based on limit"""
     return pow(resource_limit * koef_value / 10, 0.8)
 
-
 def calc_resource(resource_limit, deep_expo, koef_value):
     """Calculate deep expo for resource"""
-    initial_koef = calc_koef(resource_limit, koef_value)
-    new_koef = calc_koef(resource_limit + deep_expo, koef_value)
-    percentage = 100 / initial_koef * new_koef
-    print("%8.2f%8.2f%8.2f" % (initial_koef, new_koef, percentage))
+    initial_resource_factor = calc_resource_factor(resource_limit, koef_value)
+    new_resource_factor = calc_resource_factor(resource_limit + deep_expo, koef_value)
+
+    percentage = 100 / initial_resource_factor * new_resource_factor - 100
+    print('{:8.2f} {:8.2f} {:8.2f}'.format(
+        initial_resource_factor, new_resource_factor, percentage
+    ))
 
 
 if __name__ == "__main__":
     print("old new percentage")
     # gold
-    calc_resource(379, 258, 0.4)
+    calc_resource(418, 219, 0.4)
     # oil
     calc_resource(223, 148, 0.65)
     # ore

+ 48 - 0
deep_expo_percentage.py

@@ -0,0 +1,48 @@
+"""Calculate resources koef"""
+
+
+def nth_root(num, root):
+    """Calculte nth root"""
+    answer = num ** (1/root)
+    return answer
+
+def calc_resource_factor(resource_limit, koef_factor):
+    """Calculate resource factor based on limit"""
+    return pow(resource_limit * koef_factor / 10, 0.8)
+    # a = (resource_limit * koef_factor / 10)**0.8
+    # a = (m * n / c) ** d
+
+def calc_required_limit(koef, koef_factor):
+    """Calculate amount of deep exploration points"""
+    # m = (c * nth_root(a, d)) / n
+    return (10 * nth_root(koef, 0.8)) / koef_factor
+
+def calc_deep_exploration(resource_limit, percentage, koef_factor, max_limit):
+    """Calculate deep expo for resource"""
+    initial_resource_factor = calc_resource_factor(resource_limit, koef_factor)
+    new_resource_factor = initial_resource_factor * (percentage / 100 + 1)
+
+    new_limit = calc_required_limit(new_resource_factor, koef_factor)
+    if new_limit > max_limit:
+        new_limit = max_limit
+    new_resource_factor = calc_resource_factor(new_limit, koef_factor)
+    percentage = 100 / initial_resource_factor * new_resource_factor - 100
+    print("{:5.2f} {:4.2f} {:4.2f} {:4.0f}".format(
+        percentage,
+        initial_resource_factor,
+        new_resource_factor,
+        new_limit - resource_limit
+    ))
+
+if __name__ == "__main__":
+    print("%      old   new deep")
+    print('Noord-Nederland')
+    calc_deep_exploration(379, 0, 0.4, 637)
+    print('Oost-Nederland')
+    calc_deep_exploration(359, 50, 0.4, 637)
+    print('West-Nederland')
+    calc_deep_exploration(372, 20, 0.4, 637)
+    print('Zuid-Nederland')
+    calc_deep_exploration(366, 25, 0.4, 637)
+    print('Amsterdam')
+    calc_deep_exploration(418, 45, 0.4, 637)

+ 2 - 12
productivity/productivity.py

@@ -23,13 +23,11 @@ RESOURCES = None
 with open('resources.json') as file:
     RESOURCES = json.load(file)
 
-
 WP = WorkProduction()
 WP.user_level = 80
 WP.work_exp = 80000 + 200 * 250
 WP.profit_share = 75
 
-
 def calculate_wage(resource_name, factory):
     """Calculate production"""
     if 'fixed_wage' in factory:
@@ -44,7 +42,6 @@ def calculate_wage(resource_name, factory):
     WP.calculate()
     return WP.wage() * PRICE[resource_name]
 
-
 def all_factories():
     """return all factories"""
     factory_dict = {}
@@ -52,7 +49,6 @@ def all_factories():
         factory_dict.update(factories)
     return factory_dict
 
-
 def print_per_resource():
     """Print wages per resource"""
     for resource_name, factories in RESOURCES.items():
@@ -62,7 +58,6 @@ def print_per_resource():
                 int(factory['wage']),
             ))
 
-
 def print_per_level():
     """Print wages per factory level"""
     factory_levels = {}
@@ -76,13 +71,12 @@ def print_per_level():
     for level, resources in factory_levels.items():
         print('{},{},{},{},{}'.format(
             int(level),
-            round(resources['uranium']),
             round(resources['oil']),
-            round(resources['diamond']),
             round(resources['ore']),
+            round(resources['uranium']),
+            round(resources['diamond']),
         ))
 
-
 def print_all():
     """Print wages per resource"""
     factory_dict = all_factories()
@@ -97,7 +91,6 @@ def print_all():
             int(100 / top_wage * factory['wage']),
         ).replace(',', '.'))
 
-
 def print_factory_list():
     """print all factories"""
     for resource_name, factories in RESOURCES.items():
@@ -110,10 +103,8 @@ def print_factory_list():
                 REGIONS[factory['region_id']]['name'],
             ))
 
-
 def main():
     """Main function"""
-
     for resource_name, factories in RESOURCES.items():
         factory = None
         factory_id = None
@@ -136,7 +127,6 @@ def main():
     # print_all()
     # print_factory_list()
 
-
 def print_json(json_text):
     """Print data to console"""
     print(json.dumps(json_text, sort_keys=True, indent=4))