日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

介绍一款原创的四则运算算式生成器:CalculateIt2

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 介绍一款原创的四则运算算式生成器:CalculateIt2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

家里小朋友讀一年級了,最近每天都有一些10以內的加減法口算練習,作為程序員爸爸,自然也是想辦法能夠偷懶,讓電腦出題,給小朋友做些練習。于是,自己在業余時間開發了一個四則運算算式生成器,名為:CalculateIt2。項目是開源的,源碼地址是:https://github.com/daxnet/CalculateIt2。也可以在標準的.NET Framework 4.6.1的項目中,通過nuget來引用這個類庫,nuget ID是:CalculateIt2.Engine。為什么名字后面有一個“2”呢?不是說這個項目比較二,而是之前做過一個簡單的版本,但是功能太差,就被拋棄了。現在是第二個版本。

先睹為快

首先,打開Visual Studio 2015,新建一個.NET Framework 4.6.1的控制臺應用程序,在項目上點擊鼠標右鍵,選擇Manage NuGet Packages,打開包管理界面,在搜索欄中輸入CalculateIt2.Engine,此時就可以將本類庫添加到項目中:

在Program.cs中,輸入以下代碼:

class Program {static void Main(string[] args){var formation = "{10}+-*/|3";var equation = new ArithmeticEquationGenerator(formation, new AvoidNegativeResultRule(), new DivisibilityEnsuranceRule());for (var i = 0; i < 10; i++){var calculation = equation.Generate();Console.WriteLine($"{calculation.ToFormattedString(SpacingOption.Thin)} = {calculation.Value}");}} }

以上代碼會產生10個10以內,包含3個計算因子的四則混合運算算式,如下:

基本功能

此算式生成器類庫(CalculateIt2.Engine)不僅可以根據指定的算式格式產生算式,而且還能自定義算式生成規則,并使用生成的算式產生各種不同的試題題型。

算式格式定義

在ArithmeticEquationGenerator類的構造函數中,第一個參數指定了需要生成的算式格式,例如,在上例的格式字符串{10}+-*/|3中:

  • {10}:指定了每個因子的取值范圍,語義上表示10以內。{30}則表示30以內
  • +-*/:指定了算式中可以包含的運算符,這里是支持四則運算。如果只指定+-,那么生成的算式中只會出現加法和減法。至少需要指定一個運算符,相同的運算符不能出現多次
  • |:豎線是前半部分和后半部分的分割線。豎線及以后的部分都是可有可無的
  • 豎線之后的3:表示產生3個因子的算式,比如上例中所有的算式都是由三個因子組成。此處還可以指定因子個數的范圍,最大數和最小數之間用減號隔開,比如:{10}+-|2-5,則表示需要生成10以內的加減法運算算式,每個算式最多可以包含5個因子,最少需要包含2個因子

算式生成規則

在ArithmeticEquationGenerator類的構造函數的第二個之后的參數中,指定了算式生成規則的類的實例。這些類都實現了CalculateIt2.Engine.Rules.IRule接口,目前在CalculateIt2.Engine類庫中提供了以下幾種生成規則:

  • AvoidDivideByZeroRule:當算式中出現除法的時候,避免除法運算出現“除以零”的錯誤。此規則是內建規則,由ArithmeticEquationGenerator產生的算式都適用該規則
  • AvoidNegativeResultRule:當算式中出現減法的時候,避免減法運算出現負數結果。此規則可以在構造ArithmeticEquationGenerator時選擇指定,它的選擇與否不會對算式的生成產生致命的影響。但如果是為低年級的小朋友生成算式,那么負數的概念就應該去掉(人家一年級還沒有接觸負數呢)
  • DivisibilityEnsuranceRule:當算式中出現除法的時候,確保被除數可以被除數整除。此規則可以在構造ArithmeticEquationGenerator時選擇指定,同樣,它的選擇與否不會對算式的生成產生致命的影響。對于低年級小朋友,還沒有小數的概念,因此,在生成算式的時候,加入這個規則也是很有必要的

除此之外,開發者可以自己擴展IRule接口,定義算式生成的一些特殊規則,比如:在算式中避免出現0這個因子。

多種題型的試題生成

