From b52c64b196c5e384276d12da727aea84e4942272 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E5=9F=B9=E6=AF=85?= <2642034697@qq.com>
Date: Sun, 28 Sep 2025 21:32:57 +0800
Subject: [PATCH] 123
---
.idea/codeStyles/codeStyleConfig.xml | 5 +++
.idea/encodings.xml | 6 +++
src/JuniorQuestionGenerator.class | Bin 966 -> 1268 bytes
src/JuniorQuestionGenerator.java | 57 ++++++++++++++++--------
src/PrimaryQuestionGenerator.class | Bin 1138 -> 1541 bytes
src/PrimaryQuestionGenerator.java | 63 ++++++++++++++++++---------
src/SeniorQuestionGenerator.class | Bin 1001 -> 1221 bytes
src/SeniorQuestionGenerator.java | 43 ++++++++++++------
8 files changed, 121 insertions(+), 53 deletions(-)
create mode 100644 .idea/codeStyles/codeStyleConfig.xml
create mode 100644 .idea/encodings.xml
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..b9d18bf
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..ff7987a
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/JuniorQuestionGenerator.class b/src/JuniorQuestionGenerator.class
index 754cb5e0b4d849df988fb14f4cdbdc8560895282..a579601f80575a4581be23ad5f8fb27eeae6f386 100644
GIT binary patch
delta 787
zcmX|9O-vI}5dPkFyYF>bv@Tsrft7+FZFi+mpeTP;KoP}*X##0T2*naCAthopTueE5
zFy6>sgkWNb3EuQnqehMo0)v`-tixS%7??(2LSqT
zO+^DbRm2eINC;R0w!j(J(WOE|QlQ(_Jpw6?UiaE5(C6xYHz}=TUTwSIj=+HHJu7fd
zV31>oW0+%vK^ZQVisexTUo1YuAdjyVw&pi9FQb=Zlq0kCsjH?DO=M^|j|+~?T1*XN
z7}qd?iwx3y%Dr8p8ebmlFoc~$7H(r;Q4N#0tYHdQ$ckyWifOvUsZDewnsMgXOsH;d
zdL@51pIptCmXq1?da<-Tmgc
zN_GQU5hk7(B1D=*nuaCW>}*Q)6_b1lSpX+_5-n~7V7u_6hP*#*QH3Ngj4E&8%lULU
zo0D~aHs{xs?4WGQ1#%DiZIhDHiZ9I#Ztmf+!42gJChaPCTG+vYS0WuS#5Q!x2vi|-
z66)-J1yMVw{tK%Hotx=^rPol*%bMLs=s#Ro2F)U7sfAqFLvO@y@Q7?j4uwQ>Ghr>$P14x
zm!Cyq55$I`7h<9o9SFik9r_W%FzRX5VN4Ud*NN8!;&6pnyoD(4p$(g8$3sGFA&zY%
z@C+8-6ZRvz@fkg1_)72iJC%x3iv+|Gk`NrN9Bmw@7)Lw(jP~;f-HiQ0vlJZo4SzGO
Kse=#_PX7f`$%B^w
delta 501
zcmX|;J#W-N5Qd-i*RFj|a174H7w#hmApx5J1`I?bL=;FwiWKQ2qH9o!AR)T6P^6)t
zp@>`{C@7#v3k5EaNJ+uZ;5Seq1sGp}R+^cedH0=pXMg$M^}`>3z8(WNxDyaDA8?j#
zV|oF728M;k4-Mxu=M9U73x*}bvf*M=xunT7x#sfWv)7faR+eK2;k(zQ!3@e=m~o8C9f*pB_t*olMD!Pt#kqg9>iJk`en
zE>_KdK0k{?VM>jdNtE~v=}S)?{r!@~Q%(P@X8O}aSEJ;<=!6zNp=h2KB@shWn@d!X
xutv%QI&3q~6Zxb4f-W!UaVW_*vZ(h0pA(7*=Y*kBofBG0{boznl1|!m{sGj~MYjL|
diff --git a/src/JuniorQuestionGenerator.java b/src/JuniorQuestionGenerator.java
index e18a9c1..88880d8 100644
--- a/src/JuniorQuestionGenerator.java
+++ b/src/JuniorQuestionGenerator.java
@@ -7,27 +7,46 @@ import java.util.Random;
public class JuniorQuestionGenerator implements QuestionGenerator {
@Override
public String generateQuestion(StringBuilder question, Random random) {
- // 确保所有初中题目都包含至少一个平方或开根号的运算符
- int num = random.nextInt(100) + 1;
- boolean isSquare = random.nextBoolean();
-
- if (isSquare) {
- // 生成平方题
- question.append(num).append("^2");
- } else {
- // 生成开根号题,确保是完全平方数
- int sqrtNum = random.nextInt(10) + 1;
- num = sqrtNum * sqrtNum;
- question.append("√").append(num);
+ // 随机生成1-5个操作数
+ int operandCount = random.nextInt(5) + 1;
+ String[] operators = {"+", "-", "*"};
+ String[] chosenOperators = new String[operandCount - 1];
+
+ // 确定包含平方或开根号的操作数位置
+ int specialPosition = random.nextInt(operandCount);
+
+ // 生成所有操作数
+ for (int i = 0; i < operandCount; i++) {
+ if (i == specialPosition) {
+ // 特殊操作数:平方或开根号
+ boolean isSquare = random.nextBoolean();
+ int num = random.nextInt(100) + 1;
+
+ if (isSquare) {
+ // 生成平方题
+ question.append(num).append("^2");
+ } else {
+ // 生成开根号题,确保是完全平方数
+ int sqrtNum = random.nextInt(10) + 1;
+ num = sqrtNum * sqrtNum;
+ question.append("√").append(num);
+ }
+ } else {
+ // 普通操作数
+ int num = random.nextInt(100) + 1;
+ question.append(num);
+ }
+
+ // 添加运算符(除了最后一个操作数)
+ if (i < operandCount - 1) {
+ chosenOperators[i] = operators[random.nextInt(operators.length)];
+ question.append(" " + chosenOperators[i] + " ");
+ }
}
- // 添加一些其他运算符使题目更复杂
- int complexity = random.nextInt(2) + 1;
- for (int i = 0; i < complexity; i++) {
- String[] operators = {"+", "-", "*"};
- String op = operators[random.nextInt(operators.length)];
- int addNum = random.nextInt(10) + 1;
- question.append(" ").append(op).append(" ").append(addNum);
+ // 10%的概率添加外层括号(如果有多个操作数)
+ if (operandCount > 1 && random.nextDouble() < 0.1) {
+ question.insert(0, "(").append(")");
}
question.append(" = ?");
diff --git a/src/PrimaryQuestionGenerator.class b/src/PrimaryQuestionGenerator.class
index cd819b71c0cbf6d9f55a300e303955434eac3542..06444b51618ddca5bd200384a23b67494ca9f11f 100644
GIT binary patch
literal 1541
zcmaJ=-)|IE6#mZc?B2W6Y1s}PV4|NBhh
zgztS`Vp^gsFe7kM;1nS~&b~=VY}nqS?XGy&!n=7a3Z2lf)w^``-yG6w
zgeby5rkf16UiInEHCn-N@$AhpF~{Aon_N&av(Ux=f70PF_VY_2r1;rHSo0{b9OPY^
zHL;G3-T{5b2G0@8c;FN)pTg5D85;QzF{ljqJ}=vdC~ut-_Ykc`b){NU^jNhP)8o}z
zTo=`8CH<2+9ZM?~1E%AtSTvusf{;p%H^nyOWo1$rBE3mxQ*lEmR!YgIl>3YstEOUx
z_y@1Y!t=2<5;yU_f2LSPUllj8`gl7jLnClkd}+u^F4~6LkuG5*46%uc++Fn4?m*Lf
z+vwxV6N<%`_l4V-k?`5Iv4>rkKT6QnqhGeLu8U3Qg0>#sO)FpGP`-`i0Qx`u9LZc%-`mE3Zum9i^nHQilD_4>MuP5s
zfFZVfAfe$1dNG1Nl+cedbbiPNKjD42$|JMNgK~p={|QIk;z{_5vPRjrQ
delta 701
zcmZ`$O>YuW6g_WvGw*c@LdQ;#Duou?LT3=gih`EfiW(9V7n78ri75tBYX~-msw>&(
z+UUf@nyy^fjSF2kMw52cm2UhkE?la2#*dvZnRD+w_uTh!=5hF&y!QFWr#%4kxU6Fo
zM|DhNMqpMVE0L3!ldyDzVEc`{w)k<&UoRz&=_ug14<{sw5+^0*{pyrJN#L}=nWx<+
z5lYJf6@jy~rz=@ucnonO!Z?QocbQG+t5^)H$jUaQb;_0|eb|L%HkZFzIO+wQpEnH?3q&Vzov*QcRuJy&;cD4B8H=W2I0
zZ+1Hjp=^$J)><1IonG60rWD;JCFSlb=>aBjkQ`tz$qt1g-IVYURY{7BqB{2h>>VWx
z2|_I(1>raj6Oxo&2ZyBIS3B1Bpzzh|-=xIFE<(+a!JQ^IRHvyLn$y$_;Z)RwY7Y|X
z9t{*LnxQ5%4{{4*Nt3@qELjpJubQI7caSi|pJvqLc1#bBxK*`142?p6v5lf-ggrzW
zR?@?PhGj&l@FyZc*04@r9NL<1M{P3EsUDSfpbJ!(>?)c|=e~
z40Vj)3JhE&)*&lb$-*vqbD!LKh$DDJMn1;`wvobXvil9Du!{`#F@rA!%#y_Sn*YQK
Zgg{bYLLkMMKw6L-X4(G{Q^7qlzW^MWaFPH3
diff --git a/src/PrimaryQuestionGenerator.java b/src/PrimaryQuestionGenerator.java
index 10887e0..ef1c2e4 100644
--- a/src/PrimaryQuestionGenerator.java
+++ b/src/PrimaryQuestionGenerator.java
@@ -7,32 +7,53 @@ import java.util.Random;
public class PrimaryQuestionGenerator implements QuestionGenerator {
@Override
public String generateQuestion(StringBuilder question, Random random) {
- int num1 = random.nextInt(100) + 1; // 1-100的随机数
- int num2 = random.nextInt(100) + 1;
+ // 随机生成1-5个操作数
+ int operandCount = random.nextInt(5) + 1;
String[] operators = {"+", "-", "*", "/"};
- String op = operators[random.nextInt(operators.length)];
+ int[] operands = new int[operandCount];
+ String[] chosenOperators = new String[operandCount - 1];
- // 确保减法和除法结果为正整数
- if ("-".equals(op) && num1 < num2) {
- int temp = num1;
- num1 = num2;
- num2 = temp;
- } else if ("/".equals(op)) {
+ // 生成第一个操作数
+ operands[0] = random.nextInt(100) + 1; // 1-100的随机数
+ question.append(operands[0]);
+
+ // 生成剩余的操作数和运算符
+ for (int i = 1; i < operandCount; i++) {
+ chosenOperators[i-1] = operators[random.nextInt(operators.length)];
+ operands[i] = random.nextInt(100) + 1;
+
+ // 确保减法结果非负
+ if ("-".equals(chosenOperators[i-1]) && operands[i-1] < operands[i]) {
+ // 如果当前操作数小于下一个操作数,交换它们
+ int temp = operands[i-1];
+ operands[i-1] = operands[i];
+ operands[i] = temp;
+ // 更新已添加到问题中的数值
+ question.setLength(0);
+ question.append(operands[0]);
+ for (int j = 1; j < i; j++) {
+ question.append(" " + chosenOperators[j-1] + " " + operands[j]);
+ }
+ }
// 确保除法结果为整数
- num1 = num2 * (random.nextInt(10) + 1);
+ else if ("/".equals(chosenOperators[i-1])) {
+ // 调整被除数为除数的倍数
+ operands[i-1] = operands[i] * (random.nextInt(10) + 1);
+ // 更新已添加到问题中的数值
+ question.setLength(0);
+ question.append(operands[0]);
+ for (int j = 1; j < i; j++) {
+ question.append(" " + chosenOperators[j-1] + " " + operands[j]);
+ }
+ }
+
+ // 添加运算符和操作数
+ question.append(" " + chosenOperators[i-1] + " " + operands[i]);
}
- // 10%的概率添加括号
- if (random.nextDouble() < 0.1) {
- question.append("(");
- question.append(num1);
- question.append(" ").append(op).append(" ");
- question.append(num2);
- question.append(")");
- } else {
- question.append(num1);
- question.append(" ").append(op).append(" ");
- question.append(num2);
+ // 10%的概率添加外层括号(如果有多个操作数)
+ if (operandCount > 1 && random.nextDouble() < 0.1) {
+ question.insert(0, "(").append(")");
}
question.append(" = ?");
diff --git a/src/SeniorQuestionGenerator.class b/src/SeniorQuestionGenerator.class
index 4b290f3d1426b6cf37f754fbce38393f4841e1dc..a25a976f5292d87e6cda74d3b59e3c5ed0280717 100644
GIT binary patch
delta 755
zcmX|9&rcIU6#k~&?o5|e>e5mdtXBL%%Pv$9i&Oy>6j33@#*lil3L#Ze5~#*t3>On`
z8q&mH@nDDvSM^Y$M&d;e{sG3jC%kyqMEs^CZt}kO&Aj)$H~VHb>?<3cf<8LYG2D;gCYNLXU+;99HPn{)j?WqEFM5!cpz}wK!)Ey?ds==X&dy
z!f}ZKi9v~>%-rX`jRiiIdA4U6)(2iwhg4Ff0(cQM_Hu%ofWtnS5owRGtwK9<7ts
zLCXjP7fNN~^|=LNrC7Exg3}D8G&w_(7Km571MwE}q>WLWwK0ZsHqPUMfRP+X4pr}p
z;p%tscCUa{p1xBVnY(pucAE84=@9|5R9={#uLyLd#;S>czl6Qm$-xM;a7qDso|%~7
zDnT#kLmg`nZ%71o6V3XjB|y$W*Zi0~TYyd{slhxH>35B3KAIM!sM;p?o3anE8U~
z$b8Q56U@klf>|?WCRUd4Bxc4!FEMIvDU?=(wZh8hq$_<_u2ayHQ+{NsUOOB1Ty|-2
zY(gwt!!~C-+2kss|5KzFlMGCqSoc9;f_(bAE`4Bp&k$Rw(&I!56gS8&dcI4?p2E0-Cu=Dka(^_DSp)
X5(fk?<_|7Lx_=|2@9SXw9PR%A{W*Cv
delta 590
zcmZ8dJ5v*36g^+EyZ6hofw-`S6@lObLUuz0ag`|Y>YPz$+=5Bxj$xQ66CEBFHZ=C?
zWQLB0#uf{s@Y_)#^io^@d@)Qzyvq+>jd%)mFg
z5YIg9Lc2M-o1w*2WMw1q#IsKDSo%_SDm9QwIdQ{s^Ko7KI`nm4G8Y!?zN8(vgVga;
zv7YBKp*P=(`gndCxI<}=po_vO$ISE=iI7JE&OHJL6MU30ge4whmB)C%Xp^US#r@u}
o{5@kwxP)Vjk-_@RIX0jLV}i?qalwROQYl{S51#NYrCy_{e=*`$W&i*H
diff --git a/src/SeniorQuestionGenerator.java b/src/SeniorQuestionGenerator.java
index 0444394..28e076a 100644
--- a/src/SeniorQuestionGenerator.java
+++ b/src/SeniorQuestionGenerator.java
@@ -7,20 +7,37 @@ import java.util.Random;
public class SeniorQuestionGenerator implements QuestionGenerator {
@Override
public String generateQuestion(StringBuilder question, Random random) {
- // 确保所有高中题目都包含至少一个sin、cos或tan的运算符
- String[] functions = {"sin(", "cos(", "tan("};
- String func = functions[random.nextInt(functions.length)];
- int angle = random.nextInt(100)+1;
-
- question.append(func).append(angle).append(")");
+ // 随机生成1-5个操作数
+ int operandCount = random.nextInt(5) + 1;
+ String[] operators = {"+", "-", "*", "/"};
+
+ // 确定包含三角函数的操作数位置
+ int trigPosition = random.nextInt(operandCount);
+
+ // 生成所有操作数
+ for (int i = 0; i < operandCount; i++) {
+ if (i == trigPosition) {
+ // 三角函数操作数
+ String[] trigFunctions = {"sin", "cos", "tan"};
+ String function = trigFunctions[random.nextInt(trigFunctions.length)];
+ int num = random.nextInt(100) + 1;
+ question.append(function).append("(").append(num).append(")");
+ } else {
+ // 普通操作数
+ int num = random.nextInt(100) + 1;
+ question.append(num);
+ }
+
+ // 添加运算符(除了最后一个操作数)
+ if (i < operandCount - 1) {
+ String op = operators[random.nextInt(operators.length)];
+ question.append(" " + op + " ");
+ }
+ }
- // 添加一些其他运算符使题目更复杂
- int complexity = random.nextInt(3);
- for (int i = 0; i < complexity; i++) {
- String[] operators = {"+", "-", "*", "/"};
- String op = operators[random.nextInt(operators.length)];
- int num = random.nextInt(10) + 1;
- question.append(" ").append(op).append(" " ).append(num);
+ // 10%的概率添加外层括号(如果有多个操作数)
+ if (operandCount > 1 && random.nextDouble() < 0.1) {
+ question.insert(0, "(").append(")");
}
question.append(" = ?");