Eilxir解决哲学家就餐问题

require Tuple
require List 
defmodule Rand do
  def rand do
    elem Time.utc_now().microsecond,0
  end
end
defmodule Example do
  def special(t, s) do
    if s == 5 do
      -1
    else
      if elem(t, s) && elem(t, rem(s+1, 5)) do
        s
      else 
        special(t, s+1)
      end
    end
  end
  def judge(t) do
    special(t, 0)
  end

  def run(flag, caller, name) do
    if flag == false do # flag = false is thinking
      send caller, {:want_eat, self()}
      [eat, index] = receive do
        {:yes, index2} -> [true, index2]
        {:no,} -> [false, -1]    
      end
      if eat do
        IO.puts "PhD#{name} will eat"
        send caller, {:want_think, index, self()}
        run true, caller, name
      else
        IO.puts "PhD#{name} won't eat"
        run false, caller, name
      end
    else #finish eating
      IO.puts "PhD#{name} will think"
      run false, caller, name
    end
  end

  def listen(t, pos) do
    if pos > 0 do
      s = judge(t)
      [k, index, p] = receive do
        {:want_eat, pid} ->
          if s > -1 do
            [put_elem(put_elem(t, s, !elem(t, s)), rem(s+1, 5), !elem(t, rem(s+1, 5))), s, pid]
          else
            [t, -1, pid]
          end
        {:want_think, x, pid} ->
          [put_elem(put_elem(t, x, !elem(t, x)), rem(x+1, 5), !elem(t, rem(x+1, 5))), -2, pid]
      end
      if index >= 0 do
        send p, {:yes, index}
      else
        if index >= -1 do
          send p, {:no}
        end
      end

      listen(k, pos-1)
    end
  end
end
defmodule Creat do
  def creat(x, caller) do
    if x > 0 do
      spawn Example, :run, [false, caller, x]
      creat(x-1, caller) 
    end
  end
end
pid = spawn Example, :listen, [Tuple.duplicate(true, 5), 100]
Creat.creat(5, pid)
IO.puts ""


最近两天在看Eilxir,就用它写了一下哲学家就餐问题,运行结果不稳定,尚需要研究

PhD5 will eat
PhD4 will eat
PhD3 won't eat
PhD2 won't eat
PhD1 won't eat
PhD5 will think
PhD4 will think
PhD2 will eat
PhD3 will eat
PhD1 won't eat
PhD3 will think
PhD5 won't eat
PhD2 will think
PhD4 won't eat
PhD1 will eat
PhD5 won't eat
PhD3 will eat
PhD2 won't eat
PhD1 will think
PhD4 won't eat
PhD5 will eat



