首页 / 公式巧算的解题演示方法、装置、电子设备及存储介质

公式巧算的解题演示方法、装置、电子设备及存储介质实质审查 发明

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及一种公式巧算的解题演示方法、装置、电子设备及存储介质。

相关背景技术

[0002] 数学脱式巧算是一种数学快速计算技巧,通过在脱式计算中利用数学运算规律和数字规律来使脱式计算更加简便、计算步骤更少,可以有效地提高计算速度。
[0003] 现有的巧算讲解方案中,较通用的做法是先识别出公式属于哪种巧算题型,然后针对具体的巧算题型利用规则获取题目特征,并生成讲解步骤。这种处理方式使得讲解过程中仅能使用一次巧算,存在公式计算准确性差的问题。

具体实施方式

[0033] 下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0034] 应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
[0035] 本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0036] 需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0037] 本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
[0038] 以下参照附图描述本公开提供的公式巧算的解题演示方法、装置、电子设备及存储介质。
[0039] 脱式计算是一个数学学科术语,即递等式计算,把计算过程完整写出来的运算,也就是脱离竖式的计算。脱式计算时要先算乘、除法,后算加、减法。在只含有同级运算的算式中,要按从左往右的顺序依次计算。遇到括号时,首先计算括号内部的内容。
[0040] 脱式巧算是一种数学快速计算技巧,通过在脱式计算中利用数学运算规律和数字规律来使脱式计算更加简便,计算步骤更少,可以有效地提高计算速度。目前市面上一些教育app和教学机器人部分支持了小学脱式的巧算讲解,较为通用的做法是首先识别出脱式计算属于哪种巧算题型,然后针对具体的巧算题型,利用规则从公式中获取与匹配的巧算题型对应的题目特征,并进行运算生成讲解步骤。这种处理方式存在两个问题,一是覆盖的巧算题型较少,只支持简单的巧算,如加减结合律、乘法分配律等;二是解法较生硬,不能以最优的方式去讲题,且一次讲解过程只能使用一种巧算方法,不能覆盖公式中涉及的全部巧算,存在公式计算准确性差的问题。
[0041] 针对上述问题,本公开提供了一种公式巧算的解题演示方法,通过在运算过程中,针对当前运算步骤对应的当前公式先进行是否满足预设巧算类型的判断,能够识别出公式中的所有巧算,使得讲解过程能够覆盖运算中涉及的全部巧算,支持同一道题内使用多次巧算进行讲解,有利于提高公式计算的准确性。本公开的方案实现了丰富的巧算讲解题型,可进行巧算讲解优先级的判定,为每种巧算讲解类型选择讲解优先级最高的解题方式进行计算,且可与一般脱式计算巧妙结合,使脱式讲解更灵活、更准确。
[0042] 图1示出了根据本公开一示例性实施例的公式巧算的解题演示方法的流程图,该方法可以由公式巧算的解题演示装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中,所述电子设备包括手机、电脑、平板电脑、服务器等设备。
[0043] 如图1所示,该公式巧算的解题演示方法可以包括以下步骤:
[0044] 步骤101,获取待演示的计算公式。
[0045] 其中,计算公式可以由数字、运算符号、括号等要素组成。例如,计算公式可以为“0.8×3.74+6.26×0.8”、“0.8×3.74+6.26×(1‑20%)”,等等。
[0046] 本公开实施例中,在获取待演示的计算公式时,可以通过不同的方式进行获取。
[0047] 示例性地,在学生通过电子设备中安装的相关产品(如APP)学习产品中提供的数学计算题目的场景中,可以将学生当前选择的公式作为待演示的计算公式。
[0048] 示例性地,用户可以将需要演示的公式通过手动输入的方式输入至电子设备中安装的相关产品,从而相关产品可以将接收的用户输入的公式作为待演示的计算公式。
[0049] 示例性地,可以获取拍摄的待演示题目的图像,接着可以利用图像识别、文本识别等技术,从图像中识别出公式,得到待演示的计算公式。
[0050] 步骤102,在对所述计算公式进行逐步运算时,判断当前运算步骤对应的当前公式是否满足预设巧算类型。
[0051] 其中,预设巧算类型可以根据实际需求进行设置,例如,预设巧算类型可以包括但不限于交换律、结合律、分配律、提取公因数、等差数列、分数裂差裂和、位值原理、金字塔数等。
[0052] 本公开实施例中,对于获取的待演示的计算公式,可以在进行每步骤的运算时,先判断当前运算步骤对应的当前公式是否满足预设巧算类型,即当前公式是否能够利用巧算进行运算,若满足,则执行步骤103,若不满足,则基于常规的运算规则对当前公式进行运算。
[0053] 能够理解的是,当前运算步骤对应的当前公式可以根据上一步骤的运算结果确定,在上一步运算结束后,基于上一步运算的计算结果,可以确定当前运算步骤对应的当前公式。
[0054] 作为一种可能的实现方式,在获取当前公式时,可以采用公式重置法确定当前步骤对应的当前公式,即在每一步的计算后,用计算后的公式项重置公式信息,重置后的公式即为当前最新的计算公式,即当前公式。从而,本公开实施例中,在对待演示的计算公式进行第一步运算时,该原始的计算公式即为当前公式,之后,在进行后续各步骤的运算时,可以基于上一公式的计算结果生成当前公式。
[0055] 举例而言,假设计算公式为“0.8×3.74+6.26×(1‑20%)”,则在进行第一步运算时,当前公式即为“0.8×3.74+6.26×(1‑20%)”,第一步运算首先计算括号内的“1‑20%”,计算结果为“80%”。根据该计算公式的数字类型的统计信息可知,括号外的其他数字均为小数,为便于计算,可以对该计算结果进行数字类型转换,将“80%”转换为“0.8”,从而利用转换后的计算结果重置公式信息,得到新的公式“0.8×3.74+6.26×0.8”,对于第二步运算而言,该新公式即为对应的当前公式。能够理解的是,为了便于学生理解数字类型转换的过程,可以将数字类型的转换也记录在相应的讲解步骤中。
[0056] 作为一种可能的实现方式,在获取当前公式时,可以通过原始公式标记的方式标记原始公式中已参与运算的数字及运算符号,在每一步计算后将已经计算完毕不会再出现的项的相应位置进行已计算标记,在每一步生成步骤时,通过查询每一项的已计算标记就可以知道当前公式的每一个位置是否已经进行了计算,根据未参与运算的数字及运算符号,结合最近一次运算的运算结果,生成当前运算步骤对应的当前公式。从而,本公开实施例中,可以根据计算公式中每个符号的位置信息,生成与计算公式等长的已计算标记序列,其中,所述的符号包括计算公式中的数字、运算符号、括号、%等。已计算标记序列用于记录所述每个符号的计算状态,计算状态包括已计算和未计算两种。能够理解的是,在第一步运算完成前,已计算标记序列中的各个符号对应的计算状态均为未计算。
[0057] 作为一种示例,对于已计算标记序列中各符号的计算状态的标记,可以采用不同的方式进行标记。例如,可以利用“1”表示已计算,利用“0”表示未计算,对于已计算标记序列中的各符号,各符号的初始计算状态均为未计算,在各符号上标记“0”,随着运算的进行,若某个符号已参与运算,则将该符号的计算状态标记由“0”更新为“1”,表示该符号已计算过。又例如,可以仅对已计算标记序列中已参与运算的符号进行标记,对未参与运算的符号不标记,从而通过查询已计算标记序列中未标记的符号,生成当前公式。
[0058] 进一步地,在使用已计算标记序列来记录计算公式中已参与运算的符号时,在对当前公式进行计算完成后,还可以根据当前公式中参与本次运算的符号(为便于描述,称为目标符号)对应的位置信息以及运算结果,对已计算标识序列中相应位置的符号及符号的计算状态进行更新。
[0059] 能够理解的是,在对已计算标识序列中相应位置符号的计算状态进行更新时,由于本次参与计算的算式会产生一个计算结果,该计算结果需要参与后续的计算过程,因此需要在已计算标识序列中为该计算结果提供一个存储位置,并对该计算结果添加未计算的标识。
[0060] 作为一种示例,可以将参与本次运算的目标符号对应的位置信息中最小的一个位置作为存储本次计算结果的位置,将已计算标识序列中该位置对应的符号更新为本次计算的计算结果,并保持该位置对应的计算状态为未计算。例如,参与本次运算的目标符号对应的位置信息为6~10位,则可以将第6位对应的符号更新为本次计算的计算结果,并标记为未计算。
[0061] 举例而言,假设待演示的脱式计算公式为“0.8×3.74+6.26×(1‑20%)”,图2示出了本公开一示例性实施例中已计算标识序列的更新过程示意图一。图2中的每一组表格中,第一行表示各符号的计算状态标识,第二行表示对应公式中的各符号,其中,第一行中的“0”表示对应符号未计算,“1”表示对应符号已计算过,第二行中的一列表示一位,例如,“3.74”对应的位置信息为3,“6.26”对应的位置信息为5,“20%”对应的位置信息为10。图2中的(a)图为基于原始的计算公式生成的初始的已计算标识序列,可以看出,各符号对应的计算状态均为未计算。基于该公式的公式特征和数字特征可以确定,计算公式不满足预设巧算类型,因此在进行第一步运算时,按照一般四则混合运算规则进行计算,先计算括号中的子公式“(1‑20%)”,在计算之前,可以先将20%转换为0.2,以保持和其他符号的数字类型一致。参与本次运算的目标符号“(1‑20%)”对应的位置信息为7~11,本次的计算结果为0.8,在本次运算结束之后,更新已计算标识序列,将参与本次运算的目标符号对应的位置信息(即7~11位)中最小的一个位置(即第7位)作为存储本次计算结果的位置,将第7位对应的符号更新为本次运算的计算结果,即由“(”更新为“0.8”,并保持第7位对应的计算状态标识不变,仍为“0”,以使该位置对应的符号“0.8”继续参与下一步运算,将第8~11位的符号对应的计算状态标识由“0”更新为1,得到如图2中的(b)图所示的已计算标识序列。根据图2中的(b)图所示的已计算标识序列中未参与计算的符号,可以生成第二步运算对应的当前公式为“0.8×3.74+6.26×0.8”。
[0062] 作为一种示例,可以将参与本次运算的目标符号对应的位置信息中最小的一个位置作为存储本次计算结果的位置,将其他位置及对应的符号从已计算标识序列中删除,并将本次运算的计算结果作为该最小位置的符号,也就是说,已计算标识序列中仅记录未参与运算的符号。例如,参与本次运算的目标符号对应的位置信息为6~10位,则可以将第6位对应的符号更新为本次计算的计算结果,并标记为未计算,将第7~10位对应的符号及计算状态标识删除。
[0063] 举例而言,假设待演示的计算公式为“0.8×3.74+6.26×(1‑20%)”,图3示出了本公开一示例性实施例中已计算标识序列的更新过程示意图二。图3中的每一组表格中,第一行表示各符号的计算状态标识,第二行表示对应公式中的各符号,其中,第一行中的“0”表示对应符号未计算,“1”表示对应符号已计算过,第二行中的一列表示一位,例如,“3.74”对应的位置信息为3,“6.26”对应的位置信息为5,“20%”对应的位置信息为10。图3中的(a)图为基于原始的脱式计算公式生成的初始的已计算标识序列,可以看出,各符号对应的计算状态均为未计算。基于该公式的公式特征和数字特征可以确定,计算公式不满足预设巧算类型,因此在进行第一步运算时,按照一般四则混合运算规则进行计算,先计算括号中的子公式“(1‑20%)”,在计算之前,可以先将20%转换为0.2,以保持和其他符号的数字类型一致。参与本次运算的目标符号“(1‑20%)”对应的位置信息为7~11,本次的计算结果为0.8,在本次运算结束之后,更新已计算标识序列,将参与本次运算的目标符号对应的位置信息(即7~11位)中最小的一个位置(即第7位)作为存储本次计算结果的位置,将第7位对应的符号更新为本次运算的计算结果,即由“(”更新为“0.8”,并保持第7位对应的计算状态标识不变,仍为“0”,以使该位置对应的符号“0.8”继续参与下一步运算,将第8~11位的符号及对应的计算状态标识从已计算标识序列中删除,得到如图3中的(b)图所示的已计算标识序列。对比图3中的(a)图和(b)图可知,已计算标识序列中仅记录需要参与后续运算的符号,基于此,也可以在已计算标识序列中仅记录需要参与后续运算的符号,而省略各符号对应的计算状态标识。根据图3中的(b)图所示的已计算标识序列中未参与计算的符号,可以生成第二步运算对应的当前公式为“0.8×3.74+6.26×0.8”。
[0064] 在本公开实施例中,通过公式重置法生成当前公式,或者,通过查询已计算标记序列中未计算的符号来生成当前公式,使得各运算步骤之间能够无缝衔接。
[0065] 接着,对于确定的当前步骤对应的当前公式,在进行运算前,可以先根据当前公式对应的公式特征、数字特征等,判断当前步骤是否满足预设巧算类型,对于满足预设巧算类型的当前公式,则对其进行巧算。例如,假设当前公式为“0.8×3.74+6.26×0.8”,则可以确定该公式满足预设巧算类型中的乘法分配律。
[0066] 在本公开的一种可选实施方式中,在对待演示的计算公式进行逐步运算之前,可以先对待演示的计算公式进行解析,在解析之后进行公式的结构重建及信息获取,将待演示的计算公式转化为程序的内部表示形式,以便于程序理解及获取相关的公式信息,其中,此部分获取的公式信息主要包括计算公式的运算符号及其相关位置信息、括号及其相关位置信息、数字类型及数字特征,公式特征等。其中,运算符号如“+”、“‑”、“×”、“÷”;数字类型如整数、小数、分数、百分数;数字特征可以包括但不限于数字是几位数、和谁能够凑整;公式特征可以是但不限于是连加、连乘、混合运算、有无括号、是否含有多种类型的数字。获取的公式信息可以用于运算过程中判断公式是否符合预设巧算类型,以及用于选择合适的运算方式。
[0067] 通常,巧算是针对脱式计算公式进行巧算,因此,在本公开的一种可选实施方式中,在获取了待演示的计算公式之后,可以先根据该公式的公式特征、数字特征、包含的运算符号等信息,判断该计算公式是否为脱式计算公式,如果是,才在逐步运算过程中判断当前步骤对应的当前公式是否满足预设巧算类型,若计算公式不是脱式计算公式,则不进行巧算类型的匹配。
[0068] 步骤103,在所述当前公式满足所述预设巧算类型的情况下,确定与所述当前公式满足的目标巧算类型对应的目标求解方式。
[0069] 本公开实施例中,对于当前运算步骤对应的当前公式,如果该当前公式满足预设巧算类型,则可以基于该当前公式所满足的目标巧算类型,进一步确定与目标巧算类型对应的目标求解方式。
[0070] 能够理解的是,满足同一巧算类型的求解方式可能有一个或多个,当与目标巧算类型对应的求解方式仅有一个时,则可以将该求解方式确定为目标求解方式;当与目标巧算类型对应的求解方式有多个时,则可以从多个求解方式中随机选择一个作为目标求解方式。
[0071] 举例而言,假设当前公式为“0.8×3.74+6.26×0.8”,则可以确定该公式满足预设巧算类型中的乘法分配律,该公式中的“3.74”和“6.26”可以结合后相加得到整数10,因此,对于该公式,可以确定与满足的乘法分配律对应的目标求解方式为当前步骤对“3.74”和“6.26”进行求和。
[0072] 步骤104,基于所述目标求解方式对所述当前公式进行运算,生成所述当前公式对应的讲解步骤。
[0073] 本公开实施例中,确定了目标求解方式之后,即可基于目标求解方式对当前公式进行运算,并生成对应的讲解步骤。
[0074] 本公开实施例中,讲解步骤可以描述相应运算步骤的运算过程。作为一种示例,讲解步骤可以为“先计算括号内的1减百分之20”、“使用结合律将3.74与6.26结合”,等等。需要说明的是,讲解步骤可以采用自然语言进行描述,也可以采用便于计算机理解的语言进行描述,之后再转换为需要的语言,本公开对描述讲解步骤使用的语言不作限制。
[0075] 作为一种可能的实现方式,本公开实施例中,可以预先设置每一种运算对应的讲解步骤模板,例如,对于计算括号内的算式的运算,对应的讲解步骤模板可以是“公式中有括号,先算括号内的___○(表示任意的运算符号)___”,之后,在实际运算中,可以根据运算步骤具体涉及的数字和运算符号,对讲解步骤模板进行填充,生成对应的讲解步骤。
[0076] 作为一种可能的实现方式,对于不满足预设巧算类型的当前公式,按照一般四则混合运算规则进行运算,生成的讲解步骤的结果可以包括:下一公式、当前公式的操作位置、下一公式的操作位置、相关子公式和动作类型。
[0077] 其中,下一公式为下一步运算时要展示出的公式,可以为空,与动作类型相关;当前公式的操作位置,即当前动作需要操作的当前公式的数字或数字部分、符号等的位置信息;下一公式的操作位置,即当前动作操作后生成的下一公式的数字、符号等的位置信息,也即当前公式的操作位置处的符号经运算后的计算结果的展示位置;相关子公式,与当前动作相关的子计算等,可以为空;动作类型,即当前公式发生的操作,用于根据此类型匹配讲解演示视频中动画动作及后处理中的讲解文本,例如,动作类型可以包括但不限于计算、移动等。
[0078] 举例而言,假设对于脱式计算公式“0.8×3.74+6.26×(1‑20%)”进行一步运算之后得到公式“0.8×3.74+6.26×0.8”,该公式即为下一公式,当前公式的操作位置则为“(1‑20%)”对应的位置,即第7~11位,下一公式的操作位置即为第7位,相关子公式即为“1‑
20%”,动作类型为计算。从而,对公式“0.8×3.74+6.26×(1‑20%)”进行第一步运算后,生成的一般讲解步骤可以表示为[0.8×3.74+6.26×0.8,7~11,7,1‑20%,计算],表达的含义为对当前公式在第7~11位执行计算操作后,得到公式0.8×3.74+6.26×0.8,当前公式参与计算的子公式为1‑20%,计算结果为0.8。
[0079] 本公开实施例中,基于所满足的目标巧算类型对应的目标解题方式进行运算生成的讲解步骤(为便于描述,称为特殊讲解步骤),与不满足预设巧算类型时基于一般四则混合运算规则进行运算生成的讲解步骤(为便于描述,称为一般讲解步骤)的不同之处在于,特殊讲解步骤是以一般讲解步骤集合的方式存储在讲解流中,这个集合会带一个跟目标巧算类型相关的类型名称,以便为后续的后处理及最终的讲解演示视频生成提供更多的信息。也就是说,特殊讲解步骤的结构包括:与当前公式所满足的目标巧算类型对应的一般讲解步骤集合以及目标巧算类型的名称,可以记为[一般讲解步骤集合,目标巧算类型的名称]。
[0080] 能够理解的是,对于满足预设巧算类型的当前公式,按照所满足的目标巧算类型对应的目标解题方式进行移动、结合等操作后,对操作后的公式仍是按照一般四则混合运算规则进行计算的,比如结合后先计算括号中的加法运算,因此,仍可以采用上述一般讲解步骤的结构来描述特殊讲解步骤中涉及的一般四则混合运算过程,该过程涉及的一般讲解步骤可以集合的形式存储,即一般讲解步骤集合,并以所满足的目标巧算类型的名称进行命名。当然,也可以目标巧算类型的标识符进行命名,本公开仅以名称命名作为示例,而不能作为对本公开的限制。
[0081] 在本公开实施例中,通过定义讲解步骤的结构,可以基于上一公式运算后的结果生成当前公式,而当前公式运算后的结果可以用于生成下一运算步骤对应的公式,由此,使得各运算步骤对应生成的讲解步骤之间能够无缝衔接,为生成流畅的讲解演示视频提供了条件。
[0082] 在本公开的一种可选实施方式中,为了存储各运算步骤生成的讲解步骤,可以预先定义一个公共讲解步骤存储流,简称讲解流,负责存储运算过程中生成的讲解步骤。在运算过程中,可以将每一运算步骤中生成的讲解步骤,按照生成顺序依次存储在讲解流中,从而后续在生成解题演示视频时,按照讲解流中存储的各讲解步骤的顺序进行处理,生成解题演示视频。
[0083] 能够理解的是,基于当前步骤的运算结果,可以重置公式信息,得到下一运算步骤对应的公式,以此类推,直至运算结束。
[0084] 步骤105,在对所述计算公式进行逐步运算完成后,基于每一步运算对应的讲解步骤,生成所述计算公式对应的解题演示视频。
[0085] 本公开实施例中,在对待演示的计算公式进行逐步运算完成后,例如,获取的当前运算步骤对应的当前公式仅为一个数,则表明运算结束,之后,可以基于每一运算步骤对应的讲解步骤,生成该计算公式对应的解题演示视频。
[0086] 作为一种示例,在生成解题演示视频时,可以根据讲解步骤中记录的内容,生成每个讲解步骤对应的讲解文本,即得到了相关运算步骤对应的讲解文本。接着,可以将讲解文本转换为讲解语音,例如,可以采用目前常用的文本转语音技术,将讲解文本转换为讲解语音,进而基于该讲解文本和讲解语音生成计算公式对应的解题演示视频。
[0087] 能够理解的是,讲解步骤中记录了相应运算步骤所涉及的数字和运算符号,根据上一讲解步骤,可以知晓上一运算步骤进行了何种运算,基于该运算结果,可以得到当前运算步骤对应的新公式,逐步运算,直至运算结束,得到最终的运算结果。因此本公开实施例中,基于讲解步骤生成的讲解文本不仅可以包括当前运算步骤涉及的运算内容,还可以包括当前公式,基于每一运算步骤的运算结果重置公式信息得到新公式的过程,可以生成多帧图像来构建视频动画,以演示计算公式的逐步运算过程。通过将讲解文本转换为讲解语音,可以将讲解语音与视频动画中的各相关图像进行关联,生成包含讲解语音的解题演示视频,从而在播放该解题演示视频时,能够达到在演示运算步骤的过程中进行同步语音讲解的目的,实现了计算公式的自动讲解演示。
[0088] 在本公开的一种可选实施方式中,在生成解题演示视频时,还可以根据各运算步骤中涉及的数字及运算符号分别对应的位置,确定本步骤运算的子公式,并对本步骤对应的讲解文本中该子公式进行高亮显示、添加下划线等处理,以方便学生直观地获知本步骤运算的对象,提高解题演示视频的演示效果。
[0089] 本公开实施例的公式巧算的解题演示方法,通过获取待演示的计算公式,在对计算公式进行逐步运算时,判断当前运算步骤对应的当前公式是否满足预设巧算类型,并在当前公式满足预设巧算类型的情况下,确定与当前公式满足的目标巧算类型对应的目标求解方式,进而基于目标求解方式对当前公式进行运算,生成当前公式对应的讲解步骤,在对计算公式进行逐步运算完成后,基于每一步运算对应的讲解步骤,生成计算公式对应的解题演示视频。采用本公开的方案,通过在每步运算前均判断当前运算步骤对应的当前公式是否满足预设巧算类型,并对满足预设巧算类型的当前公式采用所满足的目标巧算类型对应的求解方式进行运算,使得讲解过程能够覆盖运算中涉及的全部巧算,支持同一道题内使用多次巧算进行讲解,有利于提高公式计算的准确性。
[0090] 进一步地,在本公开的一种可选实施方式中,在当前公式不满足预设巧算类型的情况下,则基于预设的脱式计算规则对当前公式进行运算,生成当前公式对应的讲解步骤。
[0091] 其中,预设的脱式计算规则,即进行脱式计算使用的一般四则混合运算规则。一般四则混合运算规则,即先算加减,后算乘除,有括号的先计算括号内的算式,若公式中包含小括号、中括号和大括号,则先计算小括号中的内容,在仅包含“+”、“‑”或仅包含“×”、“÷”的公式中,按照从左至右的顺序依次计算。通常,巧算以脱式计算为基础,即对于脱式计算才能利用数学运算规律和数字规律进行巧算,因此,对于不满足预设巧算类型的当前公式,可以利用一般四则混合运算规则进行运算,并获取对应的讲解步骤。
[0092] 举例而言,假设当前公式为“0.8×3.74+6.26×(1‑20%)”,根据该公式的公式特征可以确定,该公式不满足预设巧算类型,则按照一般四则混合运算规则对其进行计算,先计算括号中的内容,生成的讲解步骤可以为“有括号,先计算括号中的1‑20%”。
[0093] 在本公开实施例中,通过在每一运算步骤时判断当前公式是否满足预设巧算类型,满足时则按照所满足的目标巧算类型进行运算,不满足时则按照脱式计算规则进行运算,由此,实现了巧算与一般脱式计算的巧妙结合,使脱式讲解更灵活。
[0094] 在本公开的一种可选实施方式中,如图4所示,在前述实施例的基础上,步骤102可以包括以下子步骤:
[0095] 步骤201,获取所述当前公式的算式符号特征和公式特征。
[0096] 本公开实施例中,对于获取的当前公式,可以获取该当前公式对应的算式符号特征和公式特征。
[0097] 其中,算式符号特征可以包括但不限于算式符号的类型、每种算式符号的个数,算式符号的类型如“+”、“‑”、“×”、“÷”;公式特征可以包括但不限于公式结构特征、数字特征等,公式结构特征可以包括但不限于连乘、连加、加减混合、加乘混合、包含两个相同的数字等;数字特征包括但不限于和谁能凑整、几位的整数、包含哪些因数,等等。
[0098] 步骤202,基于所述算式符号特征,确定所述当前公式对应的算式分类。
[0099] 其中,算式分类可以根据实际需求预先进行设置,包括但不限于连加、连乘、加乘混合,等等。
[0100] 本公开实施例中,获取了当前公式对应的算式符号特征之后,可以先基于获取的算式符号特征对当前公式进行分类,确定当前公式对应的算式分类。
[0101] 举例而言,假设获取的当前公式的算式符号特征为两个“×”一个“+”,则可以确定该当前公式对应的算式分类为加乘混合。
[0102] 步骤203,基于所述公式特征,判断所述当前公式是否满足所述算式分类对应的预设巧算类型。
[0103] 其中,每种算式分类对应的预设巧算类型可以预先设定。例如,对于连加的算式分类,可以预先设置对应的巧算类型包括加法交换律、加法结合律、拆分后再利用加法结合律,等等;对于加乘混合的算式分类,可以预先设置对应的巧算类型包括乘法分配律、提取公因数、拆分后再利用乘法结合律,等等;对于连乘的算式分类,可以预先设置对应的巧算类型包括提取公因数、拆分后再利用乘法结合律,等等。
[0104] 本公开实施例中,确定了当前公式对应的算式分类之后,可以基于获取的公式特征,判断当前公式是否满足该算式分类对应的预设巧算类型。
[0105] 举例而言,假设当前公式为“0.8×3.74+6.26×0.8”,根据该公式的算式符号特征,可以确定该公式对应的算式分类为加乘混合,假设加乘混合算式分类对应的预设巧算类型包括乘法分配律、提取公因数和拆分后再利用乘法结合律。根据该当前公式的公式特征可知,该公式中的“3.74”和“6.26”可以利用乘法分配律进行结合,因此,可以确定当前公式满足加乘混合算式分类对应的预设巧算类型中的乘法分配律。
[0106] 在本公开的一种可选实施方式中,在基于公式特征,判断当前公式是否满足算式分类对应的预设巧算类型时,可以获取与算式分类对应的巧算类型列表,巧算类型列表中的各巧算类型按照优先级由高到低的顺序进行排列,接着,基于公式特征,从巧算类型列表的头部开始进行巧算类型匹配,在从巧算类型列表中匹配到巧算类型的情况下,确定当前公式满足算式分类对应的预设巧算类型。
[0107] 其中,每种算式分类对应一个巧算类型列表,巧算类型列表中包括同一算式分类对应的所有巧算类型,各巧算类型是预先设置的,并且,按照各巧算类型对应的优先级进行排序。也就是说,对于同一算式分类对应的所有巧算类型,按照优先级由高到低的顺序进行排序后,即得到该算式分类对应的巧算类型列表。
[0108] 示例性地,各巧算类型的优先级可以基于算式分类下的题目使用的各巧算类型的次数进行确定。例如,可以预先收集一定数量的同一算式分类的题目,并针对该算式分类对应的每种巧算类型,统计这些题目中可以使用各巧算类型的题目的数量,如果这些题目中使用某一巧算类型的题目的数量最多,则确定该巧算类型的优先级最高,同理,如果这些题目中使用某一巧算类型的题目的数量最少,则确定该巧算类型的优先级最低,由此,得到每种巧算类型的优先级。进而按照优先级由高到低的顺序对各巧算类型进行排序,得到该算式分类对应的巧算类型列表。
[0109] 本公开实施例中,根据当前公式的公式特征,可以依次匹配巧算类型列表中的各个巧算类型,从巧算类型列表的头部开始依次进行匹配,根据匹配到就返回的原则,当从巧算类型列表中第一次匹配到巧算类型时,即确定当前公式满足算式类型对应的预设巧算类型,并可以将第一次匹配到的巧算类型确定为当前公式所满足的目标巧算类型。
[0110] 能够理解的是,根据巧算类型的排列方式不同,巧算类型列表的头部对应的位置也不同,匹配方向也不同。例如,假设各巧算类型按照优先级由高到低的顺序从上至下进行排列,则巧算类型列表的头部对应的位置为巧算类型列表的顶部,匹配方向为从上到下;假设各巧算类型按照优先级由高到低的顺序从左至右进行排列,则巧算类型列表的头部对应的位置为巧算类型列表的最左侧,匹配方向为从左到右。但应当理解的是,无论巧算类型列表中的各巧算类型按照何种方式排列,在进行巧算类型匹配时,第一个匹配的均是巧算类型列表中优先级最高的巧算类型,按照优先级由高到低的顺序依次进行匹配。由此,实现了对优先级高的巧算类型优先进行匹配,从而使得最终匹配到的巧算类型是所满足的巧算类型中最优的,有助于提高巧算的准确性。
[0111] 本公开实施例的公式巧算的解题演示方法,通过获取当前公式的算式符号特征和公式特征,并基于算式符号特征,确定当前公式对应的算式分类,接着基于公式特征,判断当前公式是否满足算式分类对应的预设巧算类型,由此,实现了先基于公式中的算式符号匹配到合适的算式分类,再从匹配的算式分类对应的预设巧算类型中匹配巧算类型,能够避免大量无用的算式匹配及巧算类型匹配,提高匹配效率。
[0112] 在本公开的一种可选实施方式中,在判断当前运算步骤对应的当前公式是否满足预设巧算类型时,可以先判断当前公式中是否包含括号,在当前公式中包含括号的情况下,基于预设的括号处理规则对当前公式进行去括号处理,得到新的公式,再判断新的公式是否满足预设巧算类型,并在新的公式不满足预设巧算类型的情况下,判断当前公式中括号内的子公式是否满足预设巧算类型。
[0113] 其中,括号处理规则可以预先设定,括号处理规则可以是目前常用的去括号法则,即括号前面是加号时,去掉括号,括号内的算式不变;括号前面是减号时,去掉括号,括号内加号变减号,减号变加号;括号前面是乘号时,去掉括号,括号内的算式不变。
[0114] 本公开实施例中,当前公式中包含括号时,可以先基于预设的括号处理规则对当前公式进行去括号处理,得到新的公式,再判断新的公式是否满足预设巧算类型,如果不满足,则再判断当前公式中括号内的算式是否满足预设巧算类型,如果还不满足,则按照一般四则混合运算规则进行运算。由此,能够尽量识别公式中的全部巧算类型,有助于提高运算准确率。
[0115] 在本公开的一种可选实施方式中,如图5所示,在前述实施例的基础上,步骤103可以包括以下子步骤:
[0116] 步骤301,基于所述当前公式对应的公式特征,获取与所述目标巧算类型对应的至少一种求解方式。
[0117] 其中,公式特征可以包括但不限于公式结构特征、数字特征等,公式结构特征可以包括但不限于连乘、连加、加减混合、加乘混合、包含两个相同的数字等;数字特征包括但不限于和谁能凑整、几位的整数、包含哪些因数,等等。
[0118] 本公开实施例中,对于满足目标巧算类型的当前公式,可以根据当前公式的公式特征,获取与目标巧算类型对应的至少一种求解方式。
[0119] 举例而言,假设当前公式为“8×125”,目标巧算类型为拆分后利用乘法结合律,根据当前公式的公式特征如两数的乘法、8=2×4、125=5×25等,可以确定对应的求解方式可以有如下三种:(1)将125拆分成5×25,即将公式“8×125”拆分为“8×5×25”,再利用结合律进行运算;(2)将8拆分成2×4,即将公式“8×125”拆分为“2×4×125”,再利用结合律进行运算;(3)将8拆分成2×4,以及将125拆分成5×25,即将公式“8×125”拆分为“2×4×5×25”,再利用结合律进行运算。
[0120] 步骤302,基于所述目标巧算类型对应的权重分配规则,确定所述至少一种求解方式分别对应的权重。
[0121] 其中,权重分配规则可以预先设置,例如,可以根据结合后两个数的运算复杂度来为每种解题方式分配对应的权重,运算复杂度越高,则分配的权重越小。能够理解的是,针对不同的巧算类型,可以设置相同或不同的权重分配规则,本公开对此不作限制。
[0122] 本公开实施例中,对于获取的每种求解方式,可以根据对应的权重分配规则,确定每一种求解方式对应的权重。
[0123] 继续上述举例,对于当前公式“8×125”,确定的求解方式有如下三种:(1)将125拆分成5×25,即将公式“8×125”拆分为“8×5×25”,再利用结合律进行运算;(2)将8拆分成2×4,即将公式“8×125”拆分为“2×4×125”,再利用结合律进行运算;(3)将8拆分成2×4,以及将125拆分成5×25,即将公式“8×125”拆分为“2×4×5×25”,再利用结合律进行运算。假设对应的权重分配规则为结合后两个数的运算复杂度越高,分配的权重越小,则对于上述第一种求解方式,可以结合为“(8×25)×5”,对于上述第二种求解方式,可以结合为“(2×125)×4”,对于上述第三种求解方式,可以结合为“(2×5)×(4×25)”,按照每一种求解方式结合后括号内算式的计算结果大小,可以确定“(2×5)×(4×25)”的结合方式的运算复杂度最低,可以为其分配最大的权重,而“(2×125)×4”的结合方式的运算复杂度最高,可以为其分配最小的权重,而为“(8×25)×5”的求解方式分配中间的权重,由此,得到每种求解方式对应的权重。
[0124] 步骤303,将所述至少一种求解方式中权重最大的求解方式,确定为目标求解方式。
[0125] 本公开实施例中,获取了每种求解方式对应的权重之后,可以从至少一种求解方式中选择权重最大的求解方式,作为目标巧算类型对应的目标求解方式。
[0126] 在本公开的一种可选实施方式中,还可以针对求解方式中的每个结合对分配权重,在确定求解方式的权重时,将该求解方式中所有的结合对的权重进行加权求和或者采用求均值等方式,得到该求解方式对应的权重。
[0127] 本公开实施例的公式巧算的解题演示方法,通过基于当前公式对应的公式特征,获取与目标巧算类型对应的至少一种求解方式,并基于目标巧算类型对应的权重分配规则,确定至少一种求解方式分别对应的权重,进而将至少一种求解方式中权重最大的求解方式,确定为目标求解方式,由此,实现了选择最优的求解方式进行当前公式的运算,有助于提高运算准确率。
[0128] 图6示出了本公开一具体实施例的公式巧算的解题演示方法的流程示意图,如图6所示,对于输入的计算公式,可以先进行公式解析,得到该脱式计算公式对应的公式信息,如算式符号特征、公式结构特征、数字特征、各符号的位置信息等。之后,对于该公式,可以先根据算式符号特征对该公式进行分类,判断该公式是否为脱式计算公式,如果是,再进入到后续巧算类型的匹配步骤,否则,按照一般计算进行处理。当输入的计算公式为脱式计算公式时,进一步匹配巧算类型,判断当前公式是否匹配到预设巧算类型,如果匹配到,则确定对应的目标求解方式,并基于确定的目标求解方式进行运算,生成讲解步骤,并将讲题步骤存储至讲解流中。若未匹配到巧算类型,则按照一般四则混合运算规则进行运算,生成讲解步骤,并将讲题步骤存储至讲解流中。之后,重置公式信息并判断是否为最后一步运算,若不是,则返回执行匹配巧算类型的步骤。若已计算至最后一步计算,即重置公式信息后的结果为一个数,不包含运算符号,则基于讲解流生成讲解演示视频。其中,在生成讲解演示视频时,可以先基于讲解流匹配讲解文本,再将讲解文本转换为讲解语音,之后基于讲解文本和讲解语音生成讲解演示视频,该讲解演示视频可以在前端播放,实现对输入公式的讲解演示。
[0129] 本公开示例性实施例还提供了一种公式巧算的解题演示装置。图7示出了根据本公开示例性实施例的公式巧算的解题演示装置的示意性框图,如图7所示,该公式巧算的解题演示装置60包括:获取模块610、判断模块620、确定模块630、运算模块640和生成模块650。
[0130] 其中,获取模块610,用于获取待演示的计算公式;
[0131] 判断模块620,用于在对所述计算公式进行逐步运算时,判断当前运算步骤对应的当前公式是否满足预设巧算类型;
[0132] 确定模块630,用于在所述当前公式满足所述预设巧算类型的情况下,确定与所述当前公式满足的目标巧算类型对应的目标求解方式;
[0133] 运算模块640,用于基于所述目标求解方式对所述当前公式进行运算,生成所述当前公式对应的讲解步骤;
[0134] 生成模块650,用于在对所述计算公式进行逐步运算完成后,基于每一步运算对应的讲解步骤,生成所述计算公式对应的解题演示视频。
[0135] 可选地,所述判断模块620,包括:
[0136] 获取单元,用于获取所述当前公式的算式符号特征和公式特征;
[0137] 确定单元,用于基于所述算式符号特征,确定所述当前公式对应的算式分类;
[0138] 判断单元,用于基于所述公式特征,判断所述当前公式是否满足所述算式分类对应的预设巧算类型。
[0139] 可选地,所述判断单元,还用于:
[0140] 获取与所述算式分类对应的巧算类型列表,所述巧算类型列表中的各巧算类型按照优先级由高到低的顺序进行排列;
[0141] 基于所述公式特征,从所述巧算类型列表的头部开始进行巧算类型匹配;
[0142] 在从所述巧算类型列表中匹配到巧算类型的情况下,确定所述当前公式满足所述算式分类对应的预设巧算类型。
[0143] 可选地,所述判断模块620,还用于:
[0144] 在所述当前公式中包含括号的情况下,基于预设的括号处理规则对所述当前公式进行去括号处理,得到新的公式;
[0145] 判断所述新的公式是否满足预设巧算类型;
[0146] 在所述新的公式不满足所述预设巧算类型的情况下,判断所述当前公式中所述括号内的子公式是否满足所述预设巧算类型。
[0147] 可选地,所述确定模块630,还用于:
[0148] 基于所述当前公式对应的公式特征,获取与所述目标巧算类型对应的至少一种求解方式;
[0149] 基于所述目标巧算类型对应的权重分配规则,确定所述至少一种求解方式分别对应的权重;
[0150] 将所述至少一种求解方式中权重最大的求解方式,确定为目标求解方式。
[0151] 可选地,所述公式巧算的解题演示装置60,还包括:
[0152] 常规运算模块,用于在所述当前公式不满足所述预设巧算类型的情况下,基于预设的脱式计算规则对所述当前公式进行运算,生成所述当前公式对应的讲解步骤。
[0153] 可选地,所述生成模块650,还用于:
[0154] 根据每一步运算对应的讲解步骤,生成所述讲解步骤对应的讲解文本;
[0155] 将所述讲解文本转换为讲解语音;
[0156] 基于所述讲解文本和所述讲解语音,生成所述计算公式对应的解题演示视频。
[0157] 本公开实施例所提供的公式巧算的解题演示装置,可执行本公开实施例所提供的任意可应用于电子设备的公式巧算的解题演示方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
[0158] 本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的公式巧算的解题演示方法。
[0159] 本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的公式巧算的解题演示方法。
[0160] 本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的**方法。
[0161] 参考图8,现将描述可以作为本公开的服务器或客户端的电子设备1100的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0162] 如图8所示,电子设备1100包括计算单元1101,其可以根据存储在只读存储器(ROM)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(RAM)1103中的计算机程序,来执行各种适当的动作和处理。在RAM 1103中,还可存储设备1100操作所需的各种程序和数据。计算单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
[0163] 电子设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106、输出单元1107、存储单元1108以及通信单元1109。输入单元1106可以是能向电子设备1100输入信息的任何类型的设备,输入单元1106可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1107可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1108可以包括但不限于磁盘、光盘。通信单元1109允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
[0164] 计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理。例如,在一些实施例中,公式巧算的解题演示方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1102和/或通信单元1109而被载入和/或安装到电子设备1100上。在一些实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行公式巧算的解题演示方法。
[0165] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0166] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0167] 如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
[0168] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0169] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0170] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。

当前第1页 第1页 第2页 第3页