• 用编程解决 公务员考试 中的逻辑推理题



    一、背景

    朋友这几天在准备公务员考试,闲聊之中,给我传来一道题,是一道逻辑推理题,问我答案为何?

    让我这个工作好几年的老油条再做这种题,真的伤脑筋,我说:“干脆我用编程做做看吧”,于是便有了此文……


    二、正文

    这里我用的是javascrpt编程语言

    1、定义变量

    定义小王为 wang;
    定义小张为 zhang;
    定义小李为 li;

    var wang = 0;
    var zhang = 0;
    var li = 0;
    

    2、设定条件

    类型一:

    条件1:如果小王被挑选上,那么小张就会被挑选上
    条件2:只有小李被选上,小王才不会被选上
    条件3:如果小张被选上,那么小李就会被选上

    前三个条件,带有“如果”、“只有”的假设语气,所以逻辑上属于一类,注意需要考虑“如果不”的情况( 用到 ||

    条件1:(wang && zhang) || (!wang)
    条件2:(li && !wang) || (!li)
    条件3:(zhang && li) || (!zhang)

    类型二:

    条件4:小王和小李都会被选上,那是不可能的

    条件4属于确定语气,所以逻辑上属于另一类

    条件4:!(wang && li)

    3、遍历所有情况,筛选符合条件的情况

    遍历用三层for循环,对三个参选人,分别用0表示没被选上,1表示被选上

    for (var wang = 0; wang <= 1; wang++) {
                for (var zhang = 0; zhang <= 1; zhang++) {
                    for (var li = 0; li <= 1; li++) { 
    

    再判断是否同时满足上述n种条件:

      if (condition_1 && condition_2 && condition_3 && condition_4) {
    

    4、输出结果

    运行代码,在浏览器的控制台看到输出结果:

    第一种:小王,小张,小李都没选上
    第二种:小王和小张都没选上,小李选上了
    第三种:小王没选上,小张和小李都选上了

    根据题意,最终只能推选1至2个候选人,所以排除第一种,所以只剩第二种和第三种结果。

    所以结合原题,答案选D


    三、完整代码

    
            var result = [];
    
            for (var wang = 0; wang <= 1; wang++) {
                for (var zhang = 0; zhang <= 1; zhang++) {
                    for (var li = 0; li <= 1; li++) {
    
                        var condition_1 = (wang && zhang) || (!wang);
                        var condition_2 = (li && !wang) || (!li);
                        var condition_3 = (zhang && li) || (!zhang);
                        var condition_4 = !(wang && li);
    
                        if (condition_1 && condition_2 && condition_3 && condition_4) {
                            var re = "wang:" + wang + ",zhang:" + zhang + ",li:" + li;
                            result.push(re);
                        }
    
                    }
                }
            }
    
            console.log(result);
    
    

  • 相关阅读:
    Java后台插件(工具包)
    LINQ系列:Linq to Object联接操作符
    LINQ系列:Linq to Object排序操作符
    LINQ系列:Linq to Object限制操作符
    LINQ系列:Linq to Object投影操作符
    LINQ系列:C#中与LINQ相关特性
    设计模式笔记:简单工厂模式(Simple Factory)
    数据访问模式:数据并发控制(Data Concurrency Control)
    数据访问模式:Identity Map(标识映射)模式
    设计模式笔记:开闭原则(OCP,The Open-Closed Principle)
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/6744194.html
Copyright © 2020-2023  润新知