内容概要:本文详细分析了全球及中国财富管理市场的发展现状与未来趋势。全球财富管理市场起源于欧洲、发展于美国,美国财富管理市场经过百年发展,形成了以商业银行、综合财富管理平台和投资服务平台为代表的三类财富管理体系。中国财富管理市场正处于快速发展期,居民财富快速增长并向金融资产倾斜,资管新规引导市场健康发展。文中还探讨了中国财富管理市场的竞争格局,包括私人银行、银行理财、公募基金、券商资管、信托、第三方财富管理机构和互联网财富管理平台的发展情况。此外,公募基金投顾试点成为财富管理市场转型的重要探索,买方投顾模式逐步取代卖方投顾模式,AI赋能投顾业务,为行业发展带来新机遇。 适合人群:对财富管理行业感兴趣的投资者、金融从业者及研究机构。 使用场景及目标:①了解全球及中国财富管理市场的发展历程与现状;②掌握中国财富管理市场竞争格局及各机构的发展特点;③探索公募基金投顾试点对财富管理市场的转型意义及AI赋能投顾业务的应用前景。 阅读建议:本文内容详实,涵盖了财富管理市场的多个方面,建议读者重点关注中国财富管理市场的现状与发展趋势,特别是私人银行、银行理财、公募基金、券商资管等机构的具体发展情况,以及公募基金投顾试点和AI赋能投顾业务的创新模式。
6.0版更新说明: 1.根据2024年鉴整理,数据更新至2023年 2.新增指标,当前214个指标 5.0版更新说明: 数据更新至2022年 4.2版更新说明: 1.更新2021年部分指标数据 4.0版更新说明: 1.数据更新至2021年 2.调整部分旧指标 3.新增指标,当前190个指标 3.0版更新说明: 1.数据更新至2020年 2.调整部分指标,当前174个指标 2.4版更新说明: 1.更新部分缺失值 2.将数据转为平衡面板 3.填补升级。内含原始版本、线性插值、ARIMA填补三个版本数据 一、数据介绍 数据名称:中国城市数据库 数据来源:中国城市统计年鉴1991-2024年、地方统计局 数据年份:1990-2023年 数据范围:300个地级市(包括直辖市) 样本数量:平衡面板10200条(300*34=10200) 更新时间:2025年2月,当前最新6.0版 二、整理方法 第一,识别年鉴。利用NLP算法识别《中国城市统计年鉴》,并转为面板数据 第二,完善数据。对比主流数据库、地方统计局,进一步完善城市数据 第三,统一地区。匹配民政部编码,统一使用2019年编码和地区名称 第四,统一单位。对不同单位的情况,进行单位换算 第五,人工验证。得到所有指标的面板数据,并人工抽样验证 第六,平衡面板。将非平衡面板转为平衡面板数据 第七,线性插值。利用线性趋势对中间缺失进行填充,得到线性插值版 第八,ARIMA填补。利用时间趋势,对剩余缺失进行预测,得到ARIMA填补版 最终,保留原始版本、线性插值版、ARIMA填补版
内容概要:本文详细介绍了如何在HarmonyOS开发中使用Tabs组件构建底部页签。首先,文章强调了底部页签在提升用户体验和操作便捷性方面的重要性,随后介绍了Tabs组件的基本结构,包括TabBar和TabContent。接着,文章逐步引导读者搭建开发环境,包括安装DevEco Studio和配置项目。在此基础上,文章展示了Tabs组件的基础用法,如简单示例和组件结构解析。接下来,文章深入探讨了属性设置,如导航位置、滑动功能、动画时长等,以实现个性化定制。此外,文章还介绍了高级技巧,如滚动导航栏和自定义导航栏的实现方法。最后,通过一个电商应用的实际案例,展示了如何在实际项目中应用Tabs组件,以及开发过程中需要注意的事项和常见问题解决方法。 适合人群:具有一定HarmonyOS开发基础的研发人员,尤其是希望提升用户交互体验的应用开发者。 使用场景及目标:①了解如何使用Tabs组件构建美观且实用的底部页签;②掌握底部页签的属性设置和高级技巧,如滚动导航栏和自定义导航栏;③解决开发过程中遇到的兼容性、布局适配和内存优化等问题。 其他说明:本文不仅提供了详细的代码示例和技术指导,还鼓励读者在实际项目中应用所学知识,不断探索HarmonyOS开发的更多可能性。通过学习本文,开发者可以更好地理解HarmonyOS开发的特点和优势,为用户打造更加出色的交互体验。
内容概要:本文深入介绍了鸿蒙HarmonyOS Navigation子页面的开发,涵盖其基本概念、构成元素、开发步骤及应用场景。首先,文章阐述了Navigation组件在HarmonyOS应用中的重要性,它作为路由容器组件,支持多种显示模式(如自适应、单页面和分栏模式),以适应不同设备和用户需求。其次,详细解释了NavDestination(子页面的核心载体)和NavPathStack(掌控子页面路由的关键)的作用及其工作原理。接着,介绍了开发前的准备、项目结构规划、路由信息配置、子页面代码编写等具体开发步骤。此外,文章还探讨了页面跳转、参数传递、返回值处理及路由拦截等高级功能,并通过实际案例(如华为应用市场)展示了其应用效果。最后,总结了常见问题及其解决方法,并展望了Navigation子页面在未来应用场景中的潜力。 适合人群:具备一定编程基础,尤其是对HarmonyOS应用开发感兴趣的开发者,特别是有一定经验的工作1-3年研发人员。 使用场景及目标:①帮助开发者理解如何使用Navigation组件构建高效、便捷且用户体验良好的应用导航系统;②指导开发者掌握页面跳转、参数传递、路由拦截等核心技术,以实现复杂业务逻辑;③通过实际案例分析,为开发者提供应用开发的实战经验。 阅读建议:本文不仅提供了详细的代码示例和技术讲解,还强调了实际开发中的注意事项和常见问题解决方案,因此在学习过程中,建议结合实际项目进行实践,同时关注官方文档和社区资源,以加深理解和提高开发技能。
内容概要:《绿色转型美丽乡村——汾渭平原地区低碳乡村案例集》由西安空气侠环保科技有限公司编写,北京市企业家环保基金会支持,聚焦汾渭平原地区乡村低碳发展的典型实践。报告梳理了国内外相关理论研究及政策背景,展示了中央与地方在低碳乡村发展方面的政策措施。通过五个典型案例,包括芮城县庄上村的“光储直柔”模式、铜川耀州区克坊村的“光伏+普惠金融”、浮山县臣南河村的循环经济模式、澄城县权家河村的“风光储一体化”以及麟游县紫石崖村的“光伏+生态养殖”,详细分析了这些案例的技术路线、项目成效、主要政策、典型经验和存在问题。报告总结了清洁能源在乡村低碳发展中的核心地位,强调了因地制宜发展策略的关键作用,并指出了多重效益综合追求的重要性。 适合人群:从事环保、农业、能源领域研究的专业人士,以及关注乡村低碳发展和可持续发展的政策制定者和社会学者。 使用场景及目标:①为全国其他地区开展乡村能源转型实践提供有益的借鉴;②助力推动我国乡村低碳发展,为实现碳达峰、碳中和目标贡献积极力量;③为政策制定者提供决策参考,促进乡村绿色转型和乡村振兴战略的实施。 其他说明:报告由多家单位参编,感谢北京市企业家环保基金会提供资金支持。文中内容及意见仅代表作者的个人观点,与北京市企业家环保基金会的立场或政策无关。报告期望为全国其他地区开展乡村能源转型实践提供有益的借鉴,助力推动我国乡村低碳发展。
内容概要:本文深入探讨了中国品牌自2020/21年以来在全球市场的发展状况,基于Totem Media发布的2025年中国品牌走向全球报告。报告指出,中国品牌在全球社交渠道、电商平台和官方网站的流量、关注者数量和互动方面取得了显著增长。2024年以来,中国品牌在市场准入、社交媒体内容质量及DTC网站功能等方面有所提升。报告还列举了多个领域的“潜在冠军”,如安克、Ecoflow、大疆等。文中分析了不同地区(如北美、欧洲、中东、非洲等)对中国品牌的接受度及其面临的挑战,强调了本地化、品牌塑造和数字化营销的重要性。此外,报告提出了中国品牌在全球市场取得成功的关键策略,包括应用数字化、本地化、倾听客户、构建有针对性的优势和合作。 适合人群:对中国品牌国际化感兴趣的商业人士、市场营销专家、品牌管理者及研究人员。 使用场景及目标:①帮助品牌管理者制定全球化战略;②为市场营销专家提供数据支持和趋势分析;③为研究机构提供有关中国品牌国际化的参考依据。 其他说明:报告强调了中国品牌在不同地区和行业的表现,提供了详细的排名和数据分析,有助于理解中国品牌在全球市场的地位和发展路径。同时,报告还指出了中国品牌在全球市场面临的挑战,如地缘政治因素、市场竞争和品牌认知度等,并给出了应对策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值