目前支持三種題型的試題生成:標準題,填空題和比大小。不同題型的試題生成器都需要繼承于CalculateIt2.Engine.Generation.QuestionGenerator{T}抽象類。目前默認提供了這三種題型的試題生成:

  • RegularQuestionGenerator:生成標準計算題題型,比如:2 + 3 – 1 = __________,同學們把計算結果寫在橫線上
  • ClozeQuestionGenerator:生成填空題,比如:5 – 3 + (?? ) = 6,同學們在括號中填入數字,將算式補全
  • ComparisonQuestionGenerator:比大小題,比如:5 – 1 ○ 2,同學們在圓圈中填入>、<或者=符號

當然,開發者可以根據需要實現更多的題型。一個for循環下來,小朋友們要哭了。

實現

此算式生成器使用了組合模式和經典Visitor模式,并結合動態Visitor模式提供了額外的功能。以下是主要類型的類圖(點擊查看大圖),具體的實現細節就不多介紹了,大家可以參考源代碼。

應用

我結合DocX這個開源類庫,寫了一個算術測試試卷的生成軟件(就是一個控制臺程序),它可以使用CalculateIt2.Engine類庫產生10以內加減法的測試試卷,并輸出到一個Microsoft Word文檔,下面是效果:


請慎重干類似的事情,這樣做會讓小朋友不喜歡你的。

接下來。。。

這個類庫我自己搭建了Jenkins服務器進行持續集成和nuget包的分發,接下來打算介紹一下這方面的內容。

轉載于:https://www.cnblogs.com/daxnet/p/5902057.html

總結

以上是生活随笔為你收集整理的介绍一款原创的四则运算算式生成器:CalculateIt2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕校园春色 | 成人黄页| 成人三级在线视频 | 少妇学院在线观看 | 日韩精品免费在线观看 | 非洲黄色大片 | 蜜桃av在线播放 | 99这里有精品视频 | 最新毛片网站 | 亚洲中文字幕无码一区二区三区 | 无码粉嫩虎白一线天在线观看 | 国产黄a三级三级三级看三级男男 | av免播放器在线观看 | 夜夜嗨av一区二区三区 | 天天插天天射 | 国产大奶在线 | 超碰在线人人干 | 色视频网站 | 涩涩视频网站在线观看 | 自拍视频在线观看 | 日韩伦理在线视频 | 成人av影视在线观看 | 婷婷中文在线 | 91婷婷在线| 97干视频 | 乱岳| ,国产精品国产三级国产 | 尤物视频在线播放 | 人人干天天操 | 少妇日皮视频 | 亚洲人掀裙打屁股网站 | 三级av毛片 | 欧美日韩一区二区在线视频 | 亚洲av色区一区二区三区 | 日韩bbw| 亚洲做受高潮无遮挡 | 国产一区在线免费观看 | 巨茎人妖videos另类 | 成人一区二区三区仙踪林 | 亚洲av成人精品一区二区三区 | 另类天堂网 | hd丰满圆润的女人hd | 久久久天天 | 国产成人欧美一区二区三区的 | 在线播放国产精品 | 欧美一级久久 | 日本伦理片在线看 | 美女啪啪网站 | 日韩亚洲欧美一区二区 | 美女伦理水蜜桃4 | 动漫美女舌吻 | a激情| 黄色1级片 | 欧美视频网站 | 自拍偷在线精品自拍偷无码专区 | 午夜av网| 亚洲精品视频二区 | 国产不卡视频在线观看 | 国模在线观看 | 亚洲国产果冻传媒av在线观看 | 亚洲在线免费 | 无码一区二区 | 夜夜se| 超碰在线最新 | 日本成人一二三区 | 亚洲av无码乱码国产麻豆 | 国产精品刘玥久久一区 | 激情小说专区 | 日韩jizz| 日韩久久久久久 | 91久| 一区二区三区视频免费看 | 91亚洲国产成人精品一区二三 | 亚洲永久免费观看 | 欧美三级一区 | 亚洲综合久久婷婷 | 白嫩初高中害羞小美女 | 欧美激情视频在线观看 | 国产精品久久久久精 | 久久综合桃花网 | 97超碰国产精品无码蜜芽 | 日韩第二页 | 亚洲精品久久久蜜桃网尤妮丝 | 成人一区二区三区 | 一区二区三区毛片 | 精品成人免费一区二区在线播放 | 久久6精品| 亚洲aaaa级特黄毛片 | 欧美18一19性内谢 | exo妈妈mv在线播放免费 | 在线看不卡av | 成年人香蕉视频 | 蜜桃导航-精品导航 | 91精品人妻一区二区三区四区 | 91婷婷在线| 日韩一级片在线 | 欧美日在线观看 | 爆乳熟妇一区二区三区霸乳 | 国产精品伦一区二区三级古装电影 |