GitHub中Asterank源码python修改成C++(本人python不太会)

GitHub - typpo/asterank: asteroid database, interactive visualizations, and discovery tools

主要目的是在进行多元线性回归的时候将枚举型转换为数值型

python:

#
# The constants used in calculations for the values of asteroids.
## General constants
GENERAL_INDEX = {'cost_to_orbit': 2200,  # $ / kg
}# Keys are asteroid spectra type. Values are maps from a material
# to the percent mass of each material.
SPECTRA_INDEX = {'?': {},'A': {},'B': {'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,'iron': 10,},'C': {# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .2,'iron': .166,'nickel': .014,'cobalt': .002,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'Ch': {# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .2,'iron': .166,'nickel': .014,'cobalt': .002,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'Cg': {# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .2,'iron': .166,'nickel': .014,'cobalt': .002,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'Cgh': {# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .2,'iron': .166,'nickel': .014,'cobalt': .002,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'C type': {# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .2,'iron': .166,'nickel': .014,'cobalt': .002,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'Cb': {   # transition object between C and B# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .1,'iron': .083,'nickel': .007,'cobalt': .001,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'D': {'water': 0.000023,},'E': {},'K': {  # cross between S and C# from Keck report at http://www.kiss.caltech.edu/study/asteroid/asteroid_final_report.pdf'water': .1,'iron': .083,'nickel': .007,'cobalt': .001,# volatiles'hydrogen': 0.235,'nitrogen': 0.001,'ammonia': 0.001,},'L': {'magnesium silicate': 1e-30,'iron silicate': 0,'aluminum': 7},'Ld': {  # copied from S'magnesium silicate': 1e-30,'iron silicate': 0,},'M': {'iron': 88,'nickel': 10,'cobalt': 0.5,},'O': {'nickel-iron': 2.965,'platinum': 1.25,},'P': {  # correspond to CI, CM carbonaceous chondrites'water': 12.5,},'R': {'magnesium silicate': 1e-30,'iron silicate': 0,},'S': {'magnesium silicate': 1e-30,'iron silicate': 0,},# Sa, Sq, Sr, Sk, and Sl all transition objects (assume half/half)'Sa': {'magnesium silicate': 5e-31,'iron silicate': 0,},'Sq': {'magnesium silicate': 1e-30,'iron silicate': 0,},'Sr': {'magnesium silicate': 1e-30,'iron silicate': 0,},'Sk': {'magnesium silicate': 1e-30,'iron silicate': 0,},'Sl': {'magnesium silicate': 1e-30,'iron silicate': 0,},'S(IV)': {'magnesium silicate': 1e-30,'iron silicate': 0,},'Q': {'nickel-iron': 13.315,},'R': {'magnesium silicate': 1e-30,'iron silicate': 0,},'T': {'iron': 6,},'U': {},'V': {'magnesium silicate': 1e-30,'iron silicate': 0,},# TODO use density to decide what kind of X the object is?'X': {  # TODO these vals only apply to M-type within X'iron': 88,'nickel': 10,'cobalt': 0.5,},'Xe': {  # TODO these vals only apply to M-type within X'iron': 88,'nickel': 10,'cobalt': 0.5,},'Xc': {  # TODO these vals only apply to M-type within X'iron': 88,'nickel': 10,'cobalt': 0.5,'platinum': 0.005,},'Xk': {  # TODO these vals only apply to M-type within X'iron': 88,'nickel': 10,'cobalt': 0.5,},'comet': {# no estimates for now, because assumed mass, etc. would be off},
}# Keys are raw materials. Values are maps containing information on
# the value of these materials.
MATERIALS_INDEX = {'water': {'$_per_kg': 0.01},'hydrogen': {'$_per_kg': 3.65808137,},'nitrogen': {'$_per_kg': 0.074094,},'ammonia': {'$_per_kg': 0.01,},'oxygen': {'$_per_kg': 0.21,},'iron': {'$_per_kg': 2e-7,},'nickel': {'$_per_kg': 0.00002,},'nickel-iron': {  # value unclear.  averaged.'$_per_kg': 1.01e-5,},'cobalt': {'$_per_kg': 0.20,},'stainless steel': {'$_per_kg': 0.20},'platinum': {'$_per_kg': 2},'magnesium silicate': {'$_per_kg': 1e-25,},'iron silicate': {'$_per_kg': 0,},'aluminum': {'$_per_kg': 0.05}
}def valuePerKg(type):mat_price_per_kg = 0for mat, pct in SPECTRA_INDEX[type].iteritems():mat_price_per_kg += MATERIALS_INDEX[mat]['$_per_kg'] * pct / 100return mat_price_per_kgdef savedPerKg(type):# This is is a dummy calculation used to compare the cost of mining in space# to the cost of getting the same materials from earth.cto = GENERAL_INDEX['cost_to_orbit']ret = 0for mat,pct in SPECTRA_INDEX[type].iteritems():ret += cto * pct / 100return ret - (cto / 3)  # assume it costs 1/3 as much to mine and get off the asteroiddef profitRatio(baseline_dv, dv):# Baseline profit is 10%, but it changes based on dvreturn baseline_dv / dv

C++代码:

#include <iostream>
#include <string>
//函数Price_p返回元素的单位价格
float Price_p(std::string str){float per_kg=0;if(str=="water")per_kg=0.01;if (str == "hydrogen")per_kg = 3.65808137;if (str == "nitrogen")per_kg = 0.074094;if (str == "ammonia")per_kg = 0.01;if (str == "oxygen")per_kg = 0.21;if (str == "iron")per_kg = 2e-7;if (str == "nickel")per_kg = 0.00002;if (str == "nickel-iron")per_kg = 1.01e-5;if (str == "ncobalt")per_kg = 0.2;if (str == "stainless steel")per_kg = 0.2;if (str == "platinum")per_kg = 2;if (str == "magnesium silicate")per_kg = 1e-25;if (str == "iron silicate")per_kg = 0;if (str == "aluminum")per_kg = 0.05;return per_kg;
}float how_Much(std::string str_00){
if(str_00=="B"){return Price_p("hydrogen")*0.235+Price_p("nitrogen")*0.001+Price_p("ammonia")*0.001+Price_p("iron")*10;}
if (str_00 == "C"){return Price_p("water") * 0.2 + Price_p("iron") * 0.166 + Price_p("nickel") * 0.014 + Price_p("cobalt") * 0.002+Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001+Price_p("ammonia") * 0.001+Price_p("ammonia") *0.001;}
if (str_00== "Ch"){return Price_p("water") * 0.2 + Price_p("iron") * 0.166 + Price_p("nickel") * 0.014 + Price_p("cobalt") * 0.002+Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001+Price_p("ammonia") * 0.001;}
if (str_00== "Cg"){return Price_p("water") * 0.2 + Price_p("iron") * 0.166 + Price_p("nickel") * 0.014 + Price_p("cobalt") * 0.002+Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001+Price_p("ammonia") * 0.001;}
if (str_00== "Cgh"){return Price_p("water") * 0.2 + Price_p("iron") * 0.166 + Price_p("nickel") * 0.014 + Price_p("cobalt") * 0.002+Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001+Price_p("ammonia") * 0.001;}
if (str_00== "C type"){return Price_p("water") * 0.2 + Price_p("iron") * 0.166 + Price_p("nickel") * 0.014 + Price_p("cobalt") * 0.002+Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001+Price_p("ammonia") * 0.001;}
if (str_00 == "Cb"){return Price_p("water") * 0.1 + Price_p("iron") * 0.083 + Price_p("nickel") * 0.007 +Price_p("cobalt") * 0.001 + Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001 + Price_p("ammonia") * 0.001;
}
if (str_00 == "D"){return Price_p("water") * 0.000023 ;}if (str_00 == "E"){
return 0;}if (str_00 == "K"){return Price_p("water") * 0.1 + Price_p("iron") * 0.083 + Price_p("nickel") * 0.007 +Price_p("cobalt") * 0.001 + Price_p("hydrogen") * 0.235+ Price_p("nitrogen") * 0.001 + Price_p("ammonia") * 0.001;
}
if (str_00 == "L"){return Price_p("magnesium silicate") * 1e-30 + Price_p("iron silicate") * 0 + Price_p("aluminum") * 7 ;
}
if (str_00 == "Ld"){return Price_p("magnesium silicate") * 1e-30 + Price_p("iron silicate") * 0 ;
}
if (str_00 == "M"){return Price_p("iron") * 88 + Price_p("nickel") * 10 + Price_p("cobalt") * 0.5;
}
if (str_00 == "O"){return Price_p("nickel-iron") * 2.965 + Price_p("platinum") * 1.25;
}
if (str_00 == "P"){return Price_p("water") * 12.5;
}
if (str_00 == "R"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "S"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "Sa"){return Price_p("magnesium silicate") * 5e-31+Price_p("iron silicate") * 0;
}if (str_00 == "Sq"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "Sr"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "Sk"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "Sl"){
return Price_p("magnesium silicate") * 1e-30 + Price_p("iron silicate") * 0;
}
if (str_00 == "S(IV)"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "Q"){return Price_p("nickel-iron") * 13.315;
}
if (str_00 == "R"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "T"){return Price_p("iron") * 6;
}
if (str_00 == "U"){return 0;
}
if (str_00 == "V"){return Price_p("magnesium silicate") * 1e-30+Price_p("iron silicate") * 0;
}
if (str_00 == "X"){return Price_p("iron") * 88+Price_p("nickel") * 10+Price_p("cobalt") * 0.5;
}
if (str_00 == "Xe"){return Price_p("iron") * 88+Price_p("nickel") * 10+Price_p("cobalt") * 0.5;
}
if (str_00 == "Xc"){return Price_p("iron") * 88+Price_p("nickel") * 10+Price_p("cobalt") * 0.5+Price_p("platinum") * 0.005;
}
if (str_00 == "Xk"){return Price_p("iron") * 88+Price_p("nickel") * 10+Price_p("cobalt") * 0.5;
}return 0;
}int main() {std::string str_00="C";while(str_00!="00") {std::cin>>str_00;std::cout<<"The price of Type "+str_00+"is:"<<how_Much(str_00);}return 0;
}

运行结果:

相当于每千克Q类型的小行星值多少美元 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习torchmd分子动力学模拟

TorchMD打算提供一种简单易用的API&#xff0c;用于使用PyTorch进行分子动力学。这使研究人员能够更快地进行力场开发研究&#xff0c;并以PyTorch的简单性和强大性将神经网络潜力无缝集成到动力学中。 TorchMD使用与经典MD代码&#xff08;如ACEMD&#xff09;一致的化学单位&…

引入OSS

前置条件 AccessKey 引入依赖 都是官网上的&#xff1a;https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c4g.11186623.0.i16 <!--若是创建项目的时候这个依赖勾选了就不用了--><!--不加启动会报错No active profile set, falling back…

JavaScript之数据类型(2)——复杂类型(object)

object的介绍&#xff1a; 我对于object的理解是和C/C中的结构体一样&#xff0c;是一个自定义的数据类型&#xff0c;我们可以通过多个简单的数据类型来定义一个便于我们使用的新的数据类型。 在网上某佬对于其解释如下&#xff1a; Object类型&#xff0c;我们也称为一个对象…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中&#xff0c;通过命令行的方式&#xff0c;快速、方便安装适用于Linux的Windows子系统&#xff08;Windows Subsystem for Linux&#xff0c;WSL&#xff09;的方法。 WSL是由微软开发的一项功能&#xff0c;允许在Windows操作系统上运行Linux发行版系统…

【Linux的文件篇章 - 磁盘文件】

Linux学习笔记---012 Linux之进程程序替换理解1、磁盘文件1.1、文件如何存取的问题1.2、了解磁盘的存储结构1.3、如何找到指定位置的扇区&#xff1f;1.4、对磁盘的存储进行逻辑抽象(了解OS对磁盘这样的硬件设备的抽象与管理) 2、磁盘级文件系统2.1、Linux文件系统特定2.2、文件…

Ansible--Templates 模块 Tags模块 Roles模块

一 Templates 模块 ①Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件&#xff0c;可看作一个编译过的模 板文件&#xff0c;用来产生目标文本&#xff0c;传递Python的变量给模板去替换模板中的标记。 ②在配置文件中&#xff0c;会有一些数据&#xff08;如…

Java毕设之基于SpringBoot的在线拍卖系统

运行环境 开发语言:java 框架:springboot&#xff0c;vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7&#xff0c;8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细设计 管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码、角色等信…

UE4_Water插件_Buoyancy组件使用

water插件提供了一个浮力Actor蓝图类。 需要注意的几个问题&#xff1a; 1、StaticMesh需要替换根组件。 2、需要模拟物理设置质量。 3、需要添加浮力组件&#xff0c;设置浮力点&#xff0c;应用水中牵引力。 4、最重要的是需要激活——自动启用。 5、调水波长的地方 双击图片…

FreeRTOS学习 -- 任务相关API函数

一、任务创建和删除API函数 FreeRTOS 最基本的功能就是任务管理&#xff0c;而任务管理最基本的操作就是创建和删除任务。 FreeRTOS的任务创建和删除API函数如下&#xff1a; 1、函数 xTaskCreate() 此函数用来创建一个任务&#xff0c;任务需要 RAM 来保存于任务有关的状…

前端js面试题--从字符串中删除删除注释代码

问题&#xff1a;从字符串中删除删除注释代码 描述&#xff1a; solution(weex,rex # and react\nflutter\nnative ssss !hybrid app, [#, !]) 写一个solution函数清除后面参数数组里面的字符串 打印效果 代码1 思路&#xff1a; 将字符全凡是有去掉标志符号的全部添加\n…

Java_File

介绍&#xff1a; File对象表示路径&#xff0c;可以是文件&#xff0c;也可以是文件夹。这个路径可以是存在的&#xff0c;也可以是不存在的&#xff0c;带盘符的路径是绝对路径&#xff0c;不带盘符的路径是相对路径&#xff0c;相对路径默认到当前项目下去找 构造方法&…

基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的校园短期闲置资源置换平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过…

燃气电力瓶装气行业入户安检小程序开发

我们开发的小区业主入户安检小程序&#xff0c;旨在满足燃气、电力以及其他需要入户安检的行业需求。该程序支持自定义安检项目&#xff0c;实现线下实地安检与线上数据保存的完美结合。在安检过程中&#xff0c;我们可以拍照或录像&#xff0c;以确保安检的透明性和可追溯性&a…

渲染管线中光照的计算

文章目录 渲染管线中光照的计算前言法向量朗伯余弦定律漫反射环境光照镜面光照菲涅尔效应 表面粗糙度光照模型平行光源点光源衰减 聚光灯 渲染管线中光照的计算 前言 首先我们来看一下同一个模型在有光与无光下的区别&#xff1a; 无光&#xff1a; 有光 很明显的感知就是…

加速科技突破2.7G高速数据接口测试技术

随着显示面板分辨率的不断提升&#xff0c;显示驱动芯片&#xff08;DDIC&#xff09;的数据接口传输速率越来越高&#xff0c;MIPI、LVDS/mLVDS、HDMI等高速数据接口在DDIC上广泛应用。为满足高速数据接口的ATE测试需求&#xff0c;作为国内少数拥有完全自研的LCD Driver测试解…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

vue 代码样式问题

部分电脑存在样式错乱问题&#xff0c;部分电脑样式正常。最后发现是样式写在 el-col 里面导致的。 注意&#xff1a;写样式不要放在 el-row 或者 el-row &#xff0c;导致部分电脑会出现莫名其妙的样式问题 <el-row class"detail"><el-col class"it…

OSPF NSSA区域

原理概述 OSPF 协议定义了 Stub 区域和 Totally Stub 区域这两种特殊的非骨干区域&#xff0c;为的是精简 LSDB 中 LSA 的数量&#xff0c;同时也精简路由表中的路由条目数量&#xff0c;实现优化设备和网络性能的目的。根据定义&#xff0c; Stub 区域或 Totally Stub 区域中是…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 redis在windows环境下安装&#xff1a;Window下Redis的安装和部署详细图文教程&#xff08;Redis的安装和可视化工具的使用&#xff09;_redis安装-CSDN博客 2…

PHP+MySQL组合开发 自定义商城系统源码 带完整的安装代码包以及安装部署教程

随着电子商务的蓬勃发展&#xff0c;越来越多的企业和个人希望拥有自己的在线商城系统。小编给大家分享一款基于PHP和MySQL技术栈&#xff0c;开发的一套自定义商城系统源码。该系统旨在帮助用户快速搭建稳定、高效的电子商务平台&#xff0c;并提供灵活的自定义功能&#xff0…