mirror of
https://github.com/Xevion/fusion-fission-choices.git
synced 2025-12-09 16:07:20 -06:00
initialization
This commit is contained in:
125
config.json
Normal file
125
config.json
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
"elements": {
|
||||||
|
"1": 0,
|
||||||
|
"2": 0,
|
||||||
|
"3": 3,
|
||||||
|
"4": 0,
|
||||||
|
"5": 0,
|
||||||
|
"6": 0,
|
||||||
|
"7": 0,
|
||||||
|
"8": 1,
|
||||||
|
"9": 0,
|
||||||
|
"10": 0,
|
||||||
|
"11": 0,
|
||||||
|
"12": 0,
|
||||||
|
"13": 0,
|
||||||
|
"14": 2,
|
||||||
|
"15": 0,
|
||||||
|
"16": 0,
|
||||||
|
"17": 0,
|
||||||
|
"18": 0,
|
||||||
|
"19": 0,
|
||||||
|
"20": 0,
|
||||||
|
"21": 0,
|
||||||
|
"22": 0,
|
||||||
|
"23": 0,
|
||||||
|
"24": 0,
|
||||||
|
"25": 0,
|
||||||
|
"26": 0,
|
||||||
|
"27": 0,
|
||||||
|
"28": 0,
|
||||||
|
"29": 0,
|
||||||
|
"30": 0,
|
||||||
|
"31": 0,
|
||||||
|
"32": 0,
|
||||||
|
"33": 0,
|
||||||
|
"34": 0,
|
||||||
|
"35": 0,
|
||||||
|
"36": 0,
|
||||||
|
"37": 0,
|
||||||
|
"38": 0,
|
||||||
|
"39": 0,
|
||||||
|
"40": 0,
|
||||||
|
"41": 0,
|
||||||
|
"42": 0,
|
||||||
|
"43": 0,
|
||||||
|
"44": 0,
|
||||||
|
"45": 0,
|
||||||
|
"46": 0,
|
||||||
|
"47": 0,
|
||||||
|
"48": 0,
|
||||||
|
"49": 0,
|
||||||
|
"50": 0,
|
||||||
|
"51": 0,
|
||||||
|
"52": 0,
|
||||||
|
"53": 0,
|
||||||
|
"54": 0,
|
||||||
|
"55": 0,
|
||||||
|
"56": 0,
|
||||||
|
"57": 0,
|
||||||
|
"58": 0,
|
||||||
|
"59": 0,
|
||||||
|
"60": 0,
|
||||||
|
"61": 0,
|
||||||
|
"62": 0,
|
||||||
|
"63": 0,
|
||||||
|
"64": 0,
|
||||||
|
"65": 0,
|
||||||
|
"66": 0,
|
||||||
|
"67": 0,
|
||||||
|
"68": 0,
|
||||||
|
"69": 0,
|
||||||
|
"70": 0,
|
||||||
|
"71": 0,
|
||||||
|
"72": 0,
|
||||||
|
"73": 0,
|
||||||
|
"74": 0,
|
||||||
|
"75": 0,
|
||||||
|
"76": 0,
|
||||||
|
"77": 0,
|
||||||
|
"78": 0,
|
||||||
|
"79": 0,
|
||||||
|
"80": 0,
|
||||||
|
"81": 0,
|
||||||
|
"82": 0,
|
||||||
|
"83": 0,
|
||||||
|
"84": 0,
|
||||||
|
"85": 0,
|
||||||
|
"86": 0,
|
||||||
|
"87": 0,
|
||||||
|
"88": 0,
|
||||||
|
"89": 0,
|
||||||
|
"90": 0,
|
||||||
|
"91": 0,
|
||||||
|
"92": 0,
|
||||||
|
"93": 0,
|
||||||
|
"94": 0,
|
||||||
|
"95": 0,
|
||||||
|
"96": 0,
|
||||||
|
"97": 0,
|
||||||
|
"98": 0,
|
||||||
|
"99": 0,
|
||||||
|
"100": 0,
|
||||||
|
"101": 0,
|
||||||
|
"102": 0,
|
||||||
|
"103": 0,
|
||||||
|
"104": 0,
|
||||||
|
"105": 0,
|
||||||
|
"106": 0,
|
||||||
|
"107": 0,
|
||||||
|
"108": 0,
|
||||||
|
"109": 0,
|
||||||
|
"110": 0,
|
||||||
|
"111": 0,
|
||||||
|
"112": 0,
|
||||||
|
"113": 0,
|
||||||
|
"114": 0,
|
||||||
|
"115": 0,
|
||||||
|
"116": 0,
|
||||||
|
"117": 0,
|
||||||
|
"118": 0
|
||||||
|
},
|
||||||
|
"minimumScore": 1,
|
||||||
|
"reverseSorting": false,
|
||||||
|
"fullPrint" : true
|
||||||
|
}
|
||||||
46
main.py
Normal file
46
main.py
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import os, sys, json, re, mendeleev as mdv
|
||||||
|
|
||||||
|
path = os.path.join(sys.path[0], 'config.json')
|
||||||
|
config = json.load(open(path, 'r'))
|
||||||
|
|
||||||
|
def score(item):
|
||||||
|
return config['elements'][str(item[0])] + config['elements'][str(item[1])], item
|
||||||
|
|
||||||
|
def arrange(item):
|
||||||
|
return (max(item), min(item))
|
||||||
|
|
||||||
|
def formatting(e1, e2):
|
||||||
|
e1, e2 = mdv.element(e1), mdv.element(e2)
|
||||||
|
return '\t[{} {}] + [{} {}]'.format(e1.symbol if not config['fullPrint'] else e1.name,
|
||||||
|
e1.atomic_number,
|
||||||
|
e2.symbol if not config['fullPrint'] else e2.name,
|
||||||
|
e2.atomic_number)
|
||||||
|
|
||||||
|
def getElement(element):
|
||||||
|
if re.match(r'\d+', element):
|
||||||
|
return mdv.element(int(element))
|
||||||
|
elif re.match(r'\w{1,2}', element):
|
||||||
|
try:
|
||||||
|
return mdv.element(element.strip().title())
|
||||||
|
except:
|
||||||
|
raise ValueError('Unknown Element \'{}\''.format(element))
|
||||||
|
else:
|
||||||
|
raise ValueError('Unknown Element Format \'{}\''.format(element))
|
||||||
|
|
||||||
|
def bestSelection(select):
|
||||||
|
select = select.atomic_number
|
||||||
|
posi = [(x, select - x) for x in range(1, select)]
|
||||||
|
posi = list(map(arrange, posi))
|
||||||
|
posi = list(set(posi))
|
||||||
|
posi = list(filter(lambda item : score(item)[0] >= config['minimumScore'], posi))
|
||||||
|
posi.sort(key=lambda item : score(item), reverse=not config['reverseSorting'])
|
||||||
|
|
||||||
|
string1 = '[Best Elements for Element {}, {}]'.format(select, mdv.element(select).name)
|
||||||
|
string2 = '\n'.join([formatting(element1, element2) for element1, element2 in posi])
|
||||||
|
return string1, string2 or '\t{No elements matched the configuration specified}'
|
||||||
|
|
||||||
|
selection = input("Choose elements, delimited by whitespace and/or punctuation...\n")
|
||||||
|
selection = [getElement(e) for e in selection.split()]
|
||||||
|
print('\n\n'.join(
|
||||||
|
sorted(['{}\n{}'.format(*bestSelection(E)) for E in selection], key=lambda string : len(string.split('\n')))
|
||||||
|
))
|
||||||
Reference in New Issue
Block a user