# Weekly Meeting 3/23
---
## Outline
- 分類進度
- 題目待討論
- 應用題程式
---
## 分類進度
* 17221(Training 6674, Test 10547)
* 皇穀 2928
* 若芸 3020
* 俊達 2123
---
## 題目待討論
----
- "大約"都是取概數到百位?
- 小華存了188元,小香存了298元,兩人的錢合起來大約有多少元?
- 188+298=486
- 答:500元
----
- 分到第二大類但要考慮對摺
- 一條緞帶對摺後和5個迴紋針一樣長,這條緞帶原來和幾個迴紋針一樣長?
----
- 非典型速率
- 哥哥走一步的長是45公分,弟弟走一步的長是39公分,背對背往相反方向各走18步後,兩人相距多少公分?
---
## 應用題程式
----
### `QuestionPatternForm.cs`
```csharp=730
//"船速", "水速", "順水速度", "逆水速度", "距離", "順水時間", "逆水時間"
//"順水速度=船速+水速",
//"逆水速度=船速-水速",
//"距離=順水速度*順水時間",
//"距離=逆水速度*逆水時間"
var 新參數字典 = new Dictionary<string, double>();
新參數字典["船速"] = 21.0;
新參數字典["水速"] = 3.0;
新參數字典["順水時間"] = 1.2;
新參數字典["逆水速度"] = -1;
新參數字典["距離"] = -1;
新參數字典["順水速度"] = -1;
新參數字典["逆水時間"] = -1;
var replaced_statements = generate_replaced_statements(公式, 參數清單);
var key_variable = "逆水時間";
while (true)
{
var flag = false;
if (新參數字典[key_variable] != -1)
{
break;
}
foreach(var statement in replaced_statements)
{
flag = false;
var counter = 0;
var char_list = statement.Split("+-*/=".ToCharArray());
var target_variable_char = 'A';
foreach(var n in char_list)
{
if (新參數字典[參數清單[(n.ToCharArray()[0]) - 'a']] == -1)
{
target_variable_char = n.ToCharArray()[0];
counter--;
}
}
if(counter==-1)
{
flag = true;
var tmp = statement;
tmp = tmp.Solve(target_variable_char.ToString()).Simplify().ToString();
for(var i = 0 ; i < 參數清單.Count ; i++)
{
tmp = tmp.Replace(((char)('a' + i)).ToString(), 新參數字典[參數清單[i]].ToString());
}
Console.WriteLine();
Console.WriteLine("正在計算: " + 參數清單[target_variable_char-'a']);
Console.WriteLine(tmp);
Entity expression = tmp.Substring(1, tmp.Length - 2);
var result = expression.EvalNumerical();
Console.WriteLine(result);
Console.WriteLine();
新參數字典[參數清單[target_variable_char - 'a']] = (double)result;
break;
}
}
if(!flag)
{
//declare un-resolveable
Console.WriteLine("本題無解");
break;
}
}
```
----
```csharp=820
private List<String> generate_replaced_statements(List<String> statements, List<String> variables)
{
// 0 1 2 3 4 5 6
// a b c d e f g
//string[] 參數清單 = new string[] { "船速", "水速", "順水速度", "逆水速度", "距離", "順水時間", "逆水時間" };
//string[] 公式 = new string[] { "順水速度=船速+水速", "逆水速度=船速-水速", "距離=順水速度*順水時間", "距離=逆水速度*逆水時間" };
List<int> statement_counter = new List<int>();
List<String> replaced_statements = new List<String>();
foreach (var statement in statements)
{
var tmp = statement;
for (var i = 0; i < variables.Count; i++)
{
var variable = variables[i];
tmp = tmp.Replace(variable, ((char)('a' + i)).ToString());
}
replaced_statements.Add(tmp);
}
return replaced_statements;
}
```
----
{"metaMigratedAt":"2023-06-15T21:38:57.949Z","metaMigratedFrom":"YAML","title":"Weekly Meeting 3/23","breaks":true,"slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"325cb9a2-2cc4-4308-8e12-b079922d655c\",\"add\":97,\"del\":0},{\"id\":\"62e36997-69dd-4830-b567-1b6decba8ab1\",\"add\":2905,\"del\":837},{\"id\":\"35dabed6-7dfb-4ac3-8e6a-858efe91a445\",\"add\":1572,\"del\":377}]